On 2006-11-03, Jason R. Mastaler <[EMAIL PROTECTED]> wrote:
> Moving code from tmda-rfilter into a module is on the todo list[1]
> anyway, so I'd say definitely, yes.
Well, this is a lot harder than I thought it would be. I can't seem
to get even the simplest function that's in tmda-rfilter moved into
a module (which BTW I called Filter.py). I think I might be doing
something wrong. Haven't given up, yet.
On another note, I did manage to get my postfix filter working.
It's *extremely* simplistic right now. It's a shell script.
My next goal is to translate it to python.
It does much less than I'd hoped that it would do. It only handles
anything listed in a filter as "bounce". I'd really like to figure
out a way to get it to work with "confirm". On the plus side,
it works.
Anyway, here's how you use it.
1) Make sure that you've set "ALLOW_MODE_640 = True" in /etc/tmdarc
2) Make sure that all ~/.tmda/config and ~/.tmda/crypt_key have
their group set to "mail", and have perms 640.
3) Add the following to master.cf:
tmda unix - n n - - spawn
user=mail argv=/bin/bash /usr/local/src/tmda/contrib/tmda-postfix-policy.sh
4) Add the following to main.cf:
smtpd_recipient_restrictions =
permit_mynetworks,
check_policy_service unix:private/tmda
(Alternatively, you could add this to smtpd_data_restrictions or
smtpd_end_of_data_restrictions)
5) Restart postfix
Here's the file:
#!/bin/bash
export PATH=/usr/local/bin:/usr/bin:/bin
TMDABIN=/usr/local/src/tmda/bin
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
/usr/bin/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.
$TMDABIN/tmda-filter -M $recip $sender | grep MATCH | grep -q bounce$
## If they find something in the filters, dispose of the message.
if [ $? = 0 ]; then
/usr/bin/logger -p mail.info -t postfix/tmda "Rejecting email
recieved from $sender to $recip"
echo "action=reject Message rejected by recipient (TMDA)."
echo
else
/usr/bin/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
_________________________________________________
tmda-workers mailing list ([email protected])
http://tmda.net/lists/listinfo/tmda-workers