#!/bin/sh set -eu set -o pipefail 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