reject_unknown_clientは迷惑メール対策としておすすめではない
さて、先日書いたmnx.ne.jpとzero.ad.jpがDNS逆引き設定の無いメールサーバからのメールをspam扱いしはじめた件だが、その後の情報収集で、同様の無茶な設定を施しているメールサーバーが最近少しずつ増え始めていることが判明。
はたと思ってreject_unknown_clientで日本語限定でGoogle 検索してみると、迷惑メール対策として reject_unknown_client を紹介しているページは多数みつかるのだが、その弊害の大きさにまで言及しているページはほとんどないことがわかる。 これはあまりよくない傾向だ。 そこで、ある程度説明をまとめておくことにする。
まず概念的なことからだが、筆者の過去記事なんかよりずっとよくまとまった説明をみかけたので以下に引用しておく。
(MTA のアクセス制御 より抜粋)
逆引き判定
逆引き(IP アドレスからホスト名を得ること)ができないクライアントや、パラノイドチェック(逆引き得られた名前を正引きして元の IP アドレスと一致するかの検査)にひっかかるクライアントを蹴る。RFC2505 #1.4
これはよくおこなわれているようだが、はっきりいって筋違いだろう。ほんとうに必要がないかぎり逆引きを設定しないという運用方針を取っている組織はけっして珍しくない。逆引きがないからといって spammer と断定はできない。 sshd など限られたクライアントのみ接続できればいいサービスではそのような制限もありうるだろうが、メールは不特定のホストから届くものである。曖昧な根拠にもとづく制限をするのはやめておいた方がいいだろう。国内大手 ISP では hi-ho がこの制限を導入したことがあるが、わずか1ヶ月で撤回している
spam をたくさん送ってくる中国韓国あたりはそもそも逆引きを設定する習慣があまりないようで、このチェックによってこれらの国からの spam を多数撃墜できるのは事実である。しかしそれは逆引きを設定する習慣がない国と spam を送ってくる国がたまたま重なっているだけにすぎない。spam を送ってくるホストはとうぜんまともな管理はされていないだろうが、まともに管理されているホストに逆引きがないというのもふつうに存在する(何をもってまともとするかの定義も曖昧だが)。spam を送ってこなければ目につくこともないし、これらの国から spam でないメールを受ける機会もほとんどないだろうから、逆引きなし⇒ spammer と短絡的に考えてしまいがちだが、RFC で必須とされているわけでもなし、本来何の関係もない事象である。逆引き判定が効果があるように感じるとすればこの点を誤解しているのではないだろうか。これらの国だって spam 以外のメールは当然送るだろうが、そのようなメールもまとめて拒否してしまう可能性が高いことを留意しておく必要がある。まともなメールも含めてこれらの国からのメールを拒否してしまいたいのならば、逆引き判定などという間接的な手段を取るのではなく、中国韓国に割り当てられているネットワークをあらかじめ調べておいてブラックリストに登録しておいた方がいいだろう(後述。そういう DNSBL もある)。
某 SIer さんのサイトにこの手法を強力に推進するページが、まったくもって理由になっていないように見える。そういう設定をすることが「できるかできないか」ということと、それを実際に「やるかやらないか」ということは、まったく関係のない別の事象であるはずなのに区別できていないようだ。もちろん「やるかやらないか」を決めるのは、これを書いてる当方ではなく読んでるあなたなので、ご自分の判断で逆引きできないホストからのメールを拒否してもいっこうにかまわないわけなのだが、仮にそうするとしても、逆引きを設定しているからまともな管理がされている、あるいは逆引きが設定されていないからまともでない、などという嘘を信じることだけはないように。
次に技術的なこと。この記事のタイトルにした「reject_unknown_client」とは、postfixというメールサーバーソフトウェアの設定の記述のひとつである。これを書くと、DNS逆引き設定の無いホストからのメールをはじくという設定ができる。世の中のメールサーバはpostfixだけではもちろんないのだが、最近はsendmailにとってかわってpostfixが業界標準になりつつあるようなので、ここではあえてpostfixにフォーカスすることにする。
なお、postfixのバージョンによっては、reject_unknown_client でなく reject_unknown_client_hostname や reject_unknown_reverse_client_hostname となっているようだ。そしてまぎらわしいことにこれらはreject_unknown_hostnameとも違う。他にもまぎらわしい名前のものがいくつかある。いずれにせよ自分の管理するpostfixのバージョンを確認しマニュアルをよく読んで設定しないと痛い目にあう可能性が高いのでご注意。
さて、本家postfixのドキュメントとFAQのページをよく見ると、 ウィルスメールと迷惑メールを遮断するための方策へのリンク集がある。
UCE/Virus上記のうちのいくつかについてその抜粋を紹介する。なお、日本語部分は筆者による翻訳である。
(筆者注: UCEとは Unsolicited Commercial Email = 頼みもしない宣伝の電子メール = 日本語で言うところの迷惑メール、の意味)
- Gentoo mailfiltering gateway guide
- Filtering spam with Postfix with spf, postgrey and Amavis by Kirk Strauser.
- How to get Dspam, Postfix, and Procmail to play well together by John Locke.
- Postfix Anti-UCE Cheat-Sheet by Jim Seymour.
- My Understanding Of How UCE Actually Works by Meng Wong.
- Anti-SPAM Gateway Using OpenBSD, Postfix, Amavisd-new, SpamAssassin, Razor and DCC by Scott Vintinner.
- Postfix UCE/anti-spam guide by Jeffrey Posluns.
- UCE and other howtos by Ralf Hildebrandt.
- Header/body junk mail patterns by Jesus Climent.
- See also the add-on software page for SpamAssassin etc.
まず、Postfix Anti-UCE Cheat-Sheet by Jim Seymour. には次のようにある。
Q7. Why don't you use reject_unknown_hostname or reject_unknown_client?
(なぜreject_unknown_hostname や reject_unknown_client を使わないのですか?)
A7. Too many "false positives" (that is: rejects too much non-spam email), in my experience.
私の経験上、「誤検出」つまり迷惑メールではないメールを遮断してしまうことが多すぎるからだ。
次に Postfix UCE/anti-spam guide by Jeffrey Posluns. だが、postfixの設定ファイルであるmain.cfのサンプルには次のようにある。
smtpd_recipient_restrictions =
permit_mynetworks,
permit_sasl_authenticated,
reject_unauth_destination,
# reject_unknown_client, # This can cause a lot of false rejects.
# reject_non_fqdn_hostname, # This can cause a lot of false rejects.
# reject_unknown_hostname, # This can cause a lot of false rejects.
reject_invalid_hostname,
太字の部分に注目。#でコメントアウトされ、This can cause a lot of false rejects = この設定をやると(迷惑メールでないメールの)誤遮断の多発を引き起こす、とある。
ほかにも似たような記述があちこちに散らばっているのだがこれぐらいにしておく。 さてところで、 阻止率99%のスパム対策方式の研究報告といういかにもな力の入った論文もあるのだが、その最後のほうに、こんな記述がある。
付録A. Postfixでの設定方法
(途中省略)
/etc/postfix/main.cfファイルに追加する行
smtpd_client_restrictions =
permit_mynetworks,
check_client_access regexp:/etc/postfix/client_restrictions,
reject_unknown_client(筆者注!ここに注目)
やれやれである。
「阻止率99%」と題してはいるものの、その数字は、受け取れるべき正常なメールをスパムと誤判定した確率は何%ですか?という話とはまた別である点が、この論文のそもそものトリックなのである。最後に、さらに筆者の経験からして付け加えておきたいのが、
- reject_unknown_client、reject_unknown_client_hostname、reject_unknown_reverse_client_hostname が、モロに送信元ホストののDNS逆引き登録に関係してくる、やめておいたほうがいい設定
reject_unknown_hostname は上とはちょっと違って、詳細は省くけどそれほど弊害の大きい設定じゃないと思う。←DNS逆引きと無関係であることは確かだが、これはこれで危険。詳細はこちら
see also:
DNS逆引きチェックによるスパム対策は百害あって一利無し(2004.7)
hi-ho、DNS逆引きによるメール送信制限を撤回(2004.12)
mnx.ne.jpとzero.ad.jpがDNS逆引き設定の無いメールサーバからのメールをspam扱いしはじめた件 (2006.9)
追記:
reject_unknown_client設定をしていたらあやうく就職の面接の連絡がつかなくなるところだった
という事例を発見。ご愁傷様です。 ついでなのでTechnoratiで検索してみたら、reject_unknown_clientしていてかつその弊害を認識していないんじゃないかと思われる例を多数発見。そのいくつかに対してトラックバックさせていただきます。- [サーバ][Postfix]スパムが我慢ならんので - ブロードバンド対応日記
- さらにスパムメール対策 - やってみなけりゃ気が済まない
- So-net blog:興味津々電脳箱:postfix そにょ2 不正中継を強化
- IBG: Postfixでのspam対策
- IT備忘録: 玄箱 Postfixインストール
- らくの日記 » 方針変更
- Soukaku's HENA-CHOKO Blog - 設定覚え書き:Postfix編
- Katagiri::Weblog: Postfix:セキュリティ強化のための設定変更
- 日々の試行と実験: Postfixとlogwatch
- 管理人のヒトリゴト » Blog Archive » Postfixのスパムメール対策Ver3
