Feml2: Bayesian Spam Filter

概要: Feml2の目的、特徴

ダウンロード

feml-2.0.1.tar.bz2

インストール、設定

  1. 準備: ruby-2.Xが必要。
  2. 準備: 日本語の単語切り出し (分かち書き) のため、MeCab (和布蕪) が必要。
  3. mecabの辞書はEUC-JPでもよいが、例えばNEologdを取り込んで分析精度を改善しようとするならばUTF-8にする必要がある。
  4. feml2.rb/usr/local/binなど適当なディレクトリーに置く。
  5. 必要に応じ、feml2.rbの先頭部分にあるハッシュAmConfの値を書き換える。
  6. AmConfを直接書き換える代わりに、feml2.rbと同じディレクトリーにfeml_config.rbというファイルを置き、そこに記述してもよい (参考: feml_config.rb.in)。

開発に用いている環境: FreeBSD-10.0、sendmail-8.15.1、ruby-2.2.2、mecab-0.996、mecab-ipadic-2.7.0。

実行 (1): spam判定、隔離

"| exec /usr/local/bin/feml2.rb -u tac || exit 75 ## tac@example.co.jp"

  1. 例のように、feml2.rbの呼び出しを、ホーム・ディレクトリーの.forwardに記述する。-uにはユーザー名を指定する。
  2. .forwardにはコンマ (,) 区切りで複数の呼び出しを記述できるので、procmailなどを並べて呼び出し、転送やバックアップ保存をしてもよい。但し、このprocmailがメールを/var/mail/<user>に出力するようになっていると、feml2.rbが出力したものと重複してしまうことになる。
  3. この段階ではまだspam判定のための学習をしていないので、すべてspamではないと判断される。届いたメールは/var/mail/<user>に追記され、POPで接続するなどの方法で読むことができる。
  4. 届いたメールは${HOME}/Feml2/backup以下にも保存されている。さらに、spamではない (clean) と判定したので、${HOME}/Feml2/clean以下にも保存される。ファイル名から受信日時が分かる。ファイル名末尾の数字はプロセス番号で、1秒以内に2通以上届いても重複しないようにするために付けてある。
  5. ${HOME}/Feml2/conf/feml_store.pstoreというファイルができている。これは字句データベースで、字句ごとの出現数 (clean / spam) を記録する。

実行 (2): 学習

$ feml2.rb --add-spam-sub-clean *.txt

  1. spamがcleanと判定されてしまった場合、--add-spam-sub-cleanオプション付きでfeml2.rbを呼び出し、字句データベースを更新する。
  2. hourly.localに例示したようなスクリプトを、cronにより定期的に起動するようにしておくと便利。${HOME}/Feml2/cleanに保存されているメールのうち、実際にはspamであるものを${HOME}/Feml2/addspamに移動すればよい。あるいは、メール・リーダー上でspamメールをまとめて選択し、Unix mbox形式で${HOME}/Feml2/addspam以下にエクスポートしてもよい (使い始めてしばらくするとこの方法が便利になる)。

定期処理: hourly.local

例として示したhourly.localでは次のような処理をしている。

ホワイト・リスト

例: from_white_list.txt

## from_white_list.txt
/@(ja|us)\.example\.com$/
@example.co.jp
info@japan.example.com

例: received_white_list.txt

## received_white_list.txt
from mail.example.co.jp (localhost [127.0.0.1])
from localhost (localhost)
from localhost (localhost [127.0.0.1])

ブラック・リスト

ログ・ファイル


feml2.rb

spam判定、隔離

feml2.rb [ -f | --spam-filter ] [ -u <user> | --user <user>]

学習

feml2.rb [ -s | --add-spam-sub-clean ] files...

feml2.rb [ -c | --add-clean-sub-spam ] files...

その他

feml2.rb [ -e | --export-token-db ] token_db.txt

feml2.rb [ -i | --import-token-db ] token_db.txt

feml2.rb --reduce-token-db

feml2.rb [ -v | --version ]


履歴


Copyright © 2009, 2015 KOYAMA Hiro <tac@amris.co.jp>

SourceForge.JP