FreeBSD 8.4 RELEASE - qmail - spam 対策

クラウディア 
 本ページの設定では、2014年9月以降の「ports」を使用した場合、「qmail」の設定ができなくなっています。  「qmail」の設定については「トップ」ページより、更新日時の新しいものを参考にしてください。
1. spamassassin のインストール
2. spamassassin の設定
3. qmail-scanner のインストール
4. MUA の設定
5. spamassassin の学習
6. spamassassin-3.4.0_11 → 3.4.0_12 更新時のトラブル対策

1. spamassassin のインストール

 spamassassin をインストールします。
/usr/ports/mail/spamassassin/

2. spamassassin の設定

 spamassassin の設定ファイルは、/usr/local/etc/mail/spamassassin/ に作成されます。
init.pre
init.pre.sample
local.cf.sample
 というファイルが作成されているはずです。  ここで、init.pre は変更の必要がありません。  local.cf.sample を local.cf にコピーします。この時点で local.cf はほとんどコメントアウトされていますが、以下の 3行はコメントを外します。

rewrite_header Subject *****SPAM*****
report_safe 1
required_score 5.0
 これらの内容を説明すると、以下のようになります。
シンボル 意味
rewrite_header Subject spam と判定したときに Subject に加える文字です
report_safe spam 判定したときの処理を設定します。0、1、2 が指定可能
0:ヘッダに判定を載せるだけで本文には手を加えない
1:オリジナルのメールを添付ファイルにする
2:本文を spam メッセージの後に続ける
required_score spam と判断する閾(しきい)値となります
得点(?)がこの値を超えると spam と判断します
 spamassassin のデータベースは、各ユーザのディレクトリに、/home/user/.spamassassin/ というディレクトリが作成され、ディレクトリの配下に以下のようなファイルが作成されます。
ファイル内容
bayes_seen 2つのファイルがベイズ理論というものを用いた
spam データベースになります
bayes_toks
user_prefs ユーザ用のテキスト設定ファイル
/usr/local/etc/mail/spamassassin/local.cf と同じ内容
ユーザ毎に設定を変える場合は本ファイルを編集します
 この設定ですと 5. spamassassin の学習 を行った結果は、ユーザごとの設定になってしまいます。  これをシステムで一括に持ちたい場合は、すべてのファイルを同一個所で見られるようにします。  システムで一括でもつデータベースディレクトリを、/var/qmail/spamassassin とするならば、

> mkdir /var/qmail/spamassassin
> chown qscand:qscand /var/qmail/spamassassin
 とします。  そして /usr/local/etc/mail/spamassassin/local.cf に以下の行を加えます。

bayes_path          /var/qmail/spamassassin/bayes
 spamassassin の起動スクリプトは、/usr/local/etc/rc.d/sa-sampd というファイルで作成されているはずです。  このスクリプトはいじる必要がありません。  /etc/rc.conf に

spamd_enable="YES"
 という行を追加します。  これで

> /usr/local/etc/rc.d/sa-spamd start
 とすれば起動するはずです。

> /usr/local/etc/rc.d/sa-spamd status
 で

spamd is running as pid 41052.
 のような表示が出ていれば、起動成功です。  もし、起動時に

child process [41019] exited or timed out without signaling production of a PID file: exit 255 at /usr/local/bin/spamd line 2642.
./sa-spamd: WARNING: failed to start spamd
 のようなメッセージが出るようであれば

> /usr/local/bin/sa-update
 とやってください。正常に起動できるようになるはずです。

3. qmail-scanner のインストール

 spamassassin のデーモンが起動できるようになれば、qmail-scanner を再インストールします。  以下の作業は、qmail、spamassassin を停止して行ってください。

> cd qmail-scanner-1.16
> /usr/ports/mail/qmail-scanner/work/qmail-scanner-2.01/configure --domain 仮名.ne.jp --lang ja_JP.EUC --scanners "sweep,verbose_spamassassin"  --install
 とやれば、新しいスクリプトが /var/qmail/bin に qmail-scanner.pl として作成されます(1行で入力しますので、注意してください)。  作成時のディレクトリで scanning の試験を

> /usr/ports/mail/qmail-scanner/work/qmail-scanner-2.01/contrib/test_installation.sh -doit
 で、行います。  qmail-scanner からの4通目のメールの Subject が「****SPAM***** Qmail-Scanner anti-spam test (4/4): checking SpamAssassin [if present] (There yours for FREE!)」となっていて、本文が添付ファイル化されていれば、設定は成功です。

4. MUA の設定

 spam メールにあわせて、MUA を設定します。  MUA によっていろいろ設定方法が変わってくるかと思いますが、ここでは、Outlook Express での設定方法について説明します。  Outlook Express の受信トレイのローカルフォルダを右クリックして「フォルダの作成」をクリックします。 フォルダ名に「spam」と入力します。これでローカルフォルダに「spam」というフォルダが作成されます。  「ツール」→「メッセージルール」→「メール」をクリックします。  「新規作成」をクリックします。  「ルールの条件」で「件名に指定した言葉が含まれている場合」をチェックします。  「ルールのアクション」で「指定したフォルダに移動する」をチェックします。  「ルールの説明」で「指定した言葉が含まれる場合」をクリックして文字列に「*****SPAM*****」を入力し、追加して「OK」をクリックします。「指定したフォルダ」をクリックして「spam」フォルダを選択して「OK」をクリックします。  「ルール名」には適当な名前を入力します。  「OK」→「OK」で設定完了です。  以後は spamassassin で spam と判断したメールは受信後に「spam」フォルダに格納されることになります。

5. spamassassin の学習

 spamassassin は絶対的なものではありませんので、spam メールを spam と判断できなかったり、通常のメールを spam と判断してしまうことがあります。  spamassassin の判断の制度を高めるには、spamassassin に学習させてデータベースを更新していきます。  spamassassin に学習させるには、実際に受信したメールを sa-learn というツールを使って読み込ませます。  仮に /home/ユーザ/spamassassin/spam というフォルダと /home/ユーザ/spamassassin/ham というフォルダを作成しておきます。  /home/ユーザ/spamassassin/spam には、spam メールであって spam と判断されなかったメールを /home/ユーザ/spamassassin/ham には、通常のメールであって spam と判断されてしまったメールを FTP 等によって、クライアントからサーバへコピーします。  この状態で、spam を学習する際は、

> sa-learn --spam /home/ユーザ/spamassassin/spam
 spam でないものを学習する際は、

sa-learn --ham /home/ユーザ/spamassassin/ham
 と入力します。  これで、データベースが更新されます。  新しい spam のパターンが現れても、こうやって学習させることにより、spam 判定させることができるようになります。

6. spamassassin-3.4.0_11 → 3.4.0_12 更新時のトラブル対策

 spamassassin を 3.4.0_11 から 3.4.0_12 に更新すると、sa-spamd が停止していて、起動すると

/usr/local/etc/rc.d/sa-spamd: WARNING: /var/run/spamd is not a directory.
/usr/local/etc/rc.d/sa-spamd: WARNING: failed precmd routine for spamd
 と WARNING が出力されて sa-spamd が起動できないことがあります。  これは sa-spamd のプロセスIDファイルが /var/run/spamd.pid から /var/run/spamd/spamd.pid に移行したことによるものです。root ユーザで

mkdir /var/run/spamd
 してから

/usr/local/etc/rc.d/sa-spamd start
 します。これで正常に起動できます。
earthcar(アースカー)