MXレコードとは
MX(Mail Exchange)レコードは、ドメインに代わってメールを受信するメールサーバーを指定するDNSレコードです。誰かが[email protected]へメールを送ると、送信側メールサーバーはexample.comのMXレコードを調べ、メッセージの配送先を確認します。
MXレコードの仕組み
メール配送は次のように進みます。
1. 送信者がメールを作成する: [email protected]宛てに作成する
2. 送信者のサーバーが問い合わせる: DNSでexample.comのMXレコードを調べる
3. DNSが返す: 優先度付きのMXレコードを1件以上返す
4. 送信者が接続する: 最優先のメールサーバーへ接続する
5. 利用できない場合: 次の優先度のサーバーを試す
6. 配送または再試行待ち: メールを配送するか、再試行のためキューに入れる
MXレコードの形式
example.com. IN MX 10 mail.example.com.
example.com. IN MX 20 mail-backup.example.com.
構成要素:
- example.com. - メールを受信するドメイン
- IN MX - レコード種別
- 10 - 優先度(数値が小さいほど優先)
- mail.example.com. - メールサーバーのホスト名
優先度の数値
優先度はサーバーを試す順序を決めます。
- 10 - プライマリメールサーバー(最初に試す)
- 20 - セカンダリ(プライマリが失敗した場合のフォールバック)
- 30 - ターシャリ(最後の手段)
数値が小さいほど優先度が高くなります。後からサーバーを挿入できるよう、10刻みを使う構成が多くあります。
よくあるMX構成
自前ホスティングのメール
@ IN MX 10 mail.example.com.
mail IN A 203.0.113.50
Google Workspace(Googleの業務メール)
@ IN MX 1 aspmx.l.google.com.
@ IN MX 5 alt1.aspmx.l.google.com.
@ IN MX 5 alt2.aspmx.l.google.com.
@ IN MX 10 alt3.aspmx.l.google.com.
@ IN MX 10 alt4.aspmx.l.google.com.
Microsoft 365(業務メール)
@ IN MX 0 example-com.mail.protection.outlook.com.
Zoho Mail(メールサービス)
@ IN MX 10 mx.zoho.com.
@ IN MX 20 mx2.zoho.com.
@ IN MX 50 mx3.zoho.com.
MXレコードの要件
宛先はホスト名にする
MXレコードはIPアドレスではなくホスト名を指す必要があります。
# Correct
@ IN MX 10 mail.example.com.
# Incorrect - won't work
@ IN MX 10 203.0.113.50
宛先にA/AAAAレコードが必要
メールサーバーのホスト名はIPアドレスに解決できなければなりません。
@ IN MX 10 mail.example.com.
mail IN A 203.0.113.50
CNAMEを宛先にしない
MXレコードはCNAMEレコードを指すべきではありません(RFC 2181)。
# Avoid this
mail IN CNAME host.provider.com.
@ IN MX 10 mail.example.com.
MXレコードの確認
digを使う:dig example.com MX
; ANSWER SECTION:
example.com. 300 IN MX 10 mail.example.com.
example.com. 300 IN MX 20 mail-backup.example.com.
DomScanを使う:
curl "https://domscan.net/v1/health?domain=example.com"
# Returns hasMX: true/false in DNS details
MXレコードとメールセキュリティ
MXレコードは、次のメール認証レコードと連携します。
| レコード | 目的 |
|---|---|
| MX | 受信メールを配送する |
| SPF | 送信サーバーを認証する |
| DKIM | 送信メッセージに署名する |
| DMARC | ポリシーを適用する |
適切なメール運用と到達性のため、4種類すべてを設定してください。
MXの問題をトラブルシューティングする
MXレコードがない
MXレコードがないと、一部のサーバーはAレコードの検索にフォールバックしますが、信頼できません。明示的なMXレコードを必ず設定してください。
優先度が誤っている
バックアップサーバーの優先度が意図せず低い(数値が高い)場合、プライマリが失敗するまでメールを受信しません。
ホスト名の解決に失敗する
MXの宛先ホスト名が解決できないと、メール配送に失敗します。メールサーバーのホスト名にAレコードがあることを確認してください。
TTLの考慮
メールプロバイダーを移行するときは、伝播を速めるため事前にMXのTTLを短くし、移行後に通常のTTLへ戻します。
ベストプラクティス
1. 常にMXレコードを持つ: Aレコードへのフォールバックに頼らない
2. バックアップサーバーを設定する: 異なる優先度のMXレコードを複数使う
3. 宛先の解決を検証する: メールサーバーのホスト名にAレコードがあることを確認する
4. メール認証を導入する: MXとともにSPF、DKIM、DMARCを追加する
5. メール配送を監視する: MX設定をテストするツールを使う