RFC 7505: Null MX — ドメインのサービスなし
ELI5: 一部の家にはメールボックスがありません。メールを受け取りたくないからです。Null MXの前は、郵便配達人はまだドアまで歩き、ノックし、待ち、返事がなく、戻ってきました — 誰のための時間を浪費しました。Null MXは芝生の標識で「ここにメールボックスはありません。気にしないでください。」と言っています。配達人は標識を見てすぐに先に進みます。
なぜこれが存在するのか
すべてのドメインがメールを受け取るわけではありません。純粋にウェブサイト、API、CDN、またはブランド保護登録に使用されるドメインは、受信メールが必要ありません。しかしRFC 7505より前は、「このドメインはメールを受け付けない」ということをDNSで明確に宣言する方法がありませんでした。
明示的な信号がない場合、メール送信サーバーがメール受信ドメイン宛のメールに遭遇すると、次のようなことが起こります。
- A/AAAAレコードにフォールバックします。 RFC 5321に従い、MXレコードが存在しない場合、送信者はドメインのAまたはAAAAアドレスへの配信を試みます。この接続試行は失敗します(SMTPサーバーはリッスンしていません)が、タイムアウト後のみです。通常30秒以上かかります。
- バックスキャッターを生成します。 スパマーがメール受信ドメインで差出人アドレスを偽造した場合、バウンススパム通知(DSN)は偽造されたアドレスに送信されます。ドメインのAレコードはTCP接続を受け入れます(ウェブサーバーです)が、SMTP会話は失敗します。送信サーバーは数時間から数日間、再試行をキューに入れます。
- リソースを浪費します。 失敗した配信試行のたびに、DNS クエリ、TCP接続、および送信サーバーのキュースロットが消費されます。
RFC 7505はNull MXレコードを導入しています。設定値0で.(ルートドメイン)をターゲットとする単一のMXエントリです。これは送信サーバーに「このドメインはメールサービスを持っていません。試さないでください」と伝えます。
仕組み
Null MXレコード
; Null MX — no-mail.example.comがメールを受け付けないことを宣言
no-mail.example.com. IN MX 0 .
レコードには2つの定義的な特性があります。
- 設定値0:最低の優先度。このレコードが最初に(そして唯一のMXなので最後に)処理されることを保証します。
-
ターゲット
.(ドット): DNSルートラベル。これは有効なホスト名ではなく、IPアドレスに解決することはできません。DNSの/dev/nullと同等です。
送信者の動作
送信サーバーが受信者ドメインのMXレコードを検索してNull MXを見つけた場合:
.ターゲットをNull MXとして認識します。- SMTP接続を試みずに、即座に永続的な失敗(5.1.0 — 「その他のアドレスステータス」)を生成します。
- 送信者は元の送信者に対してバウンスを返します(またはメッセージ自体がバウンスの場合は破棄します)。
# Null MXに遭遇した場合、送信サーバーが行うこと:
# 1. DNSルックアップ
dig MX no-mail.example.com
no-mail.example.com. IN MX 0 .
# 2. 即座の拒否 — SMTP接続は試みられない
# ステータスコード5.1.0で生成されたDSN:
550 5.1.0 <user@no-mail.example.com>: Domain does not accept mail
対比:Null MXなし
Null MXがない場合、MXレコードがないドメインにメールが送信されたときの動作です:
# DNSルックアップ — MXレコードが見つからない
dig MX web-only.example.com
(no answer)
# RFC 5321フォールバック:Aレコードを試す
dig A web-only.example.com
web-only.example.com. IN A 93.184.216.34
# ウェブサーバーへのSMTP接続を試みる
telnet 93.184.216.34 25
(接続拒否または30秒以上のタイムアウト後)
# 再試行のためにキューに入れ、15分後、1時間後、4時間後に再度試す...
# 最終的に1~5日後にあきらめてバウンスする
主要な技術的詳細
Null MXの規則
- Null MXは、そのドメインの唯一のMXレコードである必要があります。Null MXと実際のMXレコードを混在させることはできません。
- 設定値は0である必要があります。
- ターゲットは正確に
.(単一のドット、DNSルート)である必要があります。 - 送信者がNull MXに遭遇した場合、A/AAAAレコードにフォールバックしてはいけません。Null MXは決定的です。
SPFとDMARCとの組み合わせ
メールを送受信しないドメインの場合、Null MXは完全な「メールなし」DNS設定の一部である必要があります:
; ドメインの完全な「メールなし」DNS設定
; 1. Null MX — 受信メールを即座に拒否
no-mail.example.com. IN MX 0 .
; 2. SPF — サーバーは送信を許可されていない
no-mail.example.com. IN TXT "v=spf1 -all"
; 3. DMARC — このドメインを名乗るものはすべて拒否
_dmarc.no-mail.example.com. IN TXT "v=DMARC1; p=reject; sp=reject; rua=mailto:dmarc@example.com"
; 4. 空のDKIMキー(オプション、署名がないことを示す)
*._domainkey.no-mail.example.com. IN TXT "v=DKIM1; p="
この組み合わせは包括的な保護を提供します。Null MXは受信配信を停止し、SPF -allは受信者に偽装された送信メールを拒否するよう指示し、DMARC p=rejectはレポートでポリシーを実施します。
SMTP応答コード
| ステータス | コード | 意味 |
|---|---|---|
5.1.0 |
550 | その他のアドレスステータス — ドメインはメールを受け付けない(Null MX) |
5.1.2 |
550 | 不正な宛先システムアドレス — 一部の実装が使用する別のコード |
5.1.10 |
550 | 受信者アドレスはnull MXです(RFC 7505で特別に定義) |
SMTP VRFYおよびEXPNへの影響
Null MXドメインのアドレスの確認または展開を求められた場合、サーバーは永続的な失敗を返す必要があります。メールを受け付けないドメインには有効な受信者アドレスは存在しません。
よくある間違い
-
Null MXと実際のMXレコードを混在させます。 Null MXは唯一のMXレコードである必要があります。
MX 0 .をMX 10 mail.example.comと並べて追加すると、無効な設定になります。一部のリゾルバーはNull MXを無視する可能性があります。他のリゾルバーはすべてのメールを拒否する可能性があります。 - メールを送信するドメインでNull MXを使用します。 Null MXは受信メールのみに影響します。ただし、多くのサービスでは同じドメインを送受信に使用します。送信ドメインでNull MXを設定した場合、バウンス、配信ステータス通知、またはメッセージへの返信を受け取りません。
-
SPFとDMARCを忘れます。 Null MXは受信配信を防ぎますが、誰かがドメインを送信者として偽装することを防ぐことはできません。常にNull MXを
v=spf1 -allおよびv=DMARC1; p=rejectと組み合わせてください。 -
MX 0 localhostをNull MXの代わりに使用します。 一部の管理者は、.の代わりに偽のホスト名を使用します。これはNull MXとしては機能しません。送信者は「localhost」の解決を試み、独自のループバックインターフェイスに接続して、メールループを作成する可能性があります。 -
サブドメインに適用しません。
example.comに適切なMXレコードがあるがunused.example.comにない場合、サブドメインで明示的にNull MXを設定します。サブドメインは親ドメインからMXレコードを継承しません。 - すべての送信者がNull MXをサポートしていると仮定しています。 RFC 7505は主要なMTA(Postfix、Exim、sendmail、Exchange)によってよくサポートされていますが、一部の古いまたはニッチなシステムでは認識されず、代わりにA/AAAAルックアップにフォールバックする可能性があります。
配信可能性への影響
- より速いバウンス処理。 送信者がNull MXに遭遇すると、数時間または数日間キューに入れられるのではなく、即座にバウンスします。これは送信インフラのキュー圧力を軽減し、元の送信者にはより迅速なフィードバックを提供します。
- バックスキャッターを排除します。 Null MXドメインで差出人アドレスを偽造するスパマーは、配信試行をトリガーしません。これにより、ドメインが方向を誤ったバウンスに埋もれるのを防ぎ、送信サーバーが配信不可能なバックスキャッターにリソースを浪費するのを防ぎます。
- 駐車されたドメインのブランド保護。 複数のドメインを登録してブランド保護を行う組織は、使用されていないすべてのドメインにNull MX + SPF + DMARCを設定して、フィッシングに悪用されるのを防ぐことができます。
- DNSとネットワーク負荷を削減します。 Null MXがない場合、送信サーバーは複数時間にわたって複数の接続試行を行い、その後あきらめる可能性があります。Null MXは単一のDNSクエリですべての試行を排除します。
- クリーンな送信インフラ。 メールサービスプロバイダーの場合、Null MXは送信キューの配信不可能なメールの量を削減し、正当な配信にリソースを解放し、全体的なスループットを改善します。