SiteKensa

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

公開日 更新日 メールDNSSPFDMARC独自ドメイン
受信を担うNull MX、送信元の宣言を担うSPFの-all、認証失敗時の扱いを指示するDMARCのp=rejectがそれぞれ別の対象を守ることを示す図

結論 — 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サイトのリダイレクト専用に持っているドメイン、商標防衛のために押さえているドメインなどが典型的な対象です。

設定してはいけない場合

差出人アドレス(MAIL FROM や From)に使っているドメインには設定すべきではありません(SHOULD NOT)。 これは、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レコードが無い場合、送る側は、そのドメイン名自身のアドレスレコード宛にメールを届けようとします。これは、RFC 5321 セクション5.1が定めている動作で、暗黙のMXと呼ばれます。Webサイトを公開しているドメインにはAレコードがあるので、送る側はそこへ配送を試みます。

つまり、MXを設定していない状態は、「受け取らない」ではなく「Webサーバーが受け取る先として扱われる」状態です。Null MXは、この暗黙のフォールバックを明示的に打ち消します。

SiteKensaの診断でもこの2つを分けて表示します。MXが無くAレコードがある場合は、「MXレコードが無く、Webサーバー宛にメールが配送されます」という要確認の項目が表示されます。Aレコードも無い場合は、「MXレコードが設定されていません」という参考情報の扱いになります。

このドメインでメールを受け取りたい場合、必要なのはNull MXではなく通常のMXレコードです。値は利用するメールサービスが指定するので、事業者別の設定ガイドから選んでください。設定したあとに本数や優先度の表示が出た場合は、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つも無いことを宣言する場合、レコードは、次のようになります。メールを送っているドメインで末尾の修飾子をどれにするかは別の判断になり、SPFレコードのall修飾子の違いで扱っています。

項目
ホスト名(名前) 空欄、または @
種別 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 9989 セクション5.4は、受信側がポリシーとは別の判断でメールを扱うことを認めています。設定すれば必ず拒否されるとは限らない点にご留意ください。

レポート(rua)を受け取る場合の注意

DMARCには認証結果の集計レポートを受け取る rua というタグがあります。これは、RFC 9989 セクション4.7で任意(OPTIONAL)とされています。

送信しないドメインでは報告を受け取る必要がないので、この記事では rua を付けない v=DMARC1; p=reject を勧めます。

なりすましの試行を把握したい場合は、rua を追加できますが、Null MXを設定したドメインでは注意が必要です。

1つ目に、そのドメイン宛のアドレスは、指定できません。 Null MXを設定した時点でそのドメインではメールを受け取れなくなっています。dmarc@example.jp のようなアドレスを書いてもレポートは、届きません。

2つ目に、組織ドメインが異なるアドレスを指定する場合、受け取る側のドメインに許可の設定が必要です。 RFC 9990 セクション4が定めている仕組みで、受け取る側に次のような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 セクション3)
  • 差出人アドレスに使っているドメインには設定すべきではありません(SHOULD NOT)。RFC 7505 セクション4.2が拒否される危険があると書いています
  • 差出人のなりすまし対策は、別の設定です。SPFの -all(同 セクション4.2も触れています)とDMARCの p=reject(RFC 9989 セクション4.7)が担います
  • rua は、任意です。付ける場合は、受け取れるアドレスが要ります。組織ドメインが異なるアドレスなら、受け取る側での許可設定も必要です(RFC 9990 セクション4)

設定後は、MXレコードの診断で確認できます。変更直後に古い値が表示される場合は、DNSが反映されないときの確認方法をご覧ください。

まずは全体を診断してみましょう

専門知識がなくてもいまの設定状況と具体的な対処方法をわかりやすく確認できます。

ドメイン設定を診断する

利用中のDNS事業者が分かっているなら事業者別の設定手順から直接進めます。