X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/2e7884b9fa8f9c3961a4acb15d58e6ec534ecd5a..ce01c73dbc58af7f829bbed24b3547e7ff7588e4:/procmail/spamfilter diff --git a/procmail/spamfilter b/procmail/spamfilter index 9e6d787..95a0cbc 100755 --- a/procmail/spamfilter +++ b/procmail/spamfilter @@ -23,29 +23,34 @@ PMDIR=${PMDIR:-$HOME/.etc/mailfilter/procmail} # Note: add E flag to next recipe when uncommenting #:0 #* SPAMTRAPPED ?? . -#{ +#{ # LOG="spamfilter: skipping checks for spamtrapped message$NL" # :0 fw # |$FORMAIL -I"X-Spam: spamtrapped" #} # check whether this message is being reinjected -TRAINED_AS :0 -*$ $REPROC_MESSAGE -* ^X-Trained-As: \/(h|sp)am +*$ $MSG_DEJAVU { - LOG="spamfilter: skipping already trained $MATCH$NL" :0 - * MATCH ?? spam - { IS_SPAM=already-trained } + * ^X-Trained-As: \/(h|sp)am + { + LOG="spamfilter: skipping already trained $MATCH$NL" + :0 + * MATCH ?? spam + { IS_SPAM=already-trained } + } + + :0 E + { LOG="spamfilter: skipping reinjected message$NL" } } # let earlier parts of the mailfilter cause bypassing the checks :0 E * SKIP_SPAMCHECKS ?? . -{ - LOG="spamfilter: skipping checks as requested: $SKIP_SPAMCHECKS$NL" +{ + LOG="spamfilter: skipping checks as requested: $SKIP_SPAMCHECKS$NL" :0 fw |$FORMAIL -I"X-Spam: unknown (skip requested)" SPAM_UNKNOWN=skip-requested @@ -60,6 +65,7 @@ TRAINED_AS :0 fw |$FORMAIL -I"X-Spam: unknown (check skipped)" SPAM_UNKNOWN=skip-match + SKIP_SPAMCHECKS=match } # sanity check on message size @@ -239,7 +245,7 @@ TRAINED_AS :0 E * CRM_SPAM ?? SPAM * SA_SPAM ?? Yes - { + { IS_SPAM=sa+crm :0 fw |$FORMAIL -I"X-Spam: yes (crm114:$CRM_SCORE SA:$SA_SCORE)" @@ -252,14 +258,15 @@ TRAINED_AS # schedule spamtrapped ham for retraining as spam :0 * SPAMTRAPPED ?? . +* ! SKIP_SPAMCHECKS ?? . * ! IS_SPAM ?? . -{ +{ LOG="spamfilter: found spamtrapped ham, retraining...$NL" :0 fw |$FORMAIL -I"X-Spam: spamtrapped ham" IS_SPAM=spamtrapped-ham RETRAIN=spam + SPAM_UNSURE } -INCLUDERC=$PMDIR/handlespam #VERBOSE=no