X-Git-Url: https://git.madduck.net/etc/mailfilter.git/blobdiff_plain/45ff291908a431109c67c04807993f654089e24d..3b6dc7f9e25081b24141834c5db29c54a1b75e5a:/procmail/defines diff --git a/procmail/defines b/procmail/defines index a7acfab..8fe3a44 100644 --- a/procmail/defines +++ b/procmail/defines @@ -23,7 +23,9 @@ LC_CTYPE=de_CH.UTF-8 PROCMAIL="$NICE /usr/bin/procmail -p $PMDIR/procmailrc" FORMAIL="$NICE /usr/bin/formail -f" +GREP="$NICE /bin/grep" EGREP="$NICE /bin/egrep" +FGREP="$NICE /bin/fgrep" SED="$NICE /bin/sed" BIN_DATE="/bin/date" DELIVER="$NICE /usr/lib/dovecot/deliver" @@ -35,6 +37,8 @@ SPAMC="$NICE /usr/bin/spamc --log-to-stderr --no-safe-fallback" #SPAMC="$SPAMASSASSIN" TRAINER="$NICE $MAILFILT/bin/train" +VACATION="$NICE /usr/bin/vacation" + SQLITE="$NICE /usr/bin/sqlite3" BASE=$HOME/.maildir @@ -48,7 +52,7 @@ SPAMCHECK_MAX_MESSAGE_SIZE=512000 # if crm114 is unsure and SA returns a score less-than-or-equal to this, # autotrain crm114 with ham -CRM_UNSURE_SA_AUTOTRAIN_LIMIT_HAM=2.0 +CRM_UNSURE_SA_AUTOTRAIN_LIMIT_HAM=0.0 # if crm114 classifies a message as spam but SA returns a score # less-than-or-equal to this, retrain crm114 CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_HAM=-1.0 @@ -63,27 +67,29 @@ CRM_MISCLASSIFY_SA_AUTOTRAIN_LIMIT_SPAM=11 NL=" " RE_MYDOMAIN="(.+\.)*madduck\.net" -RE_MAILRELAYS="(seamus|clegg)\.madduck\.net" +RE_MAILRELAYS="(seamus|swan|clegg)\.madduck\.net" 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_SPACE*\/$RE_NOT_SPACE.*" +RE_EMAILADDRESS="${RE_NOT_SPACE}+@${RE_NOT_SPACE}+\.[^ >]+" DEJAVU_HEADER=X-Deja-Vu NULL=/dev/null DELAYED_QUEUE=$BASE/.delayed/ -TICKLER_QUEUE=$BASE/.tickler/ +TICKLER_QUEUE=$BASE/.store/ DISCARD=$BASE/.discard/ SPAM=$BASE/.spam/ #DISCARD="'|$DELIVER -m BASE.discard'" DELAY_NEXT_WEEKEND='next sunday 28 hours ago' # fri night, 20:00 DELAY_TONIGHT='tomorrow 00:00 4 hours ago' # tonight at 20:00 +DELAY_AFTERNOON='tomorrow 00:00 7 hours ago' # today at 17:00 -OURDATE="`$BIN_DATE +'%s %Y.%m.%d.%H.%M.%N %a, %d %b %Y %T %z'`" +OURDATE="`$BIN_DATE +'%s %Y%m%d.%H%M.%N %a, %d %b %Y %T %z'`" :0 *$ OURDATE ?? ^\/${RE_NOT_SPACE}+ { OURDATE_TS="$MATCH" } @@ -114,60 +120,70 @@ ID="$LOGNAME@$HOSTNAME" # message-id INCLUDERC=$PMDIR/get-msgid +:0 +*$ ^From:$RE_EXTRACT_HEADER_VALUE +{ FROM="$MATCH" } + +:0 +* FROM ?? ^.+<\/.+@[^>]+ +{ FROMEMAIL="$MATCH" } + +:0 E +* FROM ?? ^.+\(\/.+@[^\)]+ +{ FROMEMAIL="$MATCH" } + +:0 E +*$ FROM ?? ^\/$RE_EMAILADDRESS +{ FROMEMAIL="$MATCH" } + +:0 +* FROMEMAIL ?? ^".+"$ +* FROMEMAIL ?? ^"\/[^"]+ +{ FROMEMAIL="$MATCH" } + # if $SENDER is undefined or not an email address, get it from the message :0 * !SENDER ?? @ -*$ ^Sender:$RE_EXTRACT_HEADER_VALUE -{ SENDER="$MATCH" } +{ + :0 + *$ ^Sender:$RE_EXTRACT_HEADER_VALUE + { SENDER="$MATCH" } + + :0 E + { SENDER="$FROMEMAIL" } +} :0 *$ ^Date:$RE_EXTRACT_HEADER_VALUE { DATE="$MATCH" } -:0 -*$ ^From:$RE_EXTRACT_HEADER_VALUE -{ FROM="$MATCH" } - :0 *$ ^Subject:$RE_EXTRACT_HEADER_VALUE { - SUBJECT=$MATCH - -#TODO -# :0 -# * SUBJECT ?? ()\?=\?(iso-8859-1|utf-8)\?\/..[^\?]* -# { -# :0 -# * MATCH ?? B\?\/[^\?]* -# { BBB=`echo $SUBJECT | mimencode -u | cat -v` } -# -# :0 -# * MATCH ?? Q\?\/[^\?]* -# { QQQ=`echo $SUBJECT | mimencode -u -q | cat -v` } -# -# SUBJECT="$QQQ$BBB" -# } - -SUBJECT="$MATCH" + SUBJECT="$MATCH" + + :0 + * SUBJECT ?? =\?.+\?[QBqb]\?.+\?= + { + SUBJECT="`PERL_UNICODE=S perl -MEncode=decode -e \"print decode(\\\"MIME-Header\\\", \\\"$SUBJECT\\\") . \\\"\n\\\";\"`" + SUBJECT_ENCODED="$MATCH" + } } :0 *$ ^X-Original-To:$RE_EXTRACT_HEADER_VALUE { ORIGINAL_TO="$MATCH" } :0 E -{ LOG="NO ORIGINAL_TO: $MSGID" } +* ^Received: +{ LOGLATER="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" } +*$ ^X-Postponed:$RE_EXTRACT_HEADER_VALUE +{ POSTPONED="$MATCH" } # fix variable values for special cases INCLUDERC=$PMDIR/normalise @@ -229,3 +245,32 @@ RETRAIN # JUSTME # if set, contains reason why justme message was passed JUSTME + +# DISABLE_DELAYS +# if set, disables delaying messages +DISABLE_DELAYS + +:0 +* ? test -e $HOME/procmail.nodelays +{ DISABLE_DELAYS=true } + +# TZ +# used to alter the timezone for delay calculations +#TZ=Pacific/Auckland + +# DELAY +# argument to /bin/date -d to indicate a message delay. This is overridden by +# RELEASE +DELAY + +# RELEASE +# /bin/date time expression indicating the time at which a message is to be +# released. Overrides DELAY. +RELEASE + +# MARK_READ +# when set, causes mails to be marked as read when delivered. Can be +# initialised with DELIVER_READ +MARK_READ=$DELIVER_READ + +# vim:ft=procmail