折角学習させたのに、一向にベイジアンフィルタが有効になってないので、なんでだ?ということで少し調べたら、どうやら spamd/spamc のセットで動かしてたかららしい。
spamd を root 権限で動かしたくなかったので、専用のユーザーアカウントを作成して、さらに別ポートにて(デフォルトは 783だが、1024以下は一般ユーザーは使えない)起動しておいた。普段メールは vpopmail が振り分けをするので、全員同じ場所の定義ファイルを参照することにしておいた。つまり /home/vpopmail/.spamassassin というディレクトリの中にベイジアンフィルタ用のデータベースも格納されている。このとき vpopmail はそれはそれでまた別のユーザーアカウントで起動していて、どうやら spamd がそこにあるデータベースを参照できないらしい(そりゃそうだ)。
メールを受信しベイジアンフィルタ用データベースの更新は vpopmail がするので問題ないんだが、逆に使う場合は spamd が参照できるようにしておかないと駄目らしい。マニュアルを読むと spamd でベイジアンフィルタを使う場合ということで別途注意書がされてあった。
ということで、指示通り、まず /etc/mail/spamassassin の local.cf を書き換え。'bayes_path' というのを追加。今回 /var/spool/bayes というディレクトリを作成したので、そのパスを指定したら何故かちゃんと動かない。sa_learn で -D オプション付けてダンプした結果、/var/spool/bayes/bayes って書かないと駄目みたいなので、下記のようにしてみた。
bayes_path /var/spool/bayes/bayes
あと説明によると、そこにあるベイジアンフィルタ用データベースのファイル属性を 666 にしろって。う~ん...vpopmail しか書き込まないから、660くらいで勘弁してけろ?ということで、ファイル・ディレクトリの持ち主を spamd にして、spamd のグループに vpopmail を追加してみた。/var/spool/bayes ディレクトリ自体は 775 に、その中のファイルは 660 にした。
設定が終わったところで spamassassin --lint で local.cf に間違いがないか確認。-D 付けるともっといいかも。問題なければ spamd デーモンに HUP 送って再起動。試しにコマンドラインから spamc に何かスパムらしきテキストを食わしてみると、いつもの spamassassin が追加するヘッダ部分に BAYES_99 ってなのが追加されとる。なんか無事動いてるっぽい。もちろんモノによっては別のヘッダ(BAYES_20 とか BAYES_80とか)が付いたり、何も付かなかったりするので、確認する場合は数種類試すといい。
ちなみに BAYES_99 のデフォルトスコアは 1.9 だが、このヘッダが付くのは 99 から 100% の確率でスパムと判定したときなので、3.0 に変更しといた。
【追記】
bayes ファイルはデフォルトでは 0700 属性で作成されるので、今回のような異なるユーザー間(vpopmail と spamassassin)で共有する場合は、ファイルモードを変更する必要がある。方法としては local.cf に下記を追加する。
payes_file_mode 0770今回は spamassassin のグループに vpopmail アカウントが入ってるからグループ属性を 7 にしたが、その他の一般ユーザーまで有効にしなければいけない場合は 0777 。でもそれって宜しくない。
OpenID を使ってログインすることができます。
poker, backgammon, tramadol, casino, insurance, loans