diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php index b0befdf88a..c326822935 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/MailClient.php @@ -156,6 +156,7 @@ private function getEnvelopeOrHeadersRequestString() // SPAM \MailSo\Mime\Enumerations\Header::X_SPAM_STATUS, \MailSo\Mime\Enumerations\Header::X_SPAMD_RESULT, + \MailSo\Mime\Enumerations\Header::X_BOGOSITY ), true); // // return \MailSo\Imap\Enumerations\FetchType::ENVELOPE; diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php index e227532261..a3c232b01d 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mail/Message.php @@ -532,15 +532,21 @@ function ($link) { ); } - $spam = $oHeaders->ValueByName(\MailSo\Mime\Enumerations\Header::X_SPAMD_RESULT); - if (\preg_match('/\\[([\\d\\.-]+)\\s*\\/\\s*([\\d\\.]+)\\];/', $spam, $match)) { - if ($threshold = \floatval($match[2])) { - $this->iSpamScore = \max(0, \min(100, 100 * \floatval($match[1]) / $threshold)); - $this->sSpamResult = "{$match[1]} / {$match[2]}"; + if ($spam = $oHeaders->ValueByName(\MailSo\Mime\Enumerations\Header::X_SPAMD_RESULT)) { + if (\preg_match('/\\[([\\d\\.-]+)\\s*\\/\\s*([\\d\\.]+)\\];/', $spam, $match)) { + if ($threshold = \floatval($match[2])) { + $this->iSpamScore = \max(0, \min(100, 100 * \floatval($match[1]) / $threshold)); + $this->sSpamResult = "{$match[1]} / {$match[2]}"; + } } $this->bIsSpam = false !== \stripos($this->sSubject, '*** SPAM ***'); - } else { - $spam = $oHeaders->ValueByName(\MailSo\Mime\Enumerations\Header::X_SPAM_STATUS); + } else if ($spam = $oHeaders->ValueByName(\MailSo\Mime\Enumerations\Header::X_BOGOSITY)) { + $this->sSpamResult = $spam; + $this->bIsSpam = !!\preg_match('/yes|spam/', $spam); + if (\preg_match('/spamicity=([\\d\\.]+)/', $spam, $spamicity)) { + $this->iSpamScore = \max(0, \min(100, \floatval($spamicity[1]))); + } + } else if ($spam = $oHeaders->ValueByName(\MailSo\Mime\Enumerations\Header::X_SPAM_STATUS)) { if (\preg_match('/(?:hits|score)=([\\d\\.-]+)/', $spam, $value) && \preg_match('/required=([\\d\\.-]+)/', $spam, $required)) { if ($threshold = \floatval($required[1])) { diff --git a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/Header.php b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/Header.php index c198ab0831..deb090b8d1 100644 --- a/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/Header.php +++ b/snappymail/v/0.0.0/app/libraries/MailSo/Mime/Enumerations/Header.php @@ -61,6 +61,8 @@ abstract class Header // Rspamd const X_SPAMD_RESULT = 'X-Spamd-Result'; // default: False [7.13 / 9.00]; const X_SPAMD_BAR = 'X-Spamd-Bar'; // +++++++ + // Bogofilter + const X_BOGOSITY = 'X-Bogosity'; // Unknown const X_SPAM_CATEGORY = 'X-Spam-Category'; // SPAM|LEGIT const X_SPAM_SCORE = 'X-Spam-Score'; // 0