#!/bin/bash export PATH=/usr/local/src/tmda/bin:/usr/local/bin:/usr/bin:/bin # Unset the following if you have the logger program available and you want # log output to syslog #LOGGER=/usr/bin/logger check() { ## determine which user's TMDA config will apply USER=`echo $recip | cut -f1 -d@ | cut -f1 -d-` export HOME=`grep $USER /etc/passwd | cut -f6 -d:` ## Check to see if user has a ~/.tmda/config if [ ! -s $HOME/.tmda/config ] && [ -r $HOME/.tmda/config ] && \ [ -r $HOME/.tmda/crypt_key ]; then [ -n "$LOGGER" ] && $LOGGER -p mail.info -t postfix/tmda \ "Permitting email received for non-TMDA user $USER" echo action=permit echo fi ## Check if sender & recip match anything in the incoming filter ## files. tmda-filter -M $recip $sender | grep MATCH | grep -q bounce$ ## If they find something in the filters, dispose of the message. if [ $? = 0 ]; then [ -n "$LOGGER" ] && $LOGGER -p mail.info -t postfix/tmda \ "Rejecting email recieved from $sender to $recip" echo "action=reject Message rejected by recipient (TMDA)." echo else [ -n "$LOGGER" ] && $LOGGER -p mail.info -t postfix/tmda \ "Permitting email recieved from $sender to $recip" echo action=permit echo fi } ## Extract sender & recipient addresses while IFS='=' read var val; do case "x$var" in "xrecipient") recip="$val";; "xsender") sender="$val";; "x") if [ -z $sender ]; then echo action=permit echo else check fi;; *) ;; esac done