bogofilter 改良案

これまでprocmailでbogofilter+kakasiを -e(embed)で使っていたが、これだとMIMEに対応できないので、いったんMIMEをデコードした後でbogofilterに通して、formail使ってX-Bogosityヘッダだけ取り出してやれば良いかも? と思い付いたのでメモ。図にするとこんな感じ。

before:
mail -> bogofilter+kakasi -> filtered mail

after:
mail -> nkf -> kakasi -> bogofilter -> formail -> header
mail, header -> formail -> filtered mail

だけどTextなMIMEだけデコードしないといけないからnkfじゃ無理か。ベイジアンフィルタって単語に分ける必要あるんだっけ。文字単位とかじゃだめなのかな。もしn-gramとかの文字単位でよければバイナリも気にせず放りこんでやればウィルスを含むメールを自動で検出したりできるかも?

それとbogofilterの場合分類はSPAM/Non-SPAMの2種類だけど、これを数種類に分類することは不可能なのかな?

バイナリの場合単純にnバイトを単語とみなせばいいんだ。つまりn=3とするとabcdはabc,bcdの2単語ということになる。いや違うな。n以下の長さ全てでa,ab,abc,b,bc,bcdの6単語か。1文字はあまり意味ないからn=2〜5とかにするとどうだろう。