(#1568355).
- Added PHP pspell extension support to squirrelspell plugin.
- Add CEST and MEST (non-standard) timezone codes for +0200.
+ - Add support for SpamAssassin's X-Spam-Status header (#1589520).
Version 1.5.1 (branched on 2006-02-12)
--------------------------------------
* @var mixed
*/
var $mlist = array();
+ /**
+ * SpamAssassin 'x-spam-status' header
+ * @var mixed
+ */
+ var $x_spam_status = array();
/**
* Extra header
* only needed for constructing headers in delivery class
$value = $this->stripComments($value);
$this->mlist('id', $value);
break;
+ case 'x-spam-status':
+ $this->x_spam_status = $this->parseSpamStatus($value);
+ break;
default:
break;
}
$this->mlist[$field] = $res_a;
}
+ /**
+ * Parses the X-Spam-Status header
+ * @param string $value
+ */
+ function parseSpamStatus($value) {
+ // Header value looks like this:
+ // No, score=1.5 required=5.0 tests=MSGID_FROM_MTA_ID,NO_REAL_NAME,UPPERCASE_25_50 autolearn=disabled version=3.1.0-gr0
+
+ $spam_status = array();
+
+ if (preg_match ('/^(No|Yes),\s+score=(-?\d+\.\d+)\s+required=(-?\d+\.\d+)\s+tests=(.*?)\s+autolearn=(.*?)\s+version=(.+?)$/', $value, $matches)) {
+ // full header
+ $spam_status['bad_format'] = 0;
+ $spam_status['value'] = $matches[0];
+ // is_spam
+ if (isset($matches[1])
+ && strtolower($matches[1]) == 'yes') {
+ $spam_status['is_spam'] = true;
+ } else {
+ $spam_status['is_spam'] = false;
+ }
+
+ // score
+ $spam_status['score'] = $matches[2];
+
+ // required
+ $spam_status['required'] = $matches[3];
+
+ // tests
+ $tests = array();
+ $tests = explode(',', $matches[4]);
+ foreach ($tests as $test) {
+ $spam_status['tests'][] = trim($test);
+ }
+
+ // autolearn
+ $spam_status['autolearn'] = $matches[5];
+
+ // version
+ $spam_status['version'] = $matches[6];
+ } else {
+ $spam_status['bad_format'] = 1;
+ $spam_status['value'] = $value;
+ }
+ return $spam_status;
+ }
+
/**
* function to get the address strings out of the header.
* example1: header->getAddr_s('to').