主旨 §
無駄に手間が掛かったので経緯をメモする。
メールサーバの構成の問題から参考にならない人の方が多いと思われる。
問題 §
数日前からqq.comドメインからの大量の迷惑メールが届いた。qq.comそのものは中国の正当なサービスのドメインと思われる。qq.comのメールサーバそのものが使われているのか、それともドメイン詐称かは分からない。しかし、あまりにも数が多く重要なメールの多くが不達となっているので対策の重要度は高い。
環境 §
procmail+Clam AntiVirus+spamassasin+postfixの構成である。
原因 §
問題が起きる原因はおそらくspam判定に時間が掛かっているためだと判断した。spam判定能力を超えた数のメールが殺到すると、着信できないメールが発生する。
目標 §
spam判定より前にqq.comからの電子メールを排除したい。
間違った対策 §
Postfixのmain.cfに拒否ドメインに関する設定を行った。詳細はネットを検索するといくらでも事例が出てくるので略。smtpd_sender_restrictionsを使った方法と、header_checksを使った方法を試したがいずれも効果が無かった。
正しいと思われる対策 §
この電子メールサーバの構成では、メールが着信して最初に起動されるのはPostfixではなくprocmailである。procmailはClam AntiVirus+spamassasinでスコア判定してスコアが特に悪ければ捨て、そこそこのスコアならspamフォルダにメールを転送するように書かれていた。Postfixが起動するのはおそらく、このあとである。従って、Postfixでいくら対策しても無駄である。今回は、Clam AntiVirus+spamassasinで処理する前に破棄したかったので、procmailrcの先頭近く(Clam AntiVirus+spamassasin呼び出し前)に、以下のような記述を追加して対策した。(ただし、インチキ臭いガバガバの正規表現なので関係ないメールを破棄してしまうリスクはある)
:0
* ^From.*qq.com
/dev/null
結果 §
設定変更後数時間が経過したが、qq.comからのメールがspamフォルダに入ることはなくなった。
対策の是非の検討 §
qq.comからのメールが来る可能性は現状でほぼ無い(というか、特に付き合いの長い相手以外からの電子メールが来る可能性そのものが極めて少ない)ので、取りあえずは緊急対応としてこの処置は是認するが、これで良いわけではない。