.forward
経由で呼び出す。/var/mail/<user>
に追記する。feml2.rb
を/usr/local/bin
など適当なディレクトリーに置く。feml2.rb
の先頭部分にあるハッシュAmConf
の値を書き換える。
/usr/home/<user>
であれば、おそらくこのままで問題なく動作する。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。
"| exec /usr/local/bin/feml2.rb -u tac || exit 75 ## tac@example.co.jp"
feml2.rb
の呼び出しを、ホーム・ディレクトリーの.forward
に記述する。-u
にはユーザー名を指定する。.forward
にはコンマ (,) 区切りで複数の呼び出しを記述できるので、procmail
などを並べて呼び出し、転送やバックアップ保存をしてもよい。但し、このprocmail
がメールを/var/mail/<user>
に出力するようになっていると、feml2.rb
が出力したものと重複してしまうことになる。/var/mail/<user>
に追記され、POPで接続するなどの方法で読むことができる。${HOME}/Feml2/backup
以下にも保存されている。さらに、spamではない (clean) と判定したので、${HOME}/Feml2/clean
以下にも保存される。ファイル名から受信日時が分かる。ファイル名末尾の数字はプロセス番号で、1秒以内に2通以上届いても重複しないようにするために付けてある。${HOME}/Feml2/conf/feml_store.pstore
というファイルができている。これは字句データベースで、字句ごとの出現数 (clean / spam) を記録する。$ feml2.rb --add-spam-sub-clean *.txt
--add-spam-sub-clean
オプション付きでfeml2.rb
を呼び出し、字句データベースを更新する。hourly.local
に例示したようなスクリプトを、cronにより定期的に起動するようにしておくと便利。${HOME}/Feml2/clean
に保存されているメールのうち、実際にはspamであるものを${HOME}/Feml2/addspam
に移動すればよい。あるいは、メール・リーダー上でspamメールをまとめて選択し、Unix mbox形式で${HOME}/Feml2/addspam
以下にエクスポートしてもよい (使い始めてしばらくするとこの方法が便利になる)。hourly.local
例として示したhourly.local
では次のような処理をしている。
${HOME}/Feml2/conf/from_white_list.txt
、${HOME}/Feml2/conf/ufrom_white_list.txt
にメール・アドレスを記述しておくと、「From:」ヘッダーまたはUnix From行に記述されているメール・アドレスがこれに合致したとき、内容にかかわらずspamではないと判定する。${HOME}/Feml2/conf/received_white_list.txt
のいずれかの行に合致したときも、内容にかかわらずspamではないと判定する。${HOME}/Feml2/conf/subject_white_list.txt
のいずれかの行に合致したときも、内容にかかわらずspamではないと判定する。## from_white_list.txt /@(ja|us)\.example\.com$/ @example.co.jp 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])
/etc/mail/access
を使って特定のアドレスからのメールを遮断する方法もあるが、Feml2のブラック・リストを用いれば、そこに使われている字句を解析して字句データベースを更新できる、という効果がある。${HOME}/Feml2/conf/from_black_list.txt
、${HOME}/Feml/conf/ufrom_black_list.txt
にメール・アドレスを記述しておくと、「From:」ヘッダーまたはUnix From行に記述されているメール・アドレスがこれに合致したとき、内容にかかわらずspamであると判定する。${HOME}/Feml2/conf/received_black_list.txt
のいずれかの行に合致したときも、内容にかかわらずspamであると判定する。${HOME}/Feml2/conf/subject_black_list.txt
のいずれかの行に合致したときも、内容にかかわらずspamであると判定する。${HOME}/Feml2/feml_log.txt
に、判定に到る経過が出力されている。/etc/newsyslog.conf
を使うなどして定期的にファイルを入れ替えるとよい。
/usr/home/tac/Feml2/feml_log.txt tac:user 644 5 * @T00 -
feml2.rb [ -f | --spam-filter ] [ -u <user> | --user <user>]
/var/mail/<user>
に追記する。-f
は省略可。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>