public function inspect(Mzax_Bounce_Message $message) { if ($message->type !== self::REPORT) { return false; } if ($message->getContentType('report-type') !== self::FEEDBACK) { return false; } $part = $message->getMimePart('message/feedback-report'); if (!$part) { return false; } $report = $part->getDecodedHash(); if (!is_array($report)) { return false; } $message->info(Mzax_Bounce::TYPE_ARF, true); $message->info('status', self::STATUS); $message->info('type', Mzax_Bounce::TYPE_ARF); // abuse|froud|virus|other|not-spam if (isset($report['feedback-type'])) { $feedbackType = $report['feedback-type']; $message->info('feedback-type', $feedbackType); } if (isset($report['removal-recipient'])) { $recipient = $this->findEmail($report['removal-recipient']); $message->info('recipient', $recipient); } else { if (isset($report['original-rcpt-to'])) { $recipient = $this->findEmail($report['original-rcpt-to']); $message->info('recipient', $recipient); } } /* * If we still have no recipient, look for our * old orignal message and get it from the To header */ if (!$message->info('recipient')) { // check for embedded rfc822 message if ($rfc822 = $message->getMimePart('message/rfc822')) { $recipient = $this->findEmail($rfc822->getHeader('to')); $message->info('recipient', $recipient); } } return true; }
public function inspect(Mzax_Bounce_Message $message) { if ($message->type !== self::REPORT) { return false; } if ($message->getContentType('report-type') !== self::DELIVERY_STATUS) { return false; } $part = $message->getMimePart('message/delivery-status'); if (!$part) { return false; } $status = $part->getDecodedHash(); if (!is_array($status)) { return false; } $message->info('rfc1892', true); $message->info('type', Mzax_Bounce::TYPE_BOUNCE); // @see https://ohse.de/uwe/rfc/rfc1894.html#2.3.4 if (isset($status['status'])) { if (preg_match(self::STATUS_REGEX, $status['status'], $matches)) { $message->info('status', $matches[1]); } else { $message->info('status', $status['status']); } } else { $message->info('status', self::DEFAULT_STATUS); } // @see https://ohse.de/uwe/rfc/rfc1894.html#2.3.1 if (isset($status['original-recipient'])) { // address-type ; generic-address $recipient = $this->findEmail($status['original-recipient']); $message->info('recipient', $recipient); } else { if (isset($status['final-recipient'])) { // address-type ; generic-address $recipient = $this->findEmail($status['final-recipient']); $message->info('recipient', $recipient); } } // @see https://ohse.de/uwe/rfc/rfc1894.html#2.2.1 if (isset($status['original-envelope-id'])) { $envelopeId = $status['original-envelope-id']; $message->info('envelope_id', $envelopeId); } }
public function inspect(Mzax_Bounce_Message $message) { // Check for Hotmail Abuse Feedback Message if ($recipient = $message->getHeader('X-HmXmrOriginalRecipient')) { $message->info('feedback-type', 'abuse'); $message->info('status', Mzax_Bounce_Detector_Arf::STATUS); $message->info('type', Mzax_Bounce::TYPE_ARF); $message->info('recipient', $recipient, 10); $message->info('hotmail_fbl', true); return; } // Check for Hotmail Abuse Feedback Message in embedded message if ($rfc822 = $message->getMimePart('message/rfc822')) { $hash = $rfc822->getDecodedHash(); if (isset($hash['x-hmxmroriginalrecipient'])) { $recipient = $hash['x-hmxmroriginalrecipient']; $message->info('feedback-type', 'abuse'); $message->info('status', Mzax_Bounce_Detector_Arf::STATUS); $message->info('type', Mzax_Bounce::TYPE_ARF); $message->info('recipient', $recipient, 10); $message->info('hotmail_fbl', $rfc822); } } }