]>
git.madduck.net Git - etc/mailfilter.git/blobdiff - procmail/spamfilter
madduck's git repository
Every one of the projects in this repository is available at the canonical
URL git://git.madduck.net/madduck/pub/<projectpath> — see
each project's metadata for the exact URL.
All patches and comments are welcome. Please squash your changes to logical
commits before using git-format-patch and git-send-email to
patches@ git. madduck. net .
If you'd read over the Git project's submission guidelines and adhered to them,
I'd be especially grateful.
SSH access, as well as push access can be individually
arranged .
If you use my repositories frequently, consider adding the following
snippet to ~/.gitconfig and using the third clone URL listed for each
project:
[url "git://git.madduck.net/madduck/"]
insteadOf = madduck:
# Note: add E flag to next recipe when uncommenting
#:0
#* SPAMTRAPPED ?? .
# 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"
#}
# 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
-*$ $REPROC_MESSAGE
-* ^X-Trained-As: \/(h|sp)am
- LOG="spamfilter: skipping already trained $MATCH$NL"
- * MATCH ?? spam
- { IS_SPAM=already-trained }
+ * TRAINED_AS ?? .
+ {
+ LOG="spamfilter: skipping already trained $TRAINED_AS$NL"
+ :0
+ * TRAINED_AS ?? spam
+ { IS_SPAM=already-trained }
+ }
+
+ :0 E
+ { LOG="spamfilter: skipping resubmitted message$NL" }
+}
+
+# do not run spamfilters if the message destination is already set
+:0 E
+* DEST ?? .
+{
+ LOG="spamfilter: message already routed to '$DEST'$NL"
+ SPAM_UNKNOWN=already-destined
}
# let earlier parts of the mailfilter cause bypassing the checks
:0 E
* SKIP_SPAMCHECKS ?? .
}
# 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
:0 fw
|$FORMAIL -I"X-Spam: unknown (skip requested)"
SPAM_UNKNOWN=skip-requested
:0 fw
|$FORMAIL -I"X-Spam: unknown (check skipped)"
SPAM_UNKNOWN=skip-match
:0 fw
|$FORMAIL -I"X-Spam: unknown (check skipped)"
SPAM_UNKNOWN=skip-match
}
# sanity check on message size
}
# sanity check on message size
# now run the spamfilters
:0 E
{
# now run the spamfilters
:0 E
{
+ INCLUDERC=$PMDIR/spamtraps
+ INCLUDERC=$PMDIR/spammers
INCLUDERC=$PMDIR/pre-spam-cleanup
# crm114
INCLUDERC=$PMDIR/pre-spam-cleanup
# crm114
+ #TODO: somehow filter out headers we added
:0 E
* CRM_SPAM ?? SPAM
* SA_SPAM ?? Yes
: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)"
IS_SPAM=sa+crm
:0 fw
|$FORMAIL -I"X-Spam: yes (crm114:$CRM_SCORE SA:$SA_SCORE)"
# schedule spamtrapped ham for retraining as spam
:0
* SPAMTRAPPED ?? .
# schedule spamtrapped ham for retraining as spam
:0
* SPAMTRAPPED ?? .
+* ! SKIP_SPAMCHECKS ?? .
LOG="spamfilter: found spamtrapped ham, retraining...$NL"
:0 fw
|$FORMAIL -I"X-Spam: spamtrapped ham"
IS_SPAM=spamtrapped-ham
RETRAIN=spam
LOG="spamfilter: found spamtrapped ham, retraining...$NL"
:0 fw
|$FORMAIL -I"X-Spam: spamtrapped ham"
IS_SPAM=spamtrapped-ham
RETRAIN=spam
-INCLUDERC=$PMDIR/handlespam