SpamAssassin の設定をしてて分かったこと。忘れないうちに記録しておく。
まず sa-learn で学習させるんだが、通常学習結果は各ユーザーのホームディレクトリ以下の .spamassassin ディレクトリ以下に作成される。が、vpopmail の場合共通ファイルとして /home/vpopmail 以下に作成することになる。ここで少しハマった。というのも普段、自分のアカウントでログインし、そのあと su して root になり作業をするんだが、sa-learn した結果が自分のホームディレクトリ以下に作成される。sa-lean にオプションがあって-u でユーザーを指定できるみたいなんだが、これがうまく機能してない。結局 --dbpath で /home/vpopmail/.spamassassin/ と指定(あらかじめ作成しておく)するとうまく出来上がった。それでもファイル属性が root だったりするので、vpopmail.vchkpw で持ち主変更したり。一度変更してしまえば、その後属性はそのまま。
まぁ通常は vpopmail アカウントの cron で sa-learn 起動して、あるディレクトリにあるメールは SPAM として、あるディレクトリにあるメールは HAM(SPAM じゃないメール)として学習させれば問題ない。
spamc コマンド使うときも、-u vpopmail としないと vpopmail 用に登録したデータベースを使用しない。まぁこれも通常はメールを受信したときに、vpopmail 名義でメールを分けるので、その場合は特に問題なし。
メールの振り分けは procmail でやる。今回 ports からインストールした。vpopmail の自分のアカウントの下、Maildir と同じ階層に .qmail を作成して下記のようにする。
| /usr/local/bin/procmail -m ./.procmailrc
さらに同じところに .procmailrc を作成して、下記のようにする。
PATH=/usr/bin:/bin:/usr/local/bin HOME=/home/vpopmail/domains/DOMAIN/USER MAILDIR=$HOME/Maildir DEFAULT=$HOME/Maildir/ LOGFILE=$MAILDIR/procmail.log LOCKFILE=$MAILDIR/procmail.lock :0fw *!^X-Spam.* |/usr/local/bin/spamc :0 * ^X-Spam-Status: Yes $MAILDIR/.SPAM/
でもなぜかprocmail.log とかが作成されない。なんかファイルの属性とか違うのかなぁ...まぁまた後日改めて詳しく調べよう。ということで上記設定について少し補足。:0fw 以下の3行が、最初メールを受け取ったときに通るルールセット。X-Spam なんちゃらがセットされてなかった spamc を通す。次の :0 以下の3行が X-Spam-Status: Yes の行があった場合の挙動。上の例では .SPAM ディレクトリ以下に移動している。このディレクトリは実は IMAP からは SPAM という名前で参照できる場所で、通常 pop でメール受信してるときはサーバーに置き去りにするので、SPAM メールを受信することはない。IMAP でアクセスしたときだけ、SPAM フォルダが見えるので、SpamAssassin が誤認識してないか都度確認する。
さらに前述の通り vpopmail アカウントの cron で sa-learn を実行してこの .SPAM/cur (一度読んだメールは cur に、未読は new にある)を対象に学習させる。1日一回起動するようにしたので、適当に自分で削除する。まぁ学習後勝手に消す、というのが簡単でいいんだけど、しばらくは様子見ということで。
ちなみに学習は 1000通以上しないと駄目らしい。というか、一旦学習させて、再度 spamc でチェックしてみると、スコアが全然変化してないんだよね。ということはしばらく同じ文面の SPAM を受け取る可能性があるということか?学習後同じファイルを再度 sa-learn で読み込ませると、すでに学習済みなのか無視する。なので一応学習はしてるようなんだが...まぁ1日100~200通は来るので、1週間もほっとけば結果がでるだろう。気長に待つか。
【追記】別のサイトには、ベイジアンフィルタが有効になるのは HAM の登録が 200を越えてから、と書かれてあった。最新版がどういう挙動なのか未確認だが、なんとなく納得。
それからどのくらい登録したか確認するには以下のコマンド。
sa-learn --db-path /home/vpopmail/.spamassassin --dump magic
前述の通り、--db-path でちゃんとデータベースのパスを指定しないと自分のホーム以下の .spamassassin を調べてしまうので必要。
あと日本語メールは、GAPPY_SUBJECT と OBSCURED_EMAIL のパラメータによりスコアが上がりやすくなるので、local.cf で少し低く設定しなおすといいかも。
spamd/spamc の組み合わせで動かしてる場合は、local.cf 書き換えたら spamd に HUP シグナル送って再起動する必要がある。
OpenID を使ってログインすることができます。
poker, backgammon, tramadol, casino, insurance, loans