procmail whitelist - better way to do this?
Michael A. Peters
mpeters at mac.com
Thu Apr 7 08:02:34 UTC 2005
Trying to automate the updating of my whitelist on my imap server
without accidentally whitelisting a blacklisted individual who happens
to be in my address book.
I'm doing this with a nightly cron script scheduled to run on my
machine with my primary usage e-mail client, by having it send an e-
mail to the imap server.
Here is the script I will run from cron on the machine with my mail
client:
---------
#!/bin/sh
export TERM=Linux
cd /tmp
ADDRESS="$HOME/AddressBook.vcf"
MESSAGE="`mktemp whitemail.XXXX`"
echo "STARTWHITE" > ${MESSAGE}
cat ${ADDRESS} |grep INTERNET |cut -d":" -f2 >> ${MESSAGE}
mail -s "WHITELIST" mpeters at utility.mpeters.local < ${MESSAGE}
rm -f ${MESSAGE}
----------
Here is the procmail recipe on my account at utility
----------
:0:
* ^Subject.*WHITELIST
* ^From.*mpeters at devel.mpeters.local
| cat > $HOME/whitelist.in && $HOME/bin/whitelist.sh
----------
here is the ~/bin/whitelist.sh script
----------
#!/bin/sh
[ -f $HOME/whitelist.in ] || exit 1
[ -f $HOME/.spamassassin/user_prefs ] || exit 1
LN=`grep -n "STARTWHITE" $HOME/whitelist.in |cut -d":" -f1` || exit 1
LENGTH=`wc -l $HOME/whitelist.in |cut -d" " -f1`
TAIL=`echo "${LENGTH} - ${LN}" |bc`
tail -${TAIL} $HOME/whitelist.in |grep -v "^$" |sort |uniq >
~/.whitelist
for a in `cat ~/.whitelist`; do
if [ `grep -c "_from ${a}" $HOME/.spamassassin/user_prefs` -eq
0 ]; then
echo "whitelist_from ${a}" >> $HOME/.spamassassin/
user_prefs
fi
done
-----------
Is there a "cleaner" way to accomplish the same thing?
--
Michael A. Peters
http://mpeters.us/
More information about the fedora-list
mailing list