MailmanにSpamOracle

を仕掛けました。某メーリングリストに毎日百件ぐらい来るspamを手動でmoderateするのが面倒になってきたので(当たり前)。

後のために詳しく:

  • /etc/mail/aliasesの
myml: "|/usr/local/mailman/mail/mailman post myml"

みたいな行をコメントアウトして

myml: "|/usr/bin/procmail /home/users/myname/.procmailrc-myml"

みたくする。

  • procmailrcは
:0fw
| /usr/local/bin/spamoracle -f /home/users/myname/.spamoracle-myml.db mark
:0
| /usr/local/mailman/mail/mailman post myml

みたいな感じ。ownerとgroupはちゃんとrootとmailなどにする。

  • mailmanのprivacy optionsで"X-Spam: yes"ならdiscardするように設定。

以下は毎日:

  • mailmanのwebインターフェースのpending requestsで
javascript:var el=document.forms[0].elements;for (var i=0; i<el.length;i++) if (el[i].type=='checkbox' && (el[i].name=="discardalldefersp" || el[i].name.substring(0,15)=="senderpreserve-")) void(el[i].checked=true);

みたいなjavascriptを、あらかじめブックマークしておいて実行

  • cronで
#!/bin/sh
cd /usr/local/mailman/spam/
FILES=`ls /usr/local/mailman/spam/`
if [ X"$FILES" = X ]; then exit 0; fi
/bin/cp /home/users/myname/.spamoracle-myml.db /home/users/myname/tmp/
/usr/local/bin/spamoracle -f /home/users/myname/tmp/.spamoracle-myml.db add -spam *.msg
rm -f *.msg
chown root /home/users/myname/tmp/.spamoracle-myml.db
chgrp mail /home/users/myname/tmp/.spamoracle-myml.db
chmod 640 /home/users/myname/tmp/.spamoracle-myml.db
mv -f /home/users/myname/tmp/.spamoracle-myml.db /home/users/myml/

みたいなスクリプトを実行