######################## #postfix-filter.sh v0.2# ######################## INSPECT_DIR=/var/spool/filter SENDMAIL="/usr/sbin/sendmail -i" ANOMY=/usr/share/sanitizer/ SANITIZER=/usr/bin/sanitizer ANOMY_CONF=/etc/sanitizer.cfg SPAMASSASSIN=/usr/bin/spamc TMPROOT="/tmp/" STRING="[VIRUS]" DATE="$(date +%Y%m%d-%H%M%N)" ANOMY_LOG=$TMPROOT/eml-$DATE.log export ANOMY # Exit codes from EX_TEMPFAIL=75 EX_UNAVAILABLE=69 cd $INSPECT_DIR || { echo $INSPECT_DIR does not exist; exit $EX_TEMPFAIL; } # Clean up when done or when aborting. trap "rm -f out.$$" 0 1 2 3 15 #cat | $SANITIZER $ANOMY_CONF 'feat_log_stderr = 1' 2>$ANOMY_LOG \ cat | $SANITIZER $ANOMY_CONF 'feat_log_stderr = 1' 2>$ANOMY_LOG | $SPAMASSASSIN \ > out.$$ || { echo Message content rejected; exit $EX_UNAVAILABLE; } grep -i -e "Enforced policy: save" -e "Enforced policy: drop" $ANOMY_LOG if [ $? = "0" ]; then VAR=$(formail -x"Subject:" out.$$) cat out.$$ | formail -I"Subject: $STRING$VAR" -I"X-Found-Virus: Yes" \ | $SENDMAIL "$@" else cat out.$$ | $SPAMASSASSIN | $SENDMAIL "$@" $SPAMASSASSIN < out.$$ | $SENDMAIL "$@" fi; rm -f $ANOMY_LOG; exit $?