|
@ -0,0 +1,34 @@ |
|
|
|
|
|
#!/bin/sh |
|
|
|
|
|
|
|
|
|
|
|
FILTER=/usr/bin/bogofilter |
|
|
|
|
|
FILTER_DIR=/mnt/sda1/var/spool/bogofilter |
|
|
|
|
|
# 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" |
|
|
|
|
|
export BOGOFILTER_DIR=/var/lib/bogofilter |
|
|
|
|
|
|
|
|
|
|
|
# Exit codes from <sysexits.h> |
|
|
|
|
|
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 <msg.$$ || exit $EX_TEMPFAIL |
|
|
|
|
|
rm -f msg.$$ # safe, we hold the file descriptor |
|
|
|
|
|
exec $POSTFIX "$@" |
|
|
|
|
|
exit $EX_TEMPFAIL |