#!/bin/sh # Exit codes EX_TEMPFAIL=75 EX_UNAVAILABLE=69 # Tools DELIVER="/usr/lib/dovecot/deliver" SPAMC="/usr/bin/spamc" log_and_quit() { /usr/bin/logger -s -p mail.warning -t deliver "$*" exit $EX_TEMPFAIL } # Simple checks [ -x $DELIVER ] || log_and_quit "Missing binary: $DELIVER" # # If spamassassin client is available, and spamassassin requested # pipe mail through it # if [ -x $SPAMC -a -d $HOME/.spamassassin ] ; then umask 077 OUTPUT="`mktemp /tmp/mailfilter.XXXXXXXXXX`" if [ "$?" != 0 ]; then log_and_quit "Unable to create temporary file." fi # Clean up when done or when aborting. trap "rm -f $OUTPUT" EXIT SIGTERM # calls spamc $SPAMC > $OUTPUT if [ "$?" != 0 ]; then log_and_quit "Temporary SpamAssassin failure (spamc return $return)" fi $DELIVER < $OUTPUT # # If spamassassin client is not available, deliver directly # else $DELIVER fi exit $?