MX(Mail Exchange)レコードは、電子メールの配送先を指定するDNSレコードである。しかし、実際の運用ではMXレコードのターゲットにCNAME(Canonical Name)レコードを指定するケースが見受けられる。これはRFCの規定に反しているため、メール配送の信頼性に影響を及ぼす可能性がある。本記事では、MXレコードとCNAMEの関係、および関連するRFCの規定について解説する。
MXレコードは、メールサーバーのホスト名を指定し、クライアントはこのホスト名を解決してメール配送を行う。一般的なMXレコードの設定例は以下の通りである。
example.com. MX 10 mail.example.com.
mail.example.com. A 192.0.2.1
この設定では、example.com
宛のメールは mail.example.com
に配送され、mail.example.com
はAレコードによりIPアドレス 192.0.2.1
に解決される。
一方で、mail.example.com
にCNAMEを設定すると、以下のようになる。
example.com. MX 10 mail.example.com.
mail.example.com. CNAME host.example.net.
host.example.net. A 192.0.2.1
このような設定はRFC上で禁止されており、正しい動作を保証できない。
MXレコードとCNAMEの関係について言及している主なRFCは以下の通りである。
- CNAMEの制限について述べられており、CNAMEを持つホストが他のリソースレコード(MX、NS、SOAなど)を持つことは禁止されている。
- 該当部分:
If a CNAME record is present at a node, no other data should be present; this ensures that the data for a canonical name and its aliases cannot be different. (CNAMEレコードが存在するノードには他のデータが存在してはならない。)
- MXレコードのターゲットにはCNAMEを指定できない ことを明確化している。
- 該当部分:
The domain name used as the value of a NS resource record, or part of the value of an MX resource record must not be an alias. (NSレコードの値として使用されるドメイン名、またはMXレコードの値の一部として使用されるドメイン名はエイリアス(CNAME)であってはならない。)
- SMTPの仕様として、MXレコードのターゲットをA/AAAAレコードに解決することを前提としている。
- CNAMEを許容する記述はなく、メール配送の際にはAまたはAAAAレコードに変換されることが求められる。
RFCに違反しているにもかかわらず、実際にはMXレコードのターゲットにCNAMEを指定しているケースが存在する。これは以下の理由による。
- DNS管理の簡略化: 共通のメールサーバーを異なるドメインで利用する際にCNAMEで一元管理したい。
- MTA(Mail Transfer Agent)の実装の違い: 一部のMTAはCNAMEを解決して配送を試みる。
- DNSプロバイダの許容設定: 一部のDNSホスティングサービスではCNAME指定を制限していない。
しかし、RFC違反の設定には以下のリスクがある。
- メール配送の失敗: 一部の厳格なMTAはCNAMEを解決しないため、メールが届かない可能性がある。
- DNSルックアップの遅延: CNAMEの解決が追加されるため、MXレコードの解決に余分なクエリが発生する。
- 将来の互換性問題: MTAやDNSの仕様変更により、現在動作している設定が突然機能しなくなる可能性がある。
RFC準拠のため、MXレコードのターゲットには直接A/AAAAレコードに解決できるホスト名を指定することが推奨される。
example.com. MX 10 mail.example.com.
mail.example.com. A 192.0.2.1
CNAMEを回避するため、DNS管理の工夫として以下の方法を検討できる。
- A/AAAAレコードの直接指定:
mail.example.com
の代わりにmail1.example.com
,mail2.example.com
などをAレコードで定義。 - ロードバランサの活用: 複数のメールサーバーを負荷分散したい場合は、DNSレベルではなくロードバランサで対応。
- SPFやDKIMなどのメール認証技術の活用: 正しく配送されるための追加対策を実施。
- MXレコードのターゲットにCNAMEを指定することはRFC上禁止されている。
- 関連するRFC(1034, 2181, 5321)では、MXレコードのターゲットはA/AAAAレコードであるべきと規定されている。
- 現実的にはCNAMEを指定しているケースもあるが、メール配送の信頼性に悪影響を及ぼす可能性があるため、避けるべきである。
- RFC 1034 - "Domain Names - Concepts and Facilities" (https://datatracker.ietf.org/doc/html/rfc1034)
- RFC 2181 - "Clarifications to the DNS Specification" (https://datatracker.ietf.org/doc/html/rfc2181)
- RFC 5321 - "Simple Mail Transfer Protocol" (https://datatracker.ietf.org/doc/html/rfc5321)