X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/c04de83de0bf141a8bdfa44b60866dfd50a1e0a6..deeeefd3b8577afc88abb98f2fdb795172bb05ae:/procmail/spamfilter diff --git a/procmail/spamfilter b/procmail/spamfilter index c960e79..b0d2793 100755 --- a/procmail/spamfilter +++ b/procmail/spamfilter @@ -23,29 +23,50 @@ 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 +# check whether this message is being resubmitted :0 *$ $MSG_DEJAVU -* ^X-Trained-As: \/(h|sp)am { - LOG="spamfilter: skipping already trained $MATCH$NL" :0 - * MATCH ?? spam - { IS_SPAM=already-trained } + * TRAINED_AS ?? . + { + LOG="spamfilter: skipping already trained $TRAINED_AS$NL" + :0 fw + |$FORMAIL -I"X-Spam: $TRAINED_AS (already trained)" + :0 + * TRAINED_AS ?? spam + { IS_SPAM=already-trained } + } + + :0 E + { + LOG="spamfilter: skipping resubmitted message$NL" + :0 fw + |$FORMAIL -I"X-Spam: unknown (resubmitted)" + } +} + +# do not run spamfilters if the message destination is already set +:0 E +* DEST ?? . +{ + LOG="spamfilter: message already routed to '$DEST'$NL" + :0 fw + |$FORMAIL -I"X-Spam: unknown (already routed)" + SPAM_UNKNOWN=already-destined } # 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 @@ -76,6 +97,8 @@ TRAINED_AS # now run the spamfilters :0 E { + INCLUDERC=$PMDIR/spamtraps + INCLUDERC=$PMDIR/spammers INCLUDERC=$PMDIR/pre-spam-cleanup # crm114 @@ -84,6 +107,7 @@ TRAINED_AS :0 * !SKIP_CRM ?? . { + #TODO: somehow filter out headers we added :0 fw |$CRM114 @@ -240,7 +264,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)" @@ -255,12 +279,13 @@ TRAINED_AS * 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 } #VERBOSE=no