SpamAssassin

SPAM があんまりなので、しばらく MacOS についてくる Mail.app を使っていたのだが、やっぱりメールは Emacs で書いた方がなにかと幸せだ、ということがわかってきた。マウス使わなきゃいけないなんて、めんどくさすぎ。
そういうわけで、ちょっとメールサーバにしているマシンの環境を整備してみた。具体的には、
– procmail
SpamAssassin
を入れただけですが。両方とも ports で楽ちん。
まず、/usr/local/share/spamassassin/10_default_prefs.cf を編集して、

report_safe 0

にした。これ、デフォルトは 1 で、そうすると SPAM と判定されたメールは添付ファイルとして送られてくるので、誤判定されたときにちょっと不便。
次に、procmail を使って、
– X-Spam-Status: ヘッダがなければ spamassasin に渡して、
– X-Spam-Status: Yes なら /path/to/my/imap/INBOX.SPAM へ、そうじゃなければ /path/to/my/imap/INBOX へ振り分け
という設定を書く。~/.procmailrc はこんな感じ。

PATH=/bin:/sbin:/usr/local/bin
DEFAULT=/path/to/my/imap/INBOX
LOCKFILE=$HOME/.lockmail
#LOGFILE=$HOME/.procmaillog
:0fw: .lockmail.spamassassin
*!^X-Spam-Status*
|spamassassin
:0
* ^X-Spam-Status: Yes
/path/to/my/imap/INBOX.SPAM
:0
$DEFAULT

~/.qmail はこれだけ。procmail に丸投げ。

|preline /usr/local/bin/procmail

それから、学習させるための script も書いてみた。SPAM とそうじゃないメールをちゃんと分けたあとで ssh 経由でリモートから叩けば簡単だし、SPAM フォルダも空にしてくれるし、いい感じだ。うちは IMAP のメールボックスが mbox 型式なので、メールをバラすのに im を使っているのだが、Courier-IMAP で Maildir 型式、とかならもっと簡単だと思う。

#!/bin/sh
imget –src=local:/path/to/my/imap/INBOX.SPAM –dst=+spam
sa-learn –spam ~/Mail/spam/*
rm -f ~/Mail/spam/*
imget –src=local:/path/to/my/imap/INBOX –dst=+ham –keep=1 > /dev/null
sa-learn –ham ~/Mail/ham/*
rm -f ~/Mail/ham/*

誤判定は最初からほとんどなく、判定結果の精度はけっこういい感じだ。

コメントを残す