diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php
index 9f0ae3b1e951069005e2f34ae3b8a00ffb319681..7fee6868a50a70cb1681f05ae8e2c7604510234f 100644
--- a/include/class.mailfetch.php
+++ b/include/class.mailfetch.php
@@ -426,11 +426,10 @@ class MailFetcher {
 
         if (($thread = ThreadEntry::lookupByEmailHeaders($vars))
                 && ($message = $thread->postEmail($vars))) {
-            if ($message === true)
+            if (!$message instanceof ThreadEntry)
                 // Email has been processed previously
-                return true;
-            elseif ($message)
-                $ticket = $message->getTicket();
+                return $message;
+            $ticket = $message->getTicket();
         } elseif (($ticket=Ticket::create($vars, $errors, 'Email'))) {
             $message = $ticket->getLastMessage();
         } else {
diff --git a/include/class.thread.php b/include/class.thread.php
index d0260be905d6b1715fe10eceb5b7fcece5be7fc7..c31a1915165bfcc2ffc983da3c91083587a7f324 100644
--- a/include/class.thread.php
+++ b/include/class.thread.php
@@ -519,6 +519,7 @@ Class ThreadEntry {
 
         $vars = array(
             'mid' =>    $mailinfo['mid'],
+            'header' => $mailinfo['header'],
             'ticketId' => $ticket->getId(),
             'poster' => $mailinfo['name'],
             'origin' => 'Email',
@@ -543,6 +544,10 @@ Class ThreadEntry {
             $vars['note'] = $body;
             return $ticket->postNote($vars, $errors, $poster);
         }
+        elseif (Email::lookupByEmail($mailinfo['email'])) {
+            // Don't process the email -- it came FROM this system
+            return true;
+        }
         // TODO: Consider security constraints
         else {
             $vars['message'] = sprintf("Received From: %s\n\n%s",