FreeBSD 11.2 RELEASE - qmail - SpamAssassin設定

 
1. 概要・ports
2. SpamassAssin の設定
3. SpamassAssin の学習

1. 概要・ports

 SpamAssassin に関しては「ウィキペディア - SpamAssassin」をご参照ください。

cd /usr/ports/mail/spamassassin/
make
make install
 オプションはデフォルトのままにしておきます。  インストール後に必ず

/usr/local/bin/sa-update
 を実行ます。  これを実行しないと SpamassAssin がうまく起動できないときがあります。  バージョンアップ後にこの処理が必要な時もあります。  SpamassAssin-3.4.1 以降の ports はインストール時に、sa-update まで流すようになっています。

2. SpamassAssin の設定

 SpamassAssin の設定ファイルとして
/usr/local/etc/mail/spamassassin/init.pre
/usr/local/etc/mail/spamassassin/local.cf
 というファイルが作成されているはずです。  init.pre はデフォルトのまま変更しません。  この時点で local.cf はほとんどコメントアウトされていますが、下記のように

###########################################################################

#   Add *****SPAM***** to the Subject header of spam e-mails
#
rewrite_header Subject *****SPAM*****


#   Save spam messages as a message/rfc822 MIME attachment instead of
#   modifying the original message (0: off, 2: use text/plain instead)
#
report_safe 1


#   Set which networks or hosts are considered 'trusted' by your mail
#   server (i.e. not spammers)
#
# trusted_networks 212.17.35.


#   Set file-locking method (flock is not safe over NFS, but is faster)
#
# lock_method flock


#   Set the threshold at which a message is considered spam (default: 5.0)
#
required_score 5.0
 12、18、34行の 3行はコメントを外します。  これらの内容を説明すると、以下のようになります。
シンボル 意味
rewrite_header Subject spam と判定したときに Subject に加える文字です
report_safe spam 判定したときの処理を設定します。0、1、2 が指定可能
0:ヘッダに判定を載せるだけで本文には手を加えない
1:オリジナルのメールを添付ファイルにする
2:本文を spam メッセージの後に続ける
required_score spam と判断する閾(しきい)値となります
得点(?)がこの値を超えると spam と判断します

 SpamassAssin のデータベースは、各ユーザのディレクトリに

/home/ユーザ名/.spamassassin/
 というディレクトリが作成され、ディレクトリの配下に以下のようなファイルが作成されます。
ファイル 内容
auto-whitelist 自動的に生成されるホワイトリストのデータベース
(ブラックリストの反対の意味になります)
この中に入ると spam と見なされなくなります
bayes_seen 2つのファイルがベイズ理論というものを用いた
spam データベースになります
bayes_toks
user_prefs ユーザ用のテキスト設定ファイル
/usr/local/etc/mail/spamassassin/local.cf と同じ内容
ユーザ毎に設定を変える場合は本ファイルを編集します

 この設定ですと「3. SpamassAssin の学習」を行った結果は、ユーザごとの設定になってしまいます。
 これをシステムで一括に持ちたい場合は、すべてのファイルを同一個所で見られるようにします。
 システムで一括でもつデータベースディレクトリを、/var/qmail/spamassassin とするならば、


mkdir /var/qmail/spamassassin
 とします。権限を書き換えて、spamd でも simscan でもどちらでもアクセスできるようにしておきます。  そして /usr/local/etc/mail/spamassassin/local.cf に修正を加えます。

# bayes_ignore_header X-Bogosity
# bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status

  ↓

# bayes_ignore_header X-Bogosity
# bayes_ignore_header X-Spam-Flag
# bayes_ignore_header X-Spam-Status

bayes_path       /var/qmail/spamassassin/bayes	← 定義ファイルのパス
use_bayes        1								←	bayes を使用(デフォルト 1 なので指定しなくてもよい)
allow_user_rules 0                            	← ユーザごとのルールを持たない
 SpamassAssin の起動スクリプトは

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

/etc/rc.conf
 に

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

service sa-spamd start
 とすれば起動するはずです。

service 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. SpamassAssin の学習

 SpamassAssin は絶対的なものではありませんので、spam メールを spam と判断できなかったり、通常のメールを spam と判断してしまうことがあります。  制度を高めるには、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 判定させることができるようになります。