SpamAssassinインストールメモ
概要
SpamAssassinは,Perlで書かれたSPAMフィルタです.SPAMと判断されたメールに対しオプションヘッダを追加することができます.利用者側は,SpamAssassinが付与したヘッダ情報をもとに「ゴミ箱に振り分ける」などのルールをIMAP4クライアント側などで行うことで,SPAMメールを効率的に受信箱から排除することができます.
環境
- FreeBSD 5-STABLE
- Postfix 2.4.0
- Maildir環境
- SpamAssassin 3.1.8
- 公式WWWサイト: http://spamassassin.apache.org/
- 日本SpamAssassinユーザ会: http://spamassassin.jp/
参考WWWサイト
- dfltweb1.onamae.com – このドメインはお名前.comで取得されています。
- とても有用.procmailrcの設定例とか.
(1) SpamAssassinを導入
# cd /usr/ports # portinstall mail/p5-Mail-SpamAssassin
オプション選択ダイアログが出る."DomainKeys support"や"Add SPF query support"がそそるが,動作の詳細を(私が)理解していないため,ここでは選択せず.デフォルトの以下の選択肢ままOKする.
(2) インストールされたファイル群の確認
# pkg_info -L /var/db/pkg/p5-Mail-SpamAssassin-3.1.8_1/ Information for p5-Mail-SpamAssassin-3.1.8_1: Files: /usr/local/man/man1/spamd.1.gz /usr/local/man/man1/spamassassin.1.gz /usr/local/man/man1/spamc.1.gz /usr/local/man/man1/sa-learn.1.gz /usr/local/man/man1/sa-update.1.gz /usr/local/man/man1/spamassassin-run.1.gz :
manもきちんと入っている.その他,各種ドキュメントの配置状況も確認しておく.
設定ファイル群は /usr/local/etc/mail/spamassassin 以下に入っているようだ.
(3) マニュアルページの確認
# man spamassassin
以下のようなことがわかる.
- 設定ファイルの書式を確認するには man Mail::SpamAssassin::Conf
- spamassassin-runはフロントエンド・フィルタリング・スクリプト
- spamcは,spamdのクライアント
- spamdがSpamAssassinのサーバ
- 設定ファイルを検索するパス
- おおむね直感的な検索順になっている
- インストール方法は "INSTALL" を読め,とのこと.
- /usr/local/share/doc/p5-Mail-SpamAssassin/INSTALL
# lv /usr/local/share/doc/p5-Mail-SpamAssassin/INSTALL
- Step.4: procmailが必要,とのこと.
(4) procmailのインストール
# cd /usr/ports/ # portinstall mail/procmail/
dfltweb1.onamae.com – このドメインはお名前.comで取得されています。を参考に,procmailrcを書く.
/usr/local/etc/procmailrc
PATH=/bin:/usr/bin:/usr/local/bin MAILDIR=$HOME/Maildir DEFAULT=$MAILDIR/ LOGFILE=$MAILDIR/procmail.log # 弊サイトはMaildirでの運用であるため,LOCKFILEの設定は削除 # LOCKFILE=$HOME/.lockmail :0fw *!^X-Spam.* |/usr/bin/env LANG=C LC_ALL=C /usr/local/bin/spamc
弊サイトではprocmailrcの詳細については扱わない.詳しく知りたい人は以下をどうぞ.
- http://www.linux.or.jp/JM/html/procmail/man1/procmail.1.html
- http://www.jaist.ac.jp/~fjt/procmail.html
(5) 設定ファイルを編集 (SmapAssassin)
http://tlec.linux.or.jp/topic.htmlに,とてもよくメンテナンスされているすばらしい定義ファイルがあります.今回はこれを使わせていただくことにします.
# cd /usr/local/etc/mail/spamassassin # fetch -o local.cf http://tlec.linux.or.jp/docs/user_prefs
続いて,local.cfの先頭部分に以下の行を追加.
use_bayes 0 rewrite_header Subject [SPAM] required_score 8.0 allow_user_rules 0 ifplugin Mail::SpamAssassin::Plugin::AWL auto_whitelist_path /var/db/spamassassin/auto-whitelist auto_whitelist_file_mode 660 endif
弊サイトでは,SpamAssassinの持つベイジアンスパムフィルタは使いたくない,というポリシのため,local.cfの1行目に"use_bayes 0"を追加した.これによりベイジアンスパムフィルタは無効になる.このあたりは各自お好みで.
SpamAssassin用のデータディレクトリを掘っておく.auto-whitelistもtouchしておく.
# mkdir /var/db/spamassassin # chown spamd:spamd /var/db/spamassassin # chmod 770 /var/db/spamassassin # touch /var/db/spamassassin/auto-whitelist # chmod 660 /var/db/spamassassin/auto-whitelist # chown spamd:spamd /var/db/spamassassin/auto-whitelist # /usr/local/etc/rc.d/sa-spamd.sh start
(6) 起動ファイルを確認 (SmapAssassin)
# cd /usr/local/etc/rc.d/ # lv sa-spamd.sh
以下のことがわかる.
- spamd_enable="YES" を/etc/rc.confに追加する必要がある
(7) /etc/rc.confを編集
spamd_enable="YES" spamd_flags="-u spamd -g spamd "
spamd_flagsに "-c" の指定がある(デフォルト)状態だと,勝手にユーザのホームディレクトリ以下にuser_prefsを生成するようである.私は気持ち悪い動作だと感じるので外した.また,"-u" や "-g" フラグなしの状態だと,nobodyにsetuidして動くようである.このあたりはお好みで.
(8) SpamAssassinを起動
# /usr/local/etc/rc.d/sa-spamd.sh start Starting spamd.
無事に起動したか確認.
# ps xa | grep spamd 16024 ?? Ss 0:01.07 /usr/local/bin/spamd -c -d -r /var/run/spamd/spamd.pi 16025 ?? S 0:00.00 spamd child (perl5.8.8) 16026 ?? S 0:00.00 spamd child (perl5.8.8)
/var/log/maillogも見ておく."ok_languages"のあたりでエラーが出ているようなので,該当行をコメントにしておく.編集が終わったら,SpamAssassinを再起動.
# /usr/local/etc/rc.d/sa-spamd.sh restart Stopping spamd. Waiting for PIDS: 16024. Starting spamd.
(9) 設定ファイルを変更 (Postfix)
まず,Postfixの設定を確認する.
# postconf mailbox_command mailbox_command = #
mailbox_commandの設定が空であることを確認したら,main.cfに以下の行を追加する.
mailbox_command = /usr/local/bin/procmail
(10) Postfixへ設定変更を反映
# postfix reload postfix/postfix-script: refreshing the Postfix mail system
設定が反映されたことを確認.
# postconf mailbox_command mailbox_command = /usr/local/bin/procmail
この状態で,SpamAssassinが有効になっているはずである.
(11) 動作確認
以下のコマンドでSMTPサーバの出すログを監視する.
# tail -f /var/log/maillog