用語辞典・DNS・ドメイン

MXレコード

MXレコードとは

MXレコードは、あるドメイン宛てのメールを受け取るメールサーバーの名前と、その配送優先度を示すDNSレコードです。正式名称はMail Exchange record(メール・エクスチェンジ・レコード)です。

データ部分には、16ビットのpreference(プリファレンス/優先度)と、配送先となるexchange(エクスチェンジ/メールサーバー名)が入ります。送信側は利用可能なMXのうち、数値が小さいものを先に試します。

MXが指すのはIPアドレスではなくメールサーバーのホスト名です。送信側はその名前についてAAAAAを調べ、得たアドレスへSMTP接続します。

優先度で配送先名を選び、その名前のアドレスを別に調べるメール用の行き先選択と、Webの接続先選択は別
ドメイン宛てのメールが複数のMX配送先名から優先度により一つを選び、そのホスト名のIPv4またはIPv6アドレスを調べてメールサーバーへ届く図解
図1最優先のサーバーへ接続できなければ、送信側は次の優先度を試します。すべて一時的に失敗したときは、メールをキューへ残して後で再試行するのが一般的です。

MXは、優先度と配送先名の組で読む

小さい数値を先に試し、同じ数値なら同順位として扱う選んだホスト名は、A・AAAAでアドレスへ解決する
10mail-a.例.試験.最初に試す
10mail-b.例.試験.同じ優先度
20mail-backup.例.試験.前の候補が使えないとき
選んだホスト名A / AAAA接続先アドレス
図2優先度は性能点や送信割合ではありません。値が小さい候補を先に使い、同値の候補が複数あれば送信側が負荷を分けるよう選択します。

値が大きいほど優先、ではない

MXの優先設定は、数値が小さいほど優先されます。10、20、30なら10を先に試します。最優先ホストへ一時的に接続できない場合、次の値のホストへ進みます。低い優先度の予備サーバーは、最終配送先へ転送できるよう正しく構成する必要があります。

同じ優先設定のMXが複数あるときは同順位です。送信側SMTPは同値の候補を無作為化するなどして負荷を分けます。ただし、DNSへ複数書くだけでサーバー間のメールボックス同期や障害切り替えが自動構築されるわけではありません。

MXの交換先は、CNAMEではなくアドレスを持つ名前にする

MXの交換には、ホスト名を完全修飾ドメイン名で指定します。RFC 5321では、その名前はCNAMEの別名ではなく、直接AまたはAAAAへ解決できることが求められます。MXへIPアドレスを直接書くこともできません。

理由は、送信側がMXで配送先名を選んだ後、その名前をアドレスへ解決する手順が決まっているためです。不要な別名連鎖や曖昧さを避け、メール配送先として安定したホスト名を用意します。

MXがない場合と、メールを受け取らない宣言

ドメインにMXが存在しない場合、SMTPの規則ではそのドメイン名自体をimplicit MX(インプリシット・エムエックス)として扱い、AまたはAAAAを調べる後方互換の動作があります。これは「MXがなくても常にメールを受け取れる」という保証ではなく、そのアドレスでSMTPサーバーが稼働している必要があります。

メールを受け取らないことを明示するNull MX(ヌル・エムエックス)では、優先設定を0、交換をルート名の.にします。単にMXを消すと暗黙の配送が試され得るため、「受信しない」という宣言とは意味が違います。

MXは受信メールの宛先で、Webや送信元認証ではない

MXはuser@example.test宛ての受信メールをどのホストへ届けるかを示します。https://example.test/を表示するWebサーバーは、同じドメインのA・AAAAやCNAMEなどで別に決まります。MXを変更してもWebサイトの接続先は変わりません。

また、MXだけで「この送信元から来たメールは正当」と証明することはできません。送信元方針にはSPF、署名にはDKIM、認証結果に基づく扱いにはDMARCなど、別のDNSレコードとメール技術が使われます。

仕様の確認資料:RFC 1035「Domain Names — Implementation and Specification」RFC 2181「Clarifications to the DNS Specification」RFC 5321「Simple Mail Transfer Protocol」RFC 7505「Null MX」

関連用語