* @copyright 2004-2007 Alexandros Vellis * @package plugins * @subpackage avelsieve */ /** * Rule type: #10; Description: generic SPAM-rule, with SPAM-score, * whitelist and RBLs defined in the configuration file. * * The rule that will be produced (in $out) will be something like: * *
* if allof( anyof(header :contains "X-Spam-Rule" "Open.Relay.Database" ,
* header :contains "X-Spam-Rule" "Spamhaus.Block.List"
* ),
* header :value "gt" :comparator "i;ascii-numeric" "80" ) {
*
* fileinto "INBOX.Junk";
* discard;
* }
*
*
* Or, if a Whitelist is specified:
*
*
* if allof( anyof(header :contains "X-Spam-Rule" "Open.Relay.Database" ,
* header :contains "X-Spam-Rule" "Spamhaus.Block.List"
* ),
* header :value "gt" :comparator "i;ascii-numeric" "80" ,
* not anyof(header :contains "From" "Important Person",
* header :contains "From" "Foo Person"
* )
* ) {
*
* fileinto "INBOX.Junk";
* discard;
* }
*
*/
function avelsieve_buildrule_10($rule) {
global $avelsieve_rules_settings;
$spamrule_score_default = $avelsieve_rules_settings[10]['spamrule_score_default'];
$spamrule_score_header = $avelsieve_rules_settings[10]['spamrule_score_header'];
$spamrule_tests = $avelsieve_rules_settings[10]['spamrule_tests'];
$spamrule_tests_header = $avelsieve_rules_settings[10]['spamrule_tests_header'];
$spamrule_action_default = $avelsieve_rules_settings[10]['spamrule_action_default'];
$out = '';
$text = '';
$terse = '';
$spamrule_advanced = false;
if(isset($rule['advanced'])) {
$spamrule_advanced = true;
}
if(isset($rule['score'])) {
$sc = $rule['score'];
} else {
$sc = $spamrule_score_default;
}
if(isset($rule['tests'])) {
$te = $rule['tests'];
} else {
$te = array_keys($spamrule_tests);
}
if(isset($rule['action'])) {
$ac = $rule['action'];
} else {
$ac = $spamrule_action_default;
}
$out .= 'if allof( ';
$text .= _("All messages considered as SPAM (unsolicited commercial messages)");
$terse .= _("SPAM");
if(sizeof($te) > 1) {
$out .= ' anyof( ';
for($i=0; $i