
自作サーバーでWebサイトやメールサーバーを運用する際、必ずお世話になるDNSの「A」「AAAA」「CNAME」レコード。
「IPアドレスが変わった時に管理がラクだから、全部CNAMEで親ドメインにまとめちゃおう!」
…と設定したくなる気持ち、めちゃくちゃ分かります。しかし、メールサーバー(MXやmailホスト)で不用意にCNAMEを使うと、メールが届かなくなったり通信が不安定になったりする深刻な落とし穴が存在します。
今回は、実体験をもとに A / AAAA / CNAME の決定的な違い と、なぜメールサーバーは直貼り(A/AAAA)にすべきなのか を分かりやすく解説します!
1. そもそも「A」「AAAA」「CNAME」は何が違う?
まずは基本のおさらいです。それぞれの役割を例えると以下のようになります。
| レコード | 設定対象 | 例 | イメージ |
| A レコード | IPv4 アドレス | 118.27.203.45 | 「この住所(IPv4)に住んでいます」 |
| AAAA レコード | IPv6 アドレス | 2001:db8:1234:... | 「この住所(IPv6)に住んでいます」 |
| CNAME レコード | 別のドメイン名 | test-site.online | 「〇〇さんと同じ住所に住んでいます」 |
CNAMEは、IPアドレスを直接書くのではなく「あだ名(エイリアス)」を作って本名(親ドメイン)を参照させる仕組みです。
2. Webサイト(HTTP/HTTPS)なら CNAME が最強の理由
Webサイトのサブドメイン(www や blog など)では、CNAMEを使うのが圧倒的に便利です。
- 管理がめちゃくちゃラク:サーバーのIPアドレスが変わった時、親ドメイン(
example.com)の A / AAAA レコードを1箇所書き換えるだけで、CNAMEで紐づけた全てのサブドメインが一括で新しいIPへ更新されます。 - 親ドメインを強化すると子も進化する:親ドメインに AAAA(IPv6)を追加すれば、CNAMEでぶら下がっているサブドメインも自動的にIPv6対応になります。
3. なぜメールサーバーで CNAME を使うのは危険なのか?
「じゃあメール用ホスト(mail.test-site.online)もCNAMEでいいじゃん」となりがちですが、メール通信では以下の3つのリスクが生じます。
① RFC(標準規格)違反によるメール不達リスク
インターネットのメール規格(RFC 2181 / RFC 5321)では、「MXレコードの参照先(ホスト名)に CNAME を使ってはならず、直接 A / AAAA レコードを指さなければならない」 と明確に定められています。
Gmailなどの賢いシステムは気を利かせて届けてくれることもありますが、世界中にある古いメールサーバーの中には「MXの先がCNAMEだからルール違反!」と判定してエラー(Bounce)で弾く不器用なサーバーが存在します。
② 名前解決の2度手間(通信の遅延・IPv4へのフォールバック)
CNAMEを使うと、「mail のIPを調べる ➔ CNAMEだから親の test-site.online を調べる」という2重の問い合わせ(オーバーヘッド)が発生します。
送信側のシステム(Happy Eyeballs等)の判定タイミングによっては、DNS応答のわずかなタイムラグにより、本来使いたかった IPv6(AAAA)ではなく IPv4(A)が優先して選ばれてしまう といった挙動の不一致が起こりやすくなります。
③ SPF認証の「10回制限」を無駄に消費する
メールの送信元偽装を防ぐ「SPFレコード」の検証時、CNAMEの参照が挟まるとDNSルックアップ回数制限(SPFは最大10回まで)を1回無駄に消費してしまいます。
4. 結論:こう使い分けるのが正解!
DNSレコードを組み立てる時は、以下のルールで使い分けるのがベストプラクティスです。
- Webサイト・一般的なサブドメイン(
www,blog,info等):
👉CNAMEを使う(IP変更時のメンテナンス性を重視) - メールサーバー(MXレコードの宛先・
mailホスト):
👉AとAAAAを直接貼る(直貼り)(配送の確実性と通信速度を最優先)
まとめ
IP変更時にA/AAAAレコードを書き換える手間が1つ増えたとしても、メールの不達事故をゼロにし、SPF/DKIM/DMARCを100%安定して通過させるためには「直貼り」が絶対の正解です。
インフラ構築やDNS設定で迷ったら、「WebはCNAME、メールは直貼り」と覚えておきましょう!


コメント