2010年08月06日
Tweet
Plesk には spamassassin が有料で利用できるようになっています。しかし今回は半ば言いがかりを解決するためにフィルタを導入することや、フィルタが必要な人がごく一部にとどまることなどから、有料版の導入は見送ることにしました。
また、個別にフィルタしたいという要望は意外に少ないので、spamassassin のように個別にフィルタできる場合には、学習が下手な人の場合には「フィルタの効果が無い」という印象になってしまうことはとても怖い事だと思います。
ということで、日本語にも対応している bsfilter を導入することにしました。
bsfilter は最初の頃のバージョンと最新バージョンではだいぶオプションが増えているようで、オプションスイッチに違いがあるようなので注意が必要です。
以下のサイトが大変参考になりました。
日本語Spamはやっぱbsfilter!:Kozupon.com
bsfilter ドキュメント
■インストール環境
Plesk 9.5.2
ruby 1.8.5-5.el5_4.8
bsfilter bsfilter-1.0.17.rc4(2009-05-01リリース)※ REVISION 1.85.2.8
※ ruby はPleskのコンポーネントとして最初からインストールしてありました。
追加のパッケージなどは必要無く、bsfilter を動作させることができました。
■インストール
まずplesk にはすでに ruby がインストールされていました。そのため動作環境を整えるための操作は必要ありませんでした。あとは参考サイトにあるとおりダウンロード・解凍・移動でOKです。
※spam を食わせる所ぐらいまではやってもいいかもしれません。
■設定
さて、僕の場合一人の管理者でたくさんのユーザーのフィルタを管理します。そのため個別のフィルタでは正直問題があります。そこで学習させるDBは共通とし、全員で同じDBを共有することにしました。スパムに判定されたメールも基本的にはサーバーで削除せずにユーザーに配送します。
また、pleskを利用していることもあり、うまく連携できるのかも心配でしたし、実際結構ハマりました。
・まずは .qmail だけで何とかしようとおもいましたが・・・失敗
<<うまく行かなかった方法>> を書いておきます。
plesk では .qmail が最初から利用できるようになっています。一方でネットでしらべると、procmail を利用するパターンばかりが出てきます。
そこで、 .qmail に "| /usr/sbin/bsfilter --insert-flag" と記載したのですが、判定はされますがヘッダに追加されませんでした。この問題についてはずっと悩んでいたのですが、いまいちよく分からなかったので結局あきらめてしまいました。
・そこで procmail を利用するようにしました。
別記事で書きたいと思います。
・個別学習ではなく、全体(共通)学習するように設定しました。
全体で学習させるには、homedir を指定し、すべてのユーザーで同じ homedir を指定します。
なおpleskの場合 popuser というのがあるのですが、デフォルトだとpopuserが利用されるのでしょうか?よくわからないので、強制的に指定しました。
# procmailrc に以下の通り記載
| /usr/sbin/bsfilter --homedir /var/qmail/bsfilter/ --pipe
ここで homedir 内に bsfilter.confが用意してあり以下のように記載してあります。
---------------------
insert-flag
insert-probability
auto-update
mark-spam-subject
spam-subject-prefix [**]
---------------------
homedir を指定することによって、すべてのユーザーで同じDBを利用することができます。
また pipe は procmail で指定するようにし、コマンドラインから学習するときに pipe が有効にならないようにしています。
※ここで /var/qmail/bsfilter フォルダ及びその中のファイルは、すべて popuserで書き込みができるようにしておきます。この指定をちゃんと行わないときにはコマンドラインで判定はできるけど、DBが更新されない、フラグが正しく付与されない、判定が常に0などのトラブルが起きます。
相対的にはき出してくれるログが少ないので、組み込んでからのトラブルシューティングは難しいので気をつけてください。
また、個別にフィルタしたいという要望は意外に少ないので、spamassassin のように個別にフィルタできる場合には、学習が下手な人の場合には「フィルタの効果が無い」という印象になってしまうことはとても怖い事だと思います。
ということで、日本語にも対応している bsfilter を導入することにしました。
bsfilter は最初の頃のバージョンと最新バージョンではだいぶオプションが増えているようで、オプションスイッチに違いがあるようなので注意が必要です。
以下のサイトが大変参考になりました。
日本語Spamはやっぱbsfilter!:Kozupon.com
bsfilter ドキュメント
■インストール環境
Plesk 9.5.2
ruby 1.8.5-5.el5_4.8
bsfilter bsfilter-1.0.17.rc4(2009-05-01リリース)※ REVISION 1.85.2.8
※ ruby はPleskのコンポーネントとして最初からインストールしてありました。
追加のパッケージなどは必要無く、bsfilter を動作させることができました。
■インストール
まずplesk にはすでに ruby がインストールされていました。そのため動作環境を整えるための操作は必要ありませんでした。あとは参考サイトにあるとおりダウンロード・解凍・移動でOKです。
※spam を食わせる所ぐらいまではやってもいいかもしれません。
■設定
さて、僕の場合一人の管理者でたくさんのユーザーのフィルタを管理します。そのため個別のフィルタでは正直問題があります。そこで学習させるDBは共通とし、全員で同じDBを共有することにしました。スパムに判定されたメールも基本的にはサーバーで削除せずにユーザーに配送します。
また、pleskを利用していることもあり、うまく連携できるのかも心配でしたし、実際結構ハマりました。
・まずは .qmail だけで何とかしようとおもいましたが・・・失敗
<<うまく行かなかった方法>> を書いておきます。
plesk では .qmail が最初から利用できるようになっています。一方でネットでしらべると、procmail を利用するパターンばかりが出てきます。
そこで、 .qmail に "| /usr/sbin/bsfilter --insert-flag" と記載したのですが、判定はされますがヘッダに追加されませんでした。この問題についてはずっと悩んでいたのですが、いまいちよく分からなかったので結局あきらめてしまいました。
・そこで procmail を利用するようにしました。
別記事で書きたいと思います。
・個別学習ではなく、全体(共通)学習するように設定しました。
全体で学習させるには、homedir を指定し、すべてのユーザーで同じ homedir を指定します。
なおpleskの場合 popuser というのがあるのですが、デフォルトだとpopuserが利用されるのでしょうか?よくわからないので、強制的に指定しました。
# procmailrc に以下の通り記載
| /usr/sbin/bsfilter --homedir /var/qmail/bsfilter/ --pipe
ここで homedir 内に bsfilter.confが用意してあり以下のように記載してあります。
---------------------
insert-flag
insert-probability
auto-update
mark-spam-subject
spam-subject-prefix [**]
---------------------
homedir を指定することによって、すべてのユーザーで同じDBを利用することができます。
また pipe は procmail で指定するようにし、コマンドラインから学習するときに pipe が有効にならないようにしています。
※ここで /var/qmail/bsfilter フォルダ及びその中のファイルは、すべて popuserで書き込みができるようにしておきます。この指定をちゃんと行わないときにはコマンドラインで判定はできるけど、DBが更新されない、フラグが正しく付与されない、判定が常に0などのトラブルが起きます。
相対的にはき出してくれるログが少ないので、組み込んでからのトラブルシューティングは難しいので気をつけてください。