Postfix 後方散乱 Howto


はじめに

このドキュメントは Postfix バージョン 2.0 以降を必要とする機能を 記述しています。

このドキュメントがカバーする話題:

後方散乱メールとは?

スパマーやワームが送信者アドレスを騙ってメールを送信すると、 罪のないサーバは不達メールの通知であふれてしまいます。これは後方散乱 (backscatter) メールと呼ばれており、システムがあふれればすぐに わかるでしょう。

ランダムな受信者アドレス宛の後方散乱メールを ブロックするには?

マシンがランダムなアドレス宛の後方散乱メールを受け取る場合には、 LOCAL_RECIPIENT_READMESTANDARD_CONFIGURATION_README ドキュメントに書かれているように、存在しない受信者宛のメールを全て 拒否するように Postfix を設定します。

Postfix 2.0 以前が動いている場合は、SMTP サーバの "拒否する前に 一時停止する" 機能を無効にしてください。システムに負荷がかかっている 場合は、時間を無駄にすべきではありません。

/etc/postfix/main.cf:
    # Postfix 2.1 以降では不要です。
    smtpd_error_sleep_time = 0

実在する受信者アドレス宛の後方散乱メールを ブロックするには?

後方散乱メールが "知らない受信者" バリアを超えてしまう場合でも、 まだ落胆する必要はありません。多くのメールシステムは親切にも不達通知の 中に配送できないメールのメッセージヘッダを添付します。これらの メッセージヘッダには、騙られたメールを認識してブロックするために使える 情報が含まれています。

騙られた HELO 情報を持つ後方散乱メールの ブロック

私の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

注意:

警告

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

注意:

騙られた他の情報を持つ後方散乱メールの ブロック

それ以外に騙られた兆候が 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 スキャナのオペレータへのお願い: 騙られた送信者 アドレスにメールを返送することで、状況を悪化させないでください。 無実な人々を苦しめているだけですから。送信者と称するアドレスにメールを 返さなければいけないのであれば、送信者が偽装を防げるようにメッセージ ヘッダ全体を返してください。