.forward
経由で呼び出す。/var/mail/<user>
に追記する。feml.rb
を/usr/local/bin
など適当なディレクトリーに置く。feml.rb
の先頭部分にあるハッシュAmConf
の値を書き換える。
/usr/home/<user>
であれば、おそらくこのままで問題なく動作する。開発に用いている環境: FreeBSD-7.1、sendmail-8.14.3、ruby-1.9.1、mecab-0.96、mecab-ruby-0.96、mecab-ipadic-2.7.0、libiconv-1.12。
"| exec /usr/local/bin/feml.rb -u tac || exit 75 ## tac@example.co.jp"
feml.rb
の呼び出しを、ホーム・ディレクトリーの.forward
に記述する。-u
にはユーザー名を指定する。.forward
にはコンマ (,) 区切りで複数の呼び出しを記述できるので、procmail
などを並べて呼び出し、転送やバックアップ保存をしてもよい。但し、このprocmail
がメールを/var/mail/<user>
に出力するようになっていると、feml.rb
が出力したものと重複してしまうことになる。/var/mail/<user>
に追記され、POPで接続するなどの方法で読むことができる。${HOME}/Feml/backup
以下にも保存されている。さらに、spamではない (clean) と判定したので、${HOME}/Feml/clean
以下にも保存される。ファイル名から受信日時が分かる。ファイル名末尾の数字はプロセス番号で、1秒以内に2通以上届いても重複しないようにするために付けてある。${HOME}/Feml/conf/feml_store.pstore
というファイルができている。これは字句データベースで、字句ごとのspam確率を記録する。$ feml.rb --add-spam-sub-clean *.txt
--add-spam-sub-clean
オプション付きでfeml.rb
を呼び出し、字句データベースを更新する。hourly.local
に例示したようなスクリプトを、cronにより定期的に起動するようにしておくと便利。${HOME}/Feml/clean
に保存されているメールのうち、実際にはspamであるものを${HOME}/Feml/addspam
に移動すればよい。あるいは、メール・リーダー上でspamメールをまとめて選択し、Unix mbox形式で${HOME}/Feml/addspam
以下にエクスポートしてもよい (使い始めてしばらくするとこの方法が便利になる)。hourly.local
例として示したhourly.local
では次のような処理をしている。
${HOME}/Feml/conf/from_white_list.txt
、${HOME}/Feml/conf/ufrom_white_list.txt
にメール・アドレスを記述しておくと、「From:」ヘッダーまたはUnix From行に記述されているメール・アドレスがこれに合致したとき、内容にかかわらずspamではないと判定する。${HOME}/Feml/conf/received_white_list.txt
のいずれかの行に合致したときも、内容にかかわらずspamではないと判定する。## from_white_list.txt @example\.co\.jp$ @(ja|us)\.example\.com$ ^info@japan\.example\.com$
## received_white_list.txt ^from mail\.example\.co\.jp \(localhost \[127\.0\.0\.1\]\) ^from localhost \(localhost\) ^from localhost \(localhost \[127\.0\.0\.1\]\)
${HOME}/Feml/feml_log.txt
に、判定に到る経過が出力されている。/etc/newsyslog.conf
を使うなどして定期的にファイルを入れ替えるとよい。
/usr/home/tac/Feml/feml_log.txt tac:user 644 5 * @T00 -
feml.rb [ -f | --spam-filter ] [ -u <user> | --user <user>]
/var/mail/<user>
に追記する。-f
は省略可。feml.rb [ -s | --add-spam-sub-clean ] files...
feml.rb [ -c | --add-clean-sub-spam ] files...
feml.rb [ -e | --export-token-db ] > token_db.txt
feml.rb [ -i | --import-token-db ] < token_db.txt
feml.rb [ -v | --version ]
Copyright © 2009 KOYAMA Hiro <tac@amris.co.jp>