summaryrefslogtreecommitdiffstats
path: root/bin/server/learn_spam
diff options
context:
space:
mode:
Diffstat (limited to 'bin/server/learn_spam')
-rwxr-xr-xbin/server/learn_spam36
1 files changed, 36 insertions, 0 deletions
diff --git a/bin/server/learn_spam b/bin/server/learn_spam
new file mode 100755
index 0000000..ab5603a
--- /dev/null
+++ b/bin/server/learn_spam
@@ -0,0 +1,36 @@
+#!/bin/bash
+
+MAILDIR=~/Maildir
+OPTS="--no-sync"
+SALEARN=/usr/bin/vendor_perl/sa-learn
+
+if [[ "$1" == "-q" ]]; then
+ OPTS="$OPTS"
+ OUTFILE="/dev/null"
+else
+ OPTS="$OPTS --showdots"
+ OUTFILE="/dev/stdout"
+fi
+
+if [[ ! "$1" == "-q" ]]; then
+ echo "$(date): Learning ham..."
+fi
+nice find $MAILDIR -type f | \
+ perl -nl0e'chomp; ($ts) = /(\d{10})/; $now = time; print if m{/(new|cur)/} && !m{/(\.old|\.spam)/} && $ts > $now - 60*60*24*30' | \
+ xargs -n1000 -0 $SALEARN $OPTS --ham > $OUTFILE
+
+if [[ ! "$1" == "-q" ]]; then
+ echo "$(date): Learning spam..."
+fi
+nice find $MAILDIR -type f | \
+ perl -nl0e'chomp; ($ts) = /(\d{10})/; $now = time; print if m{/(new|cur)/} && m{/\.spam/} && $ts > $now - 60*60*24*30' | \
+ xargs -n1000 -0 $SALEARN $OPTS --spam > $OUTFILE
+
+if [[ ! "$1" == "-q" ]]; then
+ echo "$(date): Syncing..."
+fi
+nice $SALEARN --sync > $OUTFILE
+
+if [[ ! "$1" == "-q" ]]; then
+ echo "$(date): Done!"
+fi