From d153d16cf318a6b893573d89019d529b11292bad Mon Sep 17 00:00:00 2001
From: Peter Rotich <peter@osticket.com>
Date: Thu, 22 Nov 2012 20:30:46 -0500
Subject: [PATCH] Auto-detect bounced emails & log warnings

---
 api/pipe.php                | 12 ++++++++++--
 include/class.mailfetch.php |  8 +++++++-
 2 files changed, 17 insertions(+), 3 deletions(-)

diff --git a/api/pipe.php b/api/pipe.php
index 851e18f4a..699e74000 100644
--- a/api/pipe.php
+++ b/api/pipe.php
@@ -106,10 +106,18 @@ if($ticket) {
 } elseif(($ticket=Ticket::create($var, $errors, 'email'))) { // create new ticket.
     $msgid=$ticket->getLastMsgId();
 } else { // failure....
+
+    // report success on hard rejection
     if(isset($errors['errno']) && $errors['errno'] == 403)
-        api_exit(EX_SUCCESS);  //report success on hard rejection
+        api_exit(EX_SUCCESS);
 
-    api_exit(EX_DATAERR,'Ticket create Failed '.implode("\n",$errors)."\n\n");
+    // check if it's a bounce!
+    if($var['header'] && TicketFilter::isAutoBounce($var['header'])) {
+        $ost->logWarning('Bounced email', $var['message'], false);
+        api_exit(EX_SUCCESS); 
+    }
+    
+    api_exit(EX_DATAERR, 'Ticket create Failed '.implode("\n",$errors)."\n\n");
 }
 
 //Ticket created...save attachments if enabled.
diff --git a/include/class.mailfetch.php b/include/class.mailfetch.php
index dca6ac3df..fce15f537 100644
--- a/include/class.mailfetch.php
+++ b/include/class.mailfetch.php
@@ -378,7 +378,7 @@ class MailFetcher {
 	    //Is the email address banned?
         if($mailinfo['email'] && TicketFilter::isBanned($mailinfo['email'])) {
 	        //We need to let admin know...
-            $ost->logWarning('Ticket denied', 'Banned email - '.$mailinfo['email']);
+            $ost->logWarning('Ticket denied', 'Banned email - '.$mailinfo['email'], false);
 	        return true; //Report success (moved or delete)
         }
 
@@ -421,6 +421,12 @@ class MailFetcher {
             if(isset($errors['errno']) && $errors['errno'] == 403)
                 return true;
 
+            # check if it's a bounce!
+            if($var['header'] && TicketFilter::isAutoBounce($var['header'])) {
+                $ost->logWarning('Bounced email', $var['message'], false);
+                return true;
+            }
+
             //TODO: Log error..
             return null;
         }
-- 
GitLab