最近はmixi日記の更新がメインになってこっちはほとんど更新してなかったので、たまに更新。
某所のメールサーバが大量のSPAMで大変なことになってたので、一応打った手をメモ。
○構成
FreeBSD 6.2-RELEASE + qmail 1.03 + qmail-vida 0.53
○対応
1. 存在しないアドレス宛のメールは全部吸い込むようにする
「/var/qmail/alias/.qmail-default」を中身が「#」だけの状態で作成。
2. メールスプールにたまった未送信のエラーメールをqmHandleで全消去
#とりあえずこの時点で通常メールの配送遅延は一応解消
3. SpamAssassinとsimscanをportsでインストール
portinstall mail/p5-Mail-SpamAssassin
portinstall mail/simscan
SpamAssassinはDKIM・SPF共に有効な指定としたが、sa-compileは指定しない
simscanはドメイン毎の設定を有効とする
#ちなみにsa-updateはportsの方でやってくれる
4. SpamAssassinの設定
local.cfを以下の内容で作成(コメント類は削除してます)
「ok_language」「ok_locales」を使うので、「v310.pre」内の「loadplugin Mail::SpamAssassin::Plugin::TextCat」のコメントアウトを外す
/etc/rc.confに「spamd_enable="YES"」を追加
-- ここから
report_safe 0
trusted_networks (事情により非公開)
required_score 13.0
use_bayes 1
bayes_auto_learn 1
bayes_ignore_header X-Bogosity
bayes_ignore_header X-Spam-Flag
bayes_ignore_header X-Spam-Status
skip_rbl_checks 0
use_razor2 1
use_pyzor 1
ok_languages en ja
ok_locales en ja
score NAME_OF_TEST 3.0
score OBSCURED_EMAIL 0
score TVD_SPACE_RATIO 0
score FH_FROMEML_NOTLD 0
-- ここまで
5. qmailの設定
tcpserverを使ってるので、tcp.smtp.cdbを再構築して「QMAILQUEUE="/var/qmail/bin/simscan"」の指定を有効にする
6. simscan周りの設定
「/var/qmail/bin/simscanmk -g」で「simversions.cdb」を作成
続いて「/var/qmail/control/simcontrol」を作成し、同じくsimscanmk(今度はコマンドラインオプション無し)で「simcontrol.cdb」を作成
ちなみにsimcontrolの中身は「:spam=yes,spam_hits=20.1」のみ
7. とりあえず起動
/usr/local/etc/rc.d/sa-spamd.sh start
/usr/local/etc/rc.d/qmail.sh stop
/usr/local/etc/rc.d/qmail.sh start
これでとりあえずはSpamAssassinによるフィルタリングが有効になる
8. いろいろチューニング
portsのデフォルトだと、「simscan」ユーザのホームディレクトリ以下に「auto-whitelist」やら「bayes_*」やらのファイルを作成しようとするが、simscanのホームディレクトリが「/nonexistant」で作成に失敗するので、simscanのホームディレクトリを「/home/simscan」に変更して、「/home/simscan/.spamassassin」以下にファイルが作成されるようにする
SPAMが多すぎて、spamdのmax-child数が少なすぎると怒られたので、/etc/rc.confに「spamd_flags="-c -m 20"」を追加してspamdを再起動
9. CPU負荷軽減策
しばらく見てるとCPUのLoadAverageが5を超える事態になって慌てふためく
とりあえずipfwで「allow tcp from any to (サーバのIP) dst-port 25 setup limit src-addr 1」とやって、同一アドレスからは1セッションしかSMTPのセッションを張れなくする
これで多少は落ち着いたが、それでもLoadAverageが1.5~2あたりを推移するので、いろいろ考えた結果、sa-compileを実行していないことに気づく
10. sa-compile絡み
sa-compileの実行にはre2cが必要なので、これまたportsでインストール
portinstall devel/re2c
インストールしたらsa-compileを実行
んでもってコンパイルした結果をspamdが見に行くようにするため、「v320.pre」で「loadplugin Mail::SpamAssassin::Plugin::Rule2XSBody」のコメントアウトを外し、spamdを再起動
とりあえずこれで今は落ち着いているのでしばらく様子見の予定。