From: martin f. krafft Date: Wed, 21 Nov 2007 23:22:41 +0000 (+0100) Subject: Merge branch 'master' of ssh://git.madduck.net/~/git/pub/etc/mailfilter X-Git-Url: https://git.madduck.net/etc/mailfilter.git/commitdiff_plain/45ff291908a431109c67c04807993f654089e24d?hp=23f3aaa4478aab4cc239c756274a54727ccaf6e0 Merge branch 'master' of ssh://git.madduck.net/~/git/pub/etc/mailfilter --- diff --git a/bin/retrain b/bin/retrain index b1ccca1..784f17e 100755 --- a/bin/retrain +++ b/bin/retrain @@ -10,18 +10,22 @@ PAUSETIME=10 HAM=0 SPAM=0 -MAILDIR= +maildir= +files= for i in "$@"; do case "$i" in --ham) HAM=1;; --spam) SPAM=1;; *) - if [ -n "$MAILDIR" ]; then - echo "E: Maildir already specified: $i" >&2 - exit 1 + if [ -f "$i" ] && [ -r "$i" ]; then + files="$files $i" elif [ -d "$i"/cur ] && [ -d "$i"/new ] && [ -d "$i"/tmp ]; then - MAILDIR="$i" + if [ -n "$maildir" ]; then + echo "E: Maildir already specified: $i" >&2 + exit 1 + fi + maildir="$i" else echo "E: unknown argument: $i" >&2 exit 255 @@ -44,14 +48,18 @@ case "$HAM/$SPAM" in 1/0) ARG=--ham;; esac -LOCKFILE="$MAILDIR/.retrain.lock" -trap "rm -f $LOCKFILE" 1 2 3 4 5 6 7 8 10 11 12 13 14 15 -if ! lockfile -0 -r0 -l 3600 "$LOCKFILE" 2>/dev/null; then - echo "E: another retrain process is already running over that Maildir." >&2 - exit 1 +if [ -n "$maildir" ]; then + LOCKFILE="$maildir/.retrain.lock" + trap "rm -f $LOCKFILE" 1 2 3 4 5 6 7 8 10 11 12 13 14 15 + if ! lockfile -0 -r0 -l 3600 "$LOCKFILE" 2>/dev/null; then + echo "E: another retrain process is already running over that Maildir." >&2 + exit 1 + fi + + files="$files $(find $MAILDIR/cur $MAILDIR/new -type f)" fi -find $MAILDIR/cur $MAILDIR/new -type f | while read msg; do +for msg in $files; do $NICE ${0%/*}/train $ARG "$msg" | $RESUBMIT || ret=$? case "${ret:-0}" in 0|75) :;; @@ -64,7 +72,9 @@ find $MAILDIR/cur $MAILDIR/new -type f | while read msg; do sleep $PAUSETIME done -rm -f "$LOCKFILE" -trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15 +if [ -n "${LOCKFILE:-}" ]; then + rm -f "$LOCKFILE" + trap - 1 2 3 4 5 6 7 8 10 11 12 13 14 15 +fi exit 0 diff --git a/config/justme-address-exceptions b/config/justme-address-exceptions index d025d47..fe1cb8c 100644 --- a/config/justme-address-exceptions +++ b/config/justme-address-exceptions @@ -8,6 +8,7 @@ ^(community|discuss)=opensource\.mit\.edu@mass\.madduck\.net$ ^debian\.ch=fortytwo\.ch@mass\.madduck\.net$ ^crm114-discuss=lists\.sourceforge\.net@mass\.madduck\.net$ +^libkdtree-devel=lists\.alioth\.debian\.org@mass\.madduck\.net$ ^logcheck-devel=lists\.alioth\.debian\.org@mass\.madduck\.net$ ^pkg-mdadm-devel=lists\.alioth\.debian\.org@mass\.madduck\.net$ ^debconf-(team|press)=lists\.debconf\.org@mass\.madduck\.net$ diff --git a/config/skip-spamchecks b/config/skip-spamchecks index 0e4b46d..4ebe980 100644 --- a/config/skip-spamchecks +++ b/config/skip-spamchecks @@ -9,6 +9,7 @@ ^To:.*\ ^To:.*\ ^To:.*\ +^To:.*\ ^To:.*\ ^To:.*\ ^To:.*\ @@ -22,6 +23,7 @@ ^To:.*\ ^To:.*\ ^To:.*\ +^To:.*\ ^To:.*\ ^From:.*\ @@ -29,3 +31,4 @@ ^From:.*\ ^From:.*\ ^From:.*\<(leader|secretary)@debian\.org\> +^X-Original-To: \<[^[:space:]]+@r2e.madduck.net$ diff --git a/config/spamtraps b/config/spamtraps index 6466d2c..c9c5f40 100644 --- a/config/spamtraps +++ b/config/spamtraps @@ -6,7 +6,7 @@ ^(webmaster|info|sales)@madduck\.(ch|net|eu)$ ^(webmaster|info|sales)@martin-krafft\.(de|com|net|eu|ch)$ ^(webmaster|info|sales)@pantsfullofunix\.net$ -^(webmaster|sales)@debian-?(book|system)\.info$ +^(contact|webmaster|sales)@debian-?(book|system)\.info$ ^3dpostfix\.org@mass\.madduck\.net$ ^adultfriendfinder\.com@pobox\.madduck\.net$ ^alt\.cellular\.nokia@usenet\.madduck\.net$ @@ -51,8 +51,6 @@ ^mass\+snns@madduck\.net$ ^mass\+zope-users@madduck\.net$ ^metrodate\.com@pobox\.madduck\.net$ -^moveon\.org@pobox\.madduck\.net$ -^opengroup\.org@pobox\.madduck\.net$ ^sales@sudetia\.de$ ^someone_else@pantsfullofunix\.net$ ^superbookdeals\.com@pobox\.madduck\.net$ diff --git a/crm114/.gitignore b/crm114/.gitignore deleted file mode 100644 index b3a5267..0000000 --- a/crm114/.gitignore +++ /dev/null @@ -1 +0,0 @@ -*.css diff --git a/crm114/nonspam.css b/crm114/nonspam.css new file mode 120000 index 0000000..ab4d1b9 --- /dev/null +++ b/crm114/nonspam.css @@ -0,0 +1 @@ +../../../.var/crm114/nonspam.css \ No newline at end of file diff --git a/crm114/spam.css b/crm114/spam.css new file mode 120000 index 0000000..4b422a8 --- /dev/null +++ b/crm114/spam.css @@ -0,0 +1 @@ +../../../.var/crm114/spam.css \ No newline at end of file diff --git a/procmail/delay-delivery b/procmail/delay-delivery index c1ca0c0..3817715 100644 --- a/procmail/delay-delivery +++ b/procmail/delay-delivery @@ -1,6 +1,3 @@ -# create table messages (msgid text unique not null, filename text -# primary key not null unique, release_ts integer not null); - #TODO: create config/delay-(disabled|tonight|weekend) :0 @@ -28,19 +25,11 @@ LOG="delay: delay delivery of $MSGID until $RELEASE_TIME$NL" - DELAYED_QUEUE_DB=$PMVAR/delayed-queue.sqlite - DO_QUERY="$SQLITE $DELAYED_QUEUE_DB" - - DATA="$MSGID" - INCLUDERC=$PMDIR/sql-escape - - Q="insert into messages values - ($DATA, '\\'\$DESTFILE\\'', $RELEASE_TS)" - TRAP="$TRAP; $DO_QUERY '$Q'" - :0 fw |$FORMAIL -I "X-Delayed: $RELEASE_TS ($RELEASE_TIME)" + INCLUDERC=$PMDIR/record-delayed-mail + :0 $DELAYED_QUEUE } diff --git a/procmail/deliver b/procmail/deliver index 4417af6..ca6bef4 100644 --- a/procmail/deliver +++ b/procmail/deliver @@ -17,8 +17,11 @@ :0 E { DEST=".$DEST" } -TRAP="$TRAP; echo \"delivered: \$DESTFILE\" >> '$THISLOGFILE'" - -LOG="deliver: delivering message $MSGID to $DEST$NL" :0 -$BASE/$DEST +{ + LOG="deliver: delivering message $MSGID to $DEST$NL" + TRAP="$TRAP; echo \"delivered: \$DESTFILE\" >> '$THISLOGFILE'" + + :0 + $BASE/$DEST +} diff --git a/procmail/logging b/procmail/logging index a606b2a..3695b71 100644 --- a/procmail/logging +++ b/procmail/logging @@ -21,7 +21,9 @@ original-to: $ORIGINAL_TO subject: $SUBJECT$NL" TRAP="DESTFILE=\"\${LASTFOLDER#$BASE/}\"; - echo >> '$THISLOGFILE'; - egrep -v '^XX(procmail:)?[[:space:]\"]' '$THISLOGFILE' >> $MASTERLOGFILE" + /usr/bin/lockfile -4 -r50 -l180 $PMVAR/lock; + trap \"echo >> '$THISLOGFILE'; + /bin/cat '$THISLOGFILE' >> $MASTERLOGFILE; + /bin/rm -f $PMVAR/lock\" 0" #VERBOSE=yes diff --git a/procmail/msgid-index b/procmail/msgid-index index 67606fa..102dacc 100644 --- a/procmail/msgid-index +++ b/procmail/msgid-index @@ -1,5 +1,5 @@ # create table messages (sender text not null, recipient text not null, -# subject text not null, msgid text unique not null, filename text primary key +# subject text not null, msgid text not null, filename text primary key # not null unique, timestamp integer, dest text not null); # # create trigger insert_messages_timestamp after insert on messages begin @@ -14,8 +14,10 @@ DATA="$FROM,$NL$ORIGINAL_TO,$NL$SUBJECT,$NL$MSGID" INCLUDERC=$PMDIR/sql-escape QUERY="insert into messages (sender, recipient, subject, msgid, filename, dest) values ( - $DATA, '\\'$THISLOGFILE_REL\\'', '\\'\$DESTFILE\\'')" -TRAP="$TRAP; $DO_QUERY '$QUERY'" + $DATA, '\\'$THISLOGFILE_REL\\'', '\\'\$DESTFILE\\''); + select * from messages where filename = '\\'$THISLOGFILE_REL\\''" +TRAP="$TRAP; case \"$($DO_QUERY '$QUERY')\" in '') + echo 'msgid-index: failed to insert reference into database';; esac" QUERY DATA diff --git a/procmail/record-delayed-mail b/procmail/record-delayed-mail new file mode 100644 index 0000000..72ff6b8 --- /dev/null +++ b/procmail/record-delayed-mail @@ -0,0 +1,19 @@ +# create table messages (msgid text unique not null, filename text +# primary key not null unique, release_ts integer not null); + +DELAYED_QUEUE_DB=$PMVAR/delayed-queue.sqlite + +DO_QUERY="$SQLITE $DELAYED_QUEUE_DB" + +DATA="$MSGID" +INCLUDERC=$PMDIR/sql-escape + +QUERY="insert into messages values ($DATA, '\\'\$DESTFILE\\'', $RELEASE_TS); + select * from messages where msgid = $DATA" +TRAP="$TRAP; case \"$($DO_QUERY '$QUERY')\" in '') + echo 'delay: failed to insert reference into database';; esac" + +QUERY +DATA +DO_QUERY +DELAYED_QUEUE_DB