DNSのMXレコードは、そのドメイン宛のメールをどのメールサーバーが受信するかを示すDNSレコードです。
メールの受信設定確認や、Google Workspace・Microsoft 365・独自メールサーバーの切り分けでよく使われます。
MXは Mail Exchanger の略です。
たとえば example.com 宛にメールを送る場合、送信側のメールサーバーは通常、まず example.com のMXレコードを調べ、どのメールサーバーへ配送すべきかを判断します。
MXレコードには、主に次の2つの情報が入ります。
たとえば次のような設定です。
10 mail1.example.com20 mail2.example.comこの場合、数字が小さい方が優先されるため、通常は mail1.example.com が先に使われ、利用できないときに mail2.example.com が使われます。
通常、送信側メールサーバーはまずMXレコードを参照します。
ただし、MXレコードが存在しない場合でも、ドメインのAレコードまたはAAAAレコードを使って配送を試みることがあります。
そのため、MXレコードがない=必ずメール受信できないとは限りません。
ただし、実務上はメールを受信するドメインにはMXレコードを明示的に設定するのが一般的で安全です。
MXレコードの確認方法は、大きく分けると次の3つです。
実務では、次のように使い分けると分かりやすいです。
nslookup を使う方法
Windowsでも比較的使いやすい定番のコマンドです。
nslookup -type=mx example.com
または対話モードでも確認できます。
nslookup
set type=mx
example.com
表示例
example.com MX preference = 10, mail exchanger = mail1.example.com
example.com MX preference = 20, mail exchanger = mail2.example.com
見方
MX preference = 10mail exchanger = mail1.example.comdig は、より詳細にDNS情報を確認したいときに便利です。
MacやLinuxでよく使われます。
dig example.com MX
簡潔に表示したい場合は、次のようにします。
dig example.com MX +short
表示例
10 mail1.example.com.
20 mail2.example.com.
補足
末尾の . は、完全修飾ドメイン名(FQDN)を表しており、正常な表示です。
Linux環境では host コマンドでも確認できます。
host -t MX example.com
表示例
example.com mail is handled by 10 mail1.example.com.
example.com mail is handled by 20 mail2.example.com.
コマンドを使わずに確認したい場合は、DNS確認サイトでドメイン名を入力し、レコードタイプに MX を指定して調べる方法があります。
DNS管理サービスの管理画面で、設定されているMXレコードそのものを確認する方法です。
たとえば、次のようなサービスで確認できます。
管理画面では一般的に、次のような項目で表示されます。
MX@ または空欄、あるいは対象サブドメインmail.example.com10管理画面で正しく設定されていても、外部からすぐ同じように見えるとは限りません。
DNS変更後は、必ず外部からの確認も行うのが安全です。
たとえば example.com のMXレコードを確認するときは、次の順番で見ると整理しやすいです。
まず、意図したMXレコードが登録されているか確認します。
nslookup -type=mx example.com
または
dig example.com MX +short
ここで、実際に公開されているMXレコードが見えます。
たとえばMXが mail.example.com なら、そのホスト名が正しくA/AAAAレコードに解決できるか確認します。
dig mail.example.com A +short
dig mail.example.com AAAA +short
または
nslookup mail.example.com
これは非常に重要です。
MXレコードの値にはIPアドレスではなく、メールサーバーを表すホスト名(FQDN)を設定します。
そのホスト名が正しく名前解決できなければ、メール配送に支障が出る可能性があります。
まず、対象ドメインにMXレコードがあるか確認します。
ただし前述のとおり、MXがなくてもA/AAAAへの配送が試されることはあります。
それでも、実務ではMXレコードを明示的に設定しておくのが一般的です。
優先度は数字が小さい方が高優先です。
例
1 mail.primary.example.com5 mail.backup.example.comこの場合は mail.primary.example.com が優先されます。
正しい例
mail.example.com避けるべき例
192.0.2.10MXレコードには、IPアドレスではなくホスト名を指定します。
MXの向き先であるホスト名が、AレコードまたはAAAAレコードに解決できることを確認します。
これも見落とされやすい重要ポイントです。
実務上、MXの向き先ホスト名にはCNAMEを使わず、直接A/AAAAへ解決される名前を使うのが基本です。
たとえば、MXが mail.example.com を向いているなら、その mail.example.com 自体がCNAMEではなく、直接A/AAAAを持っている状態が望ましいです。
メールサービス移行時によくあるミスです。
たとえばGoogle WorkspaceやMicrosoft 365へ移行したのに、旧メールサーバーのMXが残っていると、メールが想定外のサーバーへ配送される原因になります。
TTLは、DNS情報をどれくらいキャッシュしてよいかを示す値です。
TTLが長い場合、古いDNS情報がキャッシュに残りやすく、その結果として変更後もしばらく古い情報が参照されることがあります。
つまり、TTLそのものが反映を遅らせるというより、キャッシュの影響で切り替えがすぐに見えないと考えると正確です。
サブドメインに対してメール受信設定がある場合は、そのサブドメインを指定して確認します。
dig sub.example.com MX +short
または
nslookup -type=mx sub.example.com
ドメインとサブドメインでは、メール受信設定が別になっていることがあるため、確認対象を正確に指定することが大切です。
考えられる原因は次のようなものです。
考えられる原因は次の通りです。
ここは重要です。
MXレコードの確認だけで、メール受信が正常だとは断定できません。
MX確認で分かるのは、主に次の点です。
一方で、次のような問題はMX確認だけでは分かりません。
つまり、MXはDNS上の配送先情報を確認するものであり、実際のメールサービスの正常動作までは保証しないという点を押さえておく必要があります。
メール関連では、MXだけでなく次のレコードも重要です。
MXが向いているホスト名の実際の接続先を示します。
主に送信元サーバーの正当性を示すためのTXTレコードです。
送信メールの電子署名検証に使う公開鍵情報です。
SPFやDKIMの認証失敗時の扱いや、レポート方針を定義します。
整理すると、次のように考えると分かりやすいです。
nslookup -type=mx example.com
dig example.com MX +short
dig mail.example.com A +short
dig mail.example.com AAAA +short
dig example.com MX
たとえば example.com のMXを確認した結果が次の通りだったとします。
dig example.com MX +short
結果
10 mail.example.com.
次に、MX先ホストが正しく解決できるか確認します。
dig mail.example.com A +short
結果
203.0.113.10
この場合は、次のように読みます。
example.com 宛メールはmail.example.com に配送され203.0.113.10 に解決されるこの状態であれば、少なくともDNS上はメール受信先が定義されていると判断できます。
MXレコード確認で特に重要なのは、次のポイントです。
そして、最後に大事なのは、MX確認はあくまでDNS設定の確認であり、メールサーバー自体の正常性確認とは別という点です。
以上、DNSのMXレコードの確認方法についてでした。
最後までお読みいただき、ありがとうございました。