#!/bin/sh FILTER=/usr/bin/bogofilter # Attempt to read from bogofilter configuration. FILTER_DIR=$(cat /etc/bogofilter.cf | sed 's/#.*//g' | grep ^bogofilter_dir | awk -F = '{ print $2 }') # WARNING! The -i is crucial, else you may see # messages truncated at the first period that is alone on a line # (which can happen with several kinds of messages, particularly # quoted-printable) # -G is ignored before Postfix 2.3 and tells it that the message # does not originate on the local system (Gateway submission), # so Postfix avoids some of the local expansions that can leave # misleading traces in headers, such as local address # canonicalizations. POSTFIX="/usr/sbin/sendmail -G -i" # No bogofilter_dir set in /etc/bogofilter.cf; fall back on directory # which persists across reboots. if [ -z "$FILTER_DIR" ]; then FILTER_DIR=/etc/bogofilter export BOGOFILTER_DIR=$FILTER_DIR fi # Exit codes from EX_TEMPFAIL=75 EX_UNAVAILABLE=69 cd $FILTER_DIR || \ { echo $FILTER_DIR does not exist; exit $EX_TEMPFAIL; } # Clean up when done or when aborting. trap "rm -f msg.$$ ; exit $EX_TEMPFAIL" 0 1 2 3 15 # bogofilter -e returns: 0 for OK, nonzero for error rm -f msg.$$ || exit $EX_TEMPFAIL $FILTER -p -e > msg.$$ || exit $EX_TEMPFAIL exec