openwrt-packages/mail/bogofilter/files/postfix-bogofilter

44 lines
1.3 KiB
Bash
Executable File

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