FreeBSD 13.3 RELEASE - qmail - SpamAssassin 設定

クラウディア 
1. 概要
2. インストール
3. SpamassAssin の設定
4. SpamassAssin の学習

1. 概要

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

2. インストール


cd /usr/ports/mail/spamassassin/
make config
 下記が、デフォルトのオプションになります。
「FreeBSD 13.3 RELEASE」-「/usr/ports/mail/spamassassin」「make config ①」」
「FreeBSD 13.3 RELEASE」-「/usr/ports/mail/spamassassin」「make config ②」」

 オプションはデフォルトのままにしておきます。


cd /usr/ports/mail/spamassassin/
make
make install
 インストール時のメッセージを残しておきます。

===>  Installing for spamassassin-4.0.0_6
===>  Checking if spamassassin is already installed
===>   Registering installation for spamassassin-4.0.0_6
Installing spamassassin-4.0.0_6...
===> Creating groups.
Creating group 'spamd' with gid '58'.
===> Creating users
Creating user 'spamd' with uid '58'.
===> Creating homedir(s)
You should complete the following post-installation tasks:

        1) Read /usr/local/share/doc/spamassassin/INSTALL
           and /usr/local/share/doc/spamassassin/UPGRADE
           BEFORE enabling SpamAssassin for important changes

        2) Edit the configuration in /usr/local/etc/mail/spamassassin,
           in particular /usr/local/etc/mail/spamassassin/init.pre
           You may get lots of annoying (but harmless) error messages
           if you skip this step.

        3) To run spamd, add the following to /etc/rc.conf:
           spamd_enable="YES"

        4) If this is a new installation, you should run sa-update
           and sa-compile. If this isn't a new installation, you
           should run those commands immediately after update and
           probably run them on a regular basis.

        5) Install mail/spamass-rules if you want some third-party
           spam-catching rulesets

        6) Remove /usr/local/etc/mail/spamassassin/sa-update-keys if this software is no
           longer needed.

SECURITY NOTE:
By default, spamd runs as root (the AS_ROOT option). If you wish
to change this, add the following to /etc/rc.conf:

        spamd_flags="-u spamd -H /var/spool/spamd"
 インストール後に必ず

/usr/local/bin/sa-update
 を実行ます。  これを実行しないと「SpamassAssin」がうまく起動できないときがあります。  バージョンアップ後にこの処理が必要な時もあります。  一時期、「ports」をインストール際に、「sa-update」まで流すようになっていましたが、念のため、明示的に実行します。

3. SpamassAssin の設定

 「SpamassAssin」の設定ファイルとして

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

vi /usr/local/etc/mail/spamassassin/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 213.07.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
 17、23、39行の 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 と同じ内容
ユーザ毎に設定を変える場合は本ファイルを編集します

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


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

vi /usr/local/etc/mail/spamassassin/local.cf

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

 の下に、3行加えます。

# 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
allow_user_rules 0
 59行は、定義ファイルのパスを宣言。  60行は、「bayes」を使用する定義(デフォルト 1 なので指定しなくてもよい)。  61行は、ユーザごとのルールを持たない設定です。  「SpamassAssin」の起動スクリプトは

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

sysrc spamd_enable=YES
 これで

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

service sa-spamd status
 で

spamd is running as pid 38352.
 のような表示(末尾の数字はプロセスID なので時々で変わります)が出ていれば、起動成功です。  もし、起動時に

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
 を忘れているはずです。実行してください。正常に起動できるようになるはずです。

4. SpamassAssin の学習

 「SpamassAssin」は、絶対的なものではありません。  「spam」メールを「spam」と判断できなかったり、逆に通常のメールを「spam」と判断してしまうことがあります。  制度を高めるには、「SpamassAssin」に学習させてデータベースを更新していきます。  「SpamassAssin」に学習させるには、実際に受信したメールを「sa-learn」というツールを使って読み込ませます。  仮に「/home/ユーザ/spamassassin/spam」というフォルダと「/home/ユーザ/spamassassin/ham」というフォルダを作成しておきます。  「/home/ユーザ/spamassassin/spam」には、「spam」メールであって「spam」と判断されなかったメールを置きます。  「/home/ユーザ/spamassassin/ham」には、通常のメールであって 「spam」と判断されてしまったメールを置きます。  この状態で、spam を学習する際は、

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

sa-learn --ham /home/ユーザ/spamassassin/ham
 と入力します。  これで、データベースが更新されます。  新しい「spam」のパターンが現れても、こうやって学習させることにより、「spam」判定させることができるようになります。
ハイスピードプラン【usus ウズウズ】