このドキュメントがカバーする話題:
スパマーやワームが送信者アドレスを騙ってメールを送信すると、 罪のないサーバは不達メールの通知であふれてしまいます。これは後方散乱 (backscatter) メールと呼ばれており、システムがあふれればすぐに わかるでしょう。
マシンがランダムなアドレス宛の後方散乱メールを受け取る場合には、 LOCAL_RECIPIENT_README や STANDARD_CONFIGURATION_README ドキュメントに書かれているように、存在しない受信者宛のメールを全て 拒否するように Postfix を設定します。
Postfix 2.0 以前が動いている場合は、SMTP サーバの "拒否する前に 一時停止する" 機能を無効にしてください。システムに負荷がかかっている 場合は、時間を無駄にすべきではありません。
/etc/postfix/main.cf: # Postfix 2.1 以降では不要です。 smtpd_error_sleep_time = 0
後方散乱メールが "知らない受信者" バリアを超えてしまう場合でも、 まだ落胆する必要はありません。多くのメールシステムは親切にも不達通知の 中に配送できないメールのメッセージヘッダを添付します。これらの メッセージヘッダには、騙られたメールを認識してブロックするために使える 情報が含まれています。
私のEメールアドレスは "wietse@porcupine.org" ですが、私のメール システムは全て SMTP HELO コマンドで自分自身を "hostname.porcupine.org" と通知します。そのため、戻ってきたメールが
Received: from porcupine.org ...
のような Received メッセージヘッダを持っている場合、これはほぼ 間違いなく騙られたメールであるとわかります (ほぼ; 問題点は次の セクションを参照してください)。本当に私のシステムによって 送られたメールは次のように見えます:
Received: from hostname.porcupine.org ...
同様な理由で、以下のメッセージヘッダは騙られた結果である可能性が 非常に高いです:
Received: from host.example.com ([1.2.3.4] helo=porcupine.org) ... Received: from [1.2.3.4] (port=12345 helo=porcupine.org) ... Received: from host.example.com (HELO porcupine.org) ... Received: from host.example.com (EHLO porcupine.org) ...
他には、偽物の兆候は Message-ID: ヘッダによく現れます。私のシステムは <stuff@hostname.porcupine.org> という Message-ID: を 生成します。以下、特に1つ目は偽物です:
Message-ID: <1cb479435d8eb9.2beb1.qmail@porcupine.org> Message-ID: <yulszqocfzsficvzzju@porcupine.org>
このような後方散乱をブロックするため、私は次のような header_checks および body_checks パターンを 使っています:
/etc/postfix/main.cf: header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks /etc/postfix/header_checks: /^Received: +from +(porcupine\.org) +/ reject forged client name in Received: header: $1 /^Received: +from +[^ ]+ +\(([^ ]+ +[he]+lo=|[he]+lo +)(porcupine\.org)\)/ reject forged client name in Received: header: $2 /^Message-ID:.*@(porcupine\.org)/ reject forged domain name in Message-ID: header: $1 /etc/postfix/body_checks: /^[> ]*Received: +from +(porcupine\.org) / reject forged client name in Received: header: $1 /^[> ]*Received: +from +[^ ]+ +\(([^ ]+ +[he]+lo=|[he]+lo +)(porcupine\.org)\)/ reject forged client name in Received: header: $2 /^[> ]*Message-ID:.*@(porcupine\.org)/ reject forged domain name in Message-ID: header: $1
注意:
この例は教育のために簡単にしています。実際には私のパターンは "(domain|domain|...)" のように複数のドメイン名を列挙して います。
"\." は "." という文字そのものにマッチ します。"\" がないと、"." はあらゆる文字にマッチ します。
"\(" と "\)" は "(" および ")" という文字そのものにマッチします。"\" が ないと、"(" と ")" はグルーピング演算子になります。
警告
Netscape Messenger (や聞くところでは Mozilla) は送信者アドレスの ドメイン部分と同じ HELO 名を送ります。このようなクライアントがいる場合、 上記のパターンは正しいEメールをブロックしてしまいます。
私のネットワークには1台だけそのようなマシンがあるので、そのメールを ブロックしてしまわないように、メールを user@hostname.porcupine.org として送るようにマシンを設定しています。Postfix サーバ上でカノニカル マッピングでこの一時的なアドレスを user@porcupine.org に変えています。
/etc/postfix/main.cf: canonical_maps = hash:/etc/postfix/canonical /etc/postfix/canonical: @hostname.porcupine.org @porcupine.org
もちろんこれは、このような HELO コマンドを送るシステムが非常に 少なく、そのホスト上のユーザに全くメールを送る必要がない場合にのみ 実用的です。
他には、 ADDRESS_REWRITING_README ドキュメントに書かれているように、アドレスマスカレードで "hostname.porcupine.org" からホスト名を取り除く方法もあります。
/etc/postfix/main.cf: header_checks = regexp:/etc/postfix/header_checks body_checks = regexp:/etc/postfix/body_checks /etc/postfix/header_checks: /^(From|Return-Path):.*[[:<:]](user@domain\.tld)[[:>:]]/ reject forged sender address in $1: header: $2 /etc/postfix/body_checks: /^[> ]*(From|Return-Path):.*[[:<:]](user@domain\.tld)[[:>:]]/ reject forged sender address in $1: header: $2
注意:
この例は教育のために簡単にしています。実際には私のパターンは "(user1@domain1\.tld|user2@domain2\.tld)" のように複数の Eメールアドレスを列挙しています。
[[:<:]] および [[:>:]] はそれぞれ 単語の最初と最後にマッチします。システムによっては代わりに "\<" と "\>" を指定する必要があります。 詳細はシステムのドキュメントを参照してください。
"\." は "." という文字そのものにマッチ します。"\" がないと、"." はあらゆる文字にマッチ します。
それ以外に騙られた兆候が Received: ヘッダの HELO ホストまたは ドメイン名の隣にある IP アドレスに見つかるかもしれません。しかしこの 情報は注意して使わなければいけません。メールサーバにはネットワーク アドレス変換器の背後にあるものもあり、正しいクライアント IP アドレスが 見えない場合があります。
簡単に認識できる騙りを全てなくしても、後方散乱メールの一つの カテゴリが残ります。それはウィルススキャナソフトウェアからの通知です。 残念ながら、ウィルススキャナソフトウェアにはウィルスが送信者アドレスを 騙ることを知らないものがあります。さらに悪いことに、そのソフトウェアは メール配送問題を報告する方法を知らないため、騙られたことを認識するための 上記のテクニックが使えません。
ウィルススキャナメールの認識は、多くの種類のレポートフォーマットが あるため、エラーになりがちな処理です。以下はメッセージヘッダパターンの ほんのわずかな例です。ウィルス通知メールを認識するヘッダおよび本体行 パターンの豊富なコレクションは http://www.dkuug.dk/keld/virus/ もしくは http://www.t29.dk/antiantivirus.txt を参照してください。
/etc/postfix/header_checks: /^Subject: *Your email contains VIRUSES/ DISCARD virus notification /^Content-Disposition:.*VIRUS1_DETECTED_AND_REMOVED/ DISCARD virus notification /^Content-Disposition:.*VirusWarning.txt/ DISCARD virus notification
ウィルスや spam スキャナのオペレータへのお願い: 騙られた送信者 アドレスにメールを返送することで、状況を悪化させないでください。 無実な人々を苦しめているだけですから。送信者と称するアドレスにメールを 返さなければいけないのであれば、送信者が偽装を防げるようにメッセージ ヘッダ全体を返してください。