SSブログ

bsfilter をデータベースを共有して使ってみる

個人的には、ベイジアンフィルタのデータって個人で持つべきと思っているんですが、共有したいという要望があったのでやってみた必要最低限なメモ。やり方があってるのかどうかわからんですけど。ちなみに、MTA は postfix で。OS は、CentOS 5.3 です。bsfilter は、/usr/local/bin に入れました。まず、useradd なんぞで、bsfilter 実行専用ユーザーを作る。uid は適当です。

# useradd -u 6666 -g mail -d /usr/local/etc/bsfilter -s /sbin/nologin bsfilter

んで、ホームディレクトリ作成。

# mkdir /usr/local/etc/bsfilter
# chown -R bsfilter:mail /usr/local/etc/bsfilter
# chmod -R 2770 /usr/local/etc/bsfilter

su(1) で、bsfilter ユーザーになる。

# su - bsfilter --shell=/bin/bash

/usr/local/etc/bsfilter/bsfilter.conf を作成。中身は、

homedir /usr/local/etc/bsfilter/spamdb

のみ。そして、/usr/local/etc/bsfilter/spamdb を準備。

$ mkdir /usr/local/etc/bsfilter/spamdb
$ chmod -R 2710 /usr/local/etc/bsfilter/spamdb

http://bsfilter.org/ を参考に、こんな感じでデータベースを準備。

$ bsfilter --config-file /usr/local/etc/bsfilter/bsfilter.conf --mbox --add-clean clean_na_yatsura
$ bsfilter --config-file /usr/local/etc/bsfilter/bsfilter.conf --mbox --add-spam spam_na_yatsura
$ bsfilter --config-file /usr/local/etc/bsfilter/bsfilter.conf --update

root に戻って、visudo(8) で、/etc/sudoers を編集。

ALL ALL=(bsfilter) NOPASSWD:/usr/local/bin/bsfilter

という感じの行を追加して、

Defaults requiretty

という行があれば、# つけてコメントするか、削除しておく。んで、こんな感じの /etc/procmailrc を用意する。

PATH=/bin:/usr/bin:/usr/local/bin
LOGFILE=/dev/null

:0 fw
| /usr/bin/sudo -u bsfilter /usr/local/bin/bsfilter --config-file /usr/local/etc/bsfilter/bsfilter.conf --pipe --ignore-header --insert-flag --insert-probability

そして、/etc/postfix/main.cf に、以下のような行を用意。

mailbox_command = /usr/bin/procmail

後は、postfix を reload。

# postfix reload

自分宛にメール送ってみて、

X-Spam-Flag: No
X-Spam-Probability: 0.000000

とか付いてればOK。追加学習は、

# su - bsfilter --shell=/bin/bash

とかした後、http://bsfilter.org/ を参考に、

$ bsfilter --config-file /usr/local/etc/bsfilter/bsfilter.conf --sub-clean --add-spam mail_file

とかする。sudo(8) 使って、bsfilter 呼んでいるあたりが微妙かも。んでも、

引用:bsfilter / bayesian spam filter / ベイジアン スパム フィルタ

~/.procmailrc等から呼び出し、


「等」とか書いてあるし、/etc/procmailrc でもいいのかなと…。
nice!(0)  コメント(1)  トラックバック(0) 
共通テーマ:日記・雑感

nice! 0

コメント 1

*生保単独*

若干本文修正。

・useradd にユーザー名が書いてなかった。
・手順にもよりますが、以下、追加&修正。
# chown -R bsfilter:mail /usr/local/etc/bsfilter
# chmod -R 2770 /usr/local/etc/bsfilter
・/etc/procmailrc の内容を修正。但し、--ignore-header は使い方次第なのでなくても構わない。

by *生保単独* (2010-09-13 13:48) 

コメントを書く

お名前:[必須]
URL:
コメント:
画像認証:
下の画像に表示されている文字を入力してください。

トラックバック 0

驚いたせんとOS ブログトップ

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。