12345678910111213141516171819202122232425262728293031323334353637383940414243 |
- #!/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 <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
|