diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php
index 0c24fa72cfa1ee11b27a16c25f908692b2b8d2b8..82991a012b6cd4ff3a010b56e3cf9e8970a367bf 100644
--- a/include/class.mailfetch.php
+++ b/include/class.mailfetch.php
@@ -290,10 +290,20 @@ class MailFetcher {
         if($headerinfo->cc)
             $tolist['cc'] = $headerinfo->cc;
 
+        //Add delivered-to address to list.
+        if (stripos($header['header'], 'delivered-to:') !==false
+                && ($dt = Mail_Parse::findHeaderEntry($header['header'], 'delivered-to'))) {
+            if (($delivered_to = Mail_Parse::parseAddressList($dt)))
+                $tolist['delivered-to'] = $delivered_to;
+        }
+
         $header['recipients'] = array();
         foreach($tolist as $source => $list) {
             foreach($list as $addr) {
-                if(!($emailId=Email::getIdByEmail(strtolower($addr->mailbox).'@'.$addr->host))) {
+                if (!($emailId=Email::getIdByEmail(strtolower($addr->mailbox).'@'.$addr->host))) {
+                    //Skip virtual Delivered-To addresses
+                    if ($source == 'delivered-to') continue;
+
                     $header['recipients'][] = array(
                             'source' => "Email ($source)",
                             'name' => $this->mime_decode(@$addr->personal),
@@ -304,6 +314,16 @@ class MailFetcher {
             }
         }
 
+        //See if any of the recipients is a delivered to address
+        if ($tolist['delivered-to']) {
+            foreach ($tolist['delivered-to'] as $addr) {
+                foreach ($header['recipients'] as $i => $r) {
+                    if (strcasecmp($r['email'], $addr->mailbox.'@'.$addr->host) === 0)
+                        $header['recipients'][$i]['source'] = 'delivered-to';
+                }
+            }
+        }
+
         //BCCed?
         if(!$header['emailId']) {
             if ($headerinfo->bcc) {