Null MXとは?メールを受信しないドメインの設定値となりすまし対策

結論 — Null MXは「このドメインでメールを受信しない」という宣言です
Null MXは、MXレコードの優先度に 0、ホスト名に .(ドット1つ)を指定した設定です。RFC 7505が定めています。
example.jp. IN MX 0 .
この設定は「このドメイン宛のメールを受け取るサーバーは存在しません」という意味を持ちます。送る側は、最初の配送の試みでその事実を知ることができます。
先に、よくある誤解を1つ解いておきます。Null MXを設定しても、第三者があなたのドメイン名を差出人(From)に書いてメールを送ることは止められません。Null MXが扱うのは受信側の話で、差出人のなりすましは別の設定で対処します。この2つは目的が違うため、片方を設定したからもう片方が要らなくなる、という関係にはありません。
この記事では、次の3つを分けて説明します。
| 設定 | 何を対象にするか | 言えること |
|---|---|---|
| Null MX | 受信 | このドメイン宛のメールを受け取らないと示す |
SPFの -all |
エンベロープの送信元、HELO | 正規の送信元が存在しないと宣言する |
DMARCの p=reject |
Fromに書かれたドメイン | 認証に失敗したメールを拒否するよう受信側に求める |
設定してよいドメインと、設定してはいけないドメイン
Null MXは、誤って設定すると受信を止めてしまいます。設定値を見る前に、こちらを先に確認してください。
設定してよいのは、次のすべてに当てはまる場合です
- 問い合わせ先や転送先として、このドメインでメールを受け取っていない
- Webサイトの問い合わせフォーム、パスワード再設定、監視の通知などから、このドメインを差出人にしてメールを送っていない
- 外部のサービス(メール配信サービス、SaaSの通知、決済サービスなど)が、このドメインを差出人に使っていない
- 将来的にもこのドメインでメールを使う予定がない
購入したまま使っていないドメイン、Webサイトのリダイレクト専用に持っているドメイン、商標防衛のために押さえているドメインなどが、典型的な対象です。
設定してはいけない場合
メールを送っているドメインには設定しないでください。 これはRFC 7505 §4.2が明示的に書いています。
Hence, mail systems SHOULD NOT publish a null MX record for domains that they use in RFC5321.MailFrom or RFC5322.From addresses. If a system nonetheless does so, it risks having its mail rejected. (したがってメールシステムは、RFC5321.MailFromまたはRFC5322.Fromのアドレスに使うドメインについて、Null MXレコードを公開すべきではありません。それでも公開した場合、そのメールが拒否される危険を負うことになります)
理由は、多くの受信システムが「返信先として使えないアドレスからのメール」を迷惑メールの兆候として扱うためです。差出人のドメインがメールを受け取れないと分かると、拒否される可能性があります。
見落としやすいのは、自分でメールソフトを使っていなくても送信している場合です。問い合わせフォームの自動返信、サーバーの障害通知、会員登録の確認メールなどは、いずれも送信にあたります。
受信はするが送信はしない場合
受信しているなら、Null MXは設定できません。受信用のMXレコードはそのまま残してください。
このドメインから一切メールを送っていないことが確実であれば、SPFに -all を設定できます。DMARCについては、受信したメールに返信する運用があるかどうかで判断が変わるため、別途検討してください。
MXが未設定の状態とは違います
「MXレコードを設定しなければ、メールは届かないのでは」と考えるかもしれません。実際には違います。
MXレコードが無い場合、送る側はドメインのAレコード(Webサーバーのアドレス)宛にメールを届けようとします。これはRFC 5321 §5.1が定めている動作で、暗黙のMXと呼ばれます。Webサイトを公開しているドメインでは、Aレコードが存在するため、この経路が使えてしまいます。
つまり、MXを設定していない状態は「受け取らない」ではなく「Webサーバーが受け取る先として扱われる」状態です。Null MXは、この暗黙のフォールバックを明示的に打ち消します。
SiteKensaの診断でも、この2つを分けて表示します。MXが無くAレコードがある場合は「MXレコードが無く、Webサーバー宛にメールが配送されます」という要確認の所見が出ます。Aレコードも無い場合は「MXレコードが設定されていません」という参考情報の扱いになります。
設定値と確認方法
前の節の確認が済んだ方向けに、設定値を示します。
Null MXのレコード
| 項目 | 値 |
|---|---|
| ホスト名(名前) | 空欄、または @(ドメイン本体を意味します) |
| 種別 | MX |
| 優先度 | 0 |
| 値(宛先) | .(ドット1つ) |
管理画面によっては、値の欄にドット1つだけを入力すると弾かれることがあります。その場合は、事業者のサポートに「RFC 7505のNull MXを設定したい」と問い合わせてください。
既存のMXレコードがある場合は、すべて削除してからNull MXを追加してください。RFC 7505 §3は次のように定めています。
A domain that advertises a null MX MUST NOT advertise any other MX RR. (Null MXを公開するドメインは、他のMXリソースレコードを公開してはなりません)
digで確認する
設定後、次のコマンドで確認できます。
$ dig +short MX example.jp
0 .
0 . と表示されればNull MXです。この末尾のドットは、DNSの表記としての「ルートを示すドット」ではなく、ホスト名の部分が空であることを表しています。通常のMXレコードは 10 mail.example.jp. のように表示されるため、見比べれば区別できます。
送信元のなりすまし対策は別に必要です
ここまでで、受信についての宣言は完成しています。Null MXは、受信しないという目的に対しては単体で成立する設定です。
不足するのは、別の目的である「差出人のなりすまし対策」です。第三者が info@example.jp という差出人でメールを送ることは、あなたのDNSの設定とは無関係に可能です。これを止めるには、受信する側に「このドメインからのメールは正規のものではない」と判断させる材料を与える必要があります。
SPFの -all — 正規の送信元が存在しないと宣言する
SPFは、そのドメインからメールを送ってよいサーバーを列挙する仕組みです。送信元が1つも無いことを宣言する場合、レコードは次のようになります。
| 項目 | 値 |
|---|---|
| ホスト名(名前) | 空欄、または @ |
| 種別 | TXT |
| 値 | v=spf1 -all |
RFC 7505 §4.2も、この組み合わせに触れています。
Operators of domains that do not send mail can publish Sender Policy Framework (SPF) "-all" policies to make an explicit declaration that the domains send no mail. (メールを送らないドメインの運用者は、そのドメインがメールを送らないという明示的な宣言をするために、SPFの "-all" ポリシーを公開できます)
ただし、SPFが検査するのはエンベロープの送信元(RFC5321.MailFrom)とHELOであり、受信者がメールソフトの画面で見るFromとは別の欄です。SPFは「認証が失敗した」という結果を出しますが、その結果を受けてメールをどう扱うかまでは指示しません。
DMARCの p=reject — 認証に失敗したメールの扱いを指示する
DMARCは、Fromに書かれたドメインを対象に、認証結果をどう扱うかを受信側に伝えます。メールを送らないドメインでは、認証を通るべき正規のメールが存在しないため、最も強いポリシーを最初から指定できます。
| 項目 | 値 |
|---|---|
| ホスト名(名前) | _dmarc |
| 種別 | TXT |
| 値 | v=DMARC1; p=reject |
通常、DMARCは p=none から始めて、レポートを見ながら段階的に強化します。これは、認証の設定漏れによって正規のメールが誤って止まることを避けるためです。メールを送らないドメインには止まって困る正規のメールが存在しないため、この段取りは必要ありません。
SiteKensaの診断も、この違いに応じて案内を変えています。メールを送っているドメインには p=none からの段階的な強化を勧め、Null MXやSPFの -all で送らないと宣言済みのドメインには p=reject を直接勧めます。
なお、p=reject は受信側への要請であり、強制ではありません。RFC 7489 §6.7は、受信側がポリシーとは別の判断でメールを扱うことを認めています。設定すれば必ず拒否されるとは限らない点にご留意ください。
レポート(rua)を受け取る場合の注意
DMARCには、認証結果の集計レポートを受け取る rua というタグがあります。これはRFC 7489 §6.3で任意(OPTIONAL)とされており、無くても保護は成立します。上に示した v=DMARC1; p=reject だけで、なりすまし対策としては完結します。
なりすましの試行を把握したい場合は rua を追加できますが、Null MXを設定したドメインでは注意が必要です。
1つ目に、そのドメイン宛のアドレスは指定できません。 Null MXを設定した時点で、そのドメインではメールを受け取れなくなっています。dmarc@example.jp のようなアドレスを書いても、レポートは届きません。
2つ目に、他のドメインのアドレスを指定する場合、受け取る側のドメインに許可の設定が必要です。 RFC 7489 §7.1が定めている仕組みで、受け取る側に次のようなTXTレコードを追加します。
example.jp._report._dmarc.受け取る側のドメイン. IN TXT "v=DMARC1"
この設定が無いと、レポートを送る側はそのアドレスへの送信を許可されていないと判断し、レポートは届きません。設定したのに何も届かない、という状態になりがちなので、rua を付ける場合は必ず併せて設定してください。
診断結果の読み方
SiteKensaでは、Null MXが設定されているドメインに次のように表示します。
問題なし [mx] このドメインはメールを受信しない設定です (Null MX)
MX・SPF・DMARCがいずれも未設定のドメインには、まとめて次の所見を出します。
要確認 メールを使わないドメインとして保護されていません
MX : 0 .
TXT : v=spf1 -all
TXT (_dmarc) : v=DMARC1; p=reject
この所見は、3つとも設定されていない状態を拾うためのものです。どれか1つでも設定されていれば表示されません。したがって、この所見が出ていないことは「3つとも揃っている」ことを意味しません。個々の項目の結果をあわせて確認してください。
また、SPFで送らないと宣言済みのドメインでは、DKIMに関する所見を取り下げ、「DKIMの設定は不要です」と表示します。署名する対象のメールが存在しないためです。正しく閉じたドメインに、まだ直すところがあるかのように見せないための処理です。
まとめ
- Null MXは受信についての宣言です。優先度
0、ホスト名.を設定します - メールを送っているドメインには設定しないでください。RFC 7505 §4.2が、拒否される危険があると書いています
- 差出人のなりすまし対策は別の設定です。SPFの
-allとDMARCのp=rejectが担います ruaは任意です。付ける場合は、受け取れる別ドメインのアドレスと、受け取る側での許可設定が必要です
設定後は、MXレコードの診断で確認できます。変更直後に古い値が表示される場合は、DNSが反映されないときの確認方法をご覧ください。