X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/ad1d64c3df127f0da629bf66b36696294c11a8cb..29eaf6d1140ab9365c64b7edead45e6ac89eaa0d:/procmail/defines diff --git a/procmail/defines b/procmail/defines index 291bbf2..af431c1 100644 --- a/procmail/defines +++ b/procmail/defines @@ -17,30 +17,33 @@ REPLIES=$MAILFILT/autoreplies LOGFILE=${LOGFILE:-$PMVAR/log} LOGABSTRACT=no -NICE='/usr/bin/nice -20' +LC_CTYPE=de_CH.UTF-8 + +#NICE='/usr/bin/nice -20' PROCMAIL="$NICE /usr/bin/procmail -p $PMDIR/procmailrc" FORMAIL="$NICE /usr/bin/formail -f" EGREP="$NICE /bin/egrep" SED="$NICE /bin/sed" +DELIVER="$NICE /usr/lib/dovecot/deliver" CRM114="$NICE /usr/share/crm114/mailreaver.crm -u $MAILFILT/crm114/" SA_PREFS="$MAILFILT/spamassassin/user_prefs" -SPAMASSASSIN="$NICE /usr/bin/spamassassin -p $SA_PREFS" -#SPAMC="$NICE /usr/bin/spamc -lxu $ID" -SPAMC="$SPAMASSASSIN" -TRAINER="$MAILFILT/bin/train" +SPAMASSASSIN="$NICE /usr/bin/spamassassin --prefs-file=$SA_PREFS" +SPAMC="$NICE /usr/bin/spamc --log-to-stderr --no-safe-fallback" +#SPAMC="$SPAMASSASSIN" +TRAINER="$NICE $MAILFILT/bin/train" -OURDATE=`date -R` -OURDATE_SHORT=`date +%Y.%m.%d.%H.%m.%N` +SQLITE="$NICE /usr/bin/sqlite3" -INBOX=$HOME/.maildir +BASE=$HOME/.maildir -DEFAULT=$INBOX/ +#DEFAULT="|$DELIVER" +DEFAULT=$BASE/ ORGMAIL=$HOME/BOUNCED-MAIL # maximum message size for spam checking -SPAMCHECK_MAX_MESSAGE_SIZE=2500000 +SPAMCHECK_MAX_MESSAGE_SIZE=512000 # if crm114 is unsure and SA returns a score less-than-or-equal to this, # autotrain crm114 with ham @@ -58,15 +61,36 @@ CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_SPAM=11 ### constants used in rules NL=" " -RE_MYDOMAIN="(.+\.)?madduck\.net" +RE_MYDOMAIN="(.+\.)*madduck\.net" RE_MAILRELAYS="(seamus|clegg)\.madduck\.net" -RE_SPACE_NEWLINE="(^|[ ])" +RE_SPACE="[ ]" +RE_NOT_SPACE="[^ ]" +RE_SPACE_NEWLINE="(^|$RE_SPACE)" RE_FIRSTNAME="martin($RE_SPACE_NEWLINE+f(\.?|elix))?" RE_LASTNAME="kraff?t" -RE_EXTRACT_HEADER_VALUE="[ ]*\/[^ ].*" +RE_EXTRACT_HEADER_VALUE="$RE_SPACE*\/$RE_NOT_SPACE.*" + +DEJAVU_HEADER=X-Deja-Vu NULL=/dev/null -DISCARD=$INBOX/.discard/ +DELAYED_QUEUE=$BASE/.delayed/ +TICKLER_QUEUE=$BASE/.tickler/ +DISCARD=$BASE/.discard/ +#DISCARD="'|$DELIVER -m BASE.discard'" + +OURDATE="`date +'%s %Y.%m.%d.%H.%M.%N %a, %d %b %Y %T %z'`" +:0 +*$ OURDATE ?? ^\/${RE_NOT_SPACE}+ +{ OURDATE_TS="$MATCH" } +:0 +*$ OURDATE ?? ^[0-9]+${RE_SPACE}+\/${RE_NOT_SPACE}+ +{ OURDATE_SHORT="$MATCH" } +:0 +*$ OURDATE ?? ^[0-9]+${RE_SPACE}+[0-9.]+${RE_SPACE}+\/${RE_NOT_SPACE}+ +{ OURDATE="$MATCH" } + +DELAY_NEXT_WEEKEND='next monday 54 hours ago' # fri night, 18:00 CET +DELAY_TONIGHT='tomorrow 00:00 6 hours ago' # tonight at 18:00 CET ### variables from the message @@ -106,17 +130,24 @@ INCLUDERC=$PMDIR/get-msgid *$ ^Subject:$RE_EXTRACT_HEADER_VALUE { SUBJECT="$MATCH" } -# TODO: can be removed as soon as albatross is out of the loop -:0 fw -* ^X-Original-To-Saved: \/.* -|$FORMAIL -R X-Original-To-Saved X-Original-To - :0 *$ ^X-Original-To:$RE_EXTRACT_HEADER_VALUE { ORIGINAL_TO="$MATCH" } :0 E { LOG="NO ORIGINAL_TO: $MSGID" } +:0 +*$ ^X-Trained-As:$RE_EXTRACT_HEADER_VALUE +{ TRAINED_AS="$MATCH" } + +:0 +*$ ^X-Tickle-Delivered:$RE_EXTRACT_HEADER_VALUE +{ TICKLE_DELIVERED="$MATCH" } + +:0 +*$ ^X-Delayed:$RE_EXTRACT_HEADER_VALUE +{ DELAYED="$MATCH" } + # fix variable values for special cases INCLUDERC=$PMDIR/normalise @@ -130,11 +161,16 @@ INCLUDERC=$PMDIR/normalise ### run-time variables -# OLD_MESSAGE +# MSG_DEJAVU # a procmail-style flag, which is true if unset and false if set (to !). -# unset by marknew if the message has already been seen by the filter (according +# unset by dejavu if the message has already been seen by the filter (according # to the X-Been-There header). -OLD_MESSAGE=! +MSG_DEJAVU=! + +# DEST +# set this to a folder if the message should be delivered elsewhere than the +# default +DEST # SKIP_SPAMCHECKS # if set, cuases spamchecks to be skipped, value lists reason @@ -168,3 +204,7 @@ SPAM_UNKNOWN # RETRAIN # if set, causes spamfilters to be retrained, according to the variable's value RETRAIN + +# JUSTME +# if set, contains reason why justme message was passed +JUSTME