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