・4月の頭から spam を貯めてたところ、そろそろ 6000 通くらい貯ったので、メールを読み書きしている Plamo-3.1 ベースのマシンに bogofilter を導入してみた。

bogofilter 自体は http://bogofilter.sourceforge.net/ あたりからダウンロード。
bogofilter が GSL(GNU Science Library)を必要とするようなので、GNU のサイトから gsl-1.4.tar.gz をダウンロードして configure & install.

さて、bogofilter を、、と思って configure すると、Berkeley DB のヘッダとライブラリのバージョンが違う、旨のエラーに。あれれ、、と思って /usr/include を見ると、db.h はシンボリックリンクで db3/db.h を指しているのに、/usr/lib/libdb.so は libdb-4.0.so を指している模様。なぜこうなったんだろう、と首をひねりつつ、d1/bsd_db4.tgz のヘッダー部分を取り出して /usr/include/db.h を置き換え。そう言えば、Plamo-3.x だと、berkeley-db3 がa1/complibs.tgz に入ってたから、それがシンボリックリンクを作ってしまうと後からインストールしたパッケージがおかしくなる気がする。

db.h を置き換えると configure も通ったので bogofilter をビルドしてインストール。
bogofilter はベイズ理論に基づいて spam と非 spam(ham と言うらしい)を区別するから、ある程度まとまった量の spam メールが必要になるので spam を捨てずに貯めてたんだよなぁ。。

さっそく ~/Mail/Spam に行って、bogofilter のデータベースに spam に使われている単語を登録。ただ、bogofilter は単語の区切りに空白を必要とするようなので日本語の spam はそのままでは扱えないため、一度 kakasi を通して単語を切り出す処理が必要になるらしい。そのため、一つシェルスクリプトを作ってみた。

 #!/bin/sh
 nkf -m -e $* | kakasi -w | bogofilter -sv

上記フィルタを実行可能にしておいて、~/Mail/Spam で 

 find . -exec ~/bogofilter-spam.sh {} \; 

を実行すると bogofilter が ~/.bogofilter/wordlist.db を作り、そこに spam に使われている単語を登録した模様。

この状態で使えるのかな、と思ってたんだけど、実際に spam や ham を bogofilter -Iv で判定させてみると、どれも spamicity=0.52 になって区別が付かない模様。あれれ、、と思って spam でないメールを同じようなフィルター経由でデータベースに登録してやったら、無事 spam なメールと spam でないメールの bogocity に差がついて、spam と ham が区別できるようになりました。

 kojima@celeron[~/Mail]% bogofilter -vI newspam/30
 X-Bogosity: Yes, tests=bogofilter, spamicity=1.000000, version=0.17.5
 kojima@celeron[~/Mail]% bogofilter -vI inbox/30097
 X-Bogosity: No, tests=bogofilter, spamicity=0.500736, version=0.17.5

当然と言えば当然なんだけど、spam に出てくる単語だけではなく、ham に出てくる単語もデータベースに記録して、新しく届いたメールの単語が spam に使われているものか ham に使われているものかをチェックして spamicity を計算するみたい > bogofilter

この後、fetchmail + procmail が bogofilter を起動するように設定する作業が必要だったんだけど、テキストの量がかなり多くなったので、続きは明日にでも :-)

-しかし、4 月の頭(といっても一番古いので 4/5 だった)から溜め始めて、15日ほどで6000通溜ったってことは、一日400通くらい来ているのか、、面倒で手を付けてなかったけど、メールサーバレベルでの対策もちゃんとやらないといけないなぁ。。 -- [[kojima]] SIZE(10){2004-04-22 (木) 20:35:19}
-db.h の問題はVersionによっても違うのでしょうか? (^_^;) http://www.linet.gr.jp/ML/plamo/200404/msg00059.htmlで既出ですが,ちょっと違う? -- [[加藤泰文]] SIZE(10){2004-04-23 (金) 11:08:09}
-ウチのマシンは Plamo-3.1 のころから適宜手動でパッケージをアップデートしていたので、いつの間にか /usr/include/db.h がシンボリックリンクで /usr/include/db3/db.h を指していて、db-4.0.14 なヘッダーファイルは存在していませんでした。/usr/lib/libdb4.so とかは存在するので、なぜこうなったのかはよく分からないのだけど(苦笑) -- [[kojima]] SIZE(10){2004-04-23 (金) 16:46:30}
-昨日の昼過ぎに bogofilter を設置してから、今までに届いた spam が120通くらいなので、400通と数字があわないなぁ、、と思って調べたら、spamを溜めだしてから、一度 +trash にあった spam を +Spam なフォルダに移したことを思い出しました。だから、1 ヶ月で6000通ということはなくて、一日100通くらいみたい。まぁ、それでも十分多い気はするが、、、(涙) -- [[kojima]] SIZE(10){2004-04-23 (金) 16:51:23}
#comment

トップ   編集 差分 バックアップ 添付 複製 名前変更 リロード   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS