・ついでだから忘れないうちに続きを書いておこう :-)

従来、メールの読み書きは POP3 なメールサーバから mew で直接やりとりしていたのだけど、途中で bogofilter を経由させることを考えると mew でやりとりするよりも fetchmail で取りこんだメールを procmail に食わせて、その時点で bogofilter をかけるようにするのが見通しが良さそう、ということであちこちの設定を変更。

まず .mew.el で POP サーバを指定しているあたりをコメントアウト。 つぎに、~/.fetchmailrc でメールサーバやアカウントの情報を登録。

defaults proto pop3 mda "/usr/bin/procmail"
poll XXX.XXX.jp user "kojima" password "hogehoge" 

/.fetchmailrc で mda /usr/bin/procmail を指定していると、fetchmail は取りこんで きたメールを mda で指定したプログラム(procmail)に投げる処理をする(通常は mda として sendmail なり postfix なりを指定して、ローカルに再配送させる)。

procmail では、届いたメールのそれぞれに対して bogofilter を実行し、結果によって spam か ham かを区別するように ~/.procmailrc を設定

PATH=/bin:/usr/bin:/usr/local/bin
MAILDIR=$HOME/Mail
DEFAULT=$MAILDIR/inbox/.
LOGFILE=$MAILDIR/procmail.log
LOCKFILE=$HOME/.lockmail
:0 HB
* ? nkf -m -e | kakasi -w | bogofilter
newspam/.
:0:
inbox/.

この設定で、mime デコード + EUC 化して(nkf -m -e)、単語間に空白を入れた(kakasi -w)メールを bogofilter に判断させ、spam と判断されたものは ~/Mail/newspam ディレクトリに、ham と判断されたものは ~/Mail/inbox に送られることになる。

メールを読む時(MUA)は mew のままで、inc すると inbox をそのまま更新して、新しくメールが落ちてきていたらそのまま表示してくれる。

気が向いた時に mew で g して +newspam を指定すると、spam と判断されたメールを一覧することができ、誤って判断されているメールがあれば適宜救助する。

これで基本的なところはできたけど、どうせだから fetchmail を定期的に実行しようと、crontab -e で cron に登録。

0-59/10 * * * * /usr/bin/fetchmail -s

これで 10 分に一度 fetchmail が起動され、メールサーバからメールを取ってきて、

/Mail/newspam か ~/Mail/inbox かに分類してくれる。

とりあえずこれで様子を見ているけど、まぁまぁうまく分類してくれているみたい。 まだ半日くらいしか試してないけど、 50通くらい newspam に落ちていて、spam が ham に分類された例が1例あった程度だから、そこそこの確度じゃないかな?ある程度 newspam やら inbox が溜ったら、再度 bogofilter のデータベースに登録してやれば判定精度は上がりそうだし、しばらくはこれで運用してみる予定。

なお、これらの設定をするのに、ネット上の各種情報を参考にしました。一々参照したサイトは上げませんが、google で bogofilter について日本語で解説しているページが参考になりました。あらためて各ページの著者に御礼申し上げます (_ _)

しかし、このあたりもイタチごっこになっているのか。。-- kojima 2004-04-22 (木) 22:46:32



トップ   編集 凍結 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS
Last-modified: 2021-12-17 (金) 16:35:41