SpamAssassin? + bsfilter + Postfix
前提条件
- Debian sarge
- spamc,bsfilterは、nobodyにより実行されるようにする。
- kakasi-dicがインストールされていること
/usr/local/bin/spamfilter.shの作成
- 内容は以下のとおり
#!/bin/sh
/usr/bin/bsfilter -a --config-file /etc/bsfilter.conf | /usr/bin/spamc -f | /usr/sbin/sendmail -f "$@"
exit $?
- このファイルをnobodyから実行できるようにする。
# chown nobody.nogroup /usr/local/bin/spamfilter.sh
# chmod 744 /usr/local/bin/spamfilter.sh
bsfilterの設定ファイルを作成
- /etc/bsfilter.confを作成
homedir /home/bsfilter
jtokenizer kakasi
pipe
insert-flag
insert-probability
bsfilterの処理に必要なディレクトリの作成
# mkdir /home/bsfilter
# chown nobody.nogroup /home/bsfilter
SpamAssassin?の内部処理に必要なディレクトリの作成
- spamcを実行するユーザ(nobody)のホームディレクトリ(デフォルトでは/home)に.spamassassinというディレクトリを作成する必要あり。(chroot環境下でspamdが動作している場合は、spamdの
# mkdir /home/.spamassassin
# chown nobody.nogroup /home/.spamassassin
spamdがコンピュータ起動時に立ち上がるように設定する
- /etc/defaults/spamassassinのENABLEDを1にする。
ENABLED=1
/etc/postfix/master.cfの変更
- smtpd(inet)の個所を変更し、spamfilterの行を追加する。
smtp inet n - n - - smtpd -o content_filter=spamfilter:
spamfilter unix - n n - - pipe
flags=Rq user=nobody argv=/usr/local/bin/spamfilter.sh -f ${sender} -- ${recipient}
bsfilterに学習させる
- spamメールに対して、以下の処理をかける。
$ BSFILTERHOME=/home/bsfilter bsfilter --add-spam /dir/to/spammail/*
- spam扱いしないメールに対しては、以下の処理をおこなう。
$ BSFILTERHOME=/home/bsfilter bsfilter --add-clean /dir/to/cleanmail/*