域名 MX 记录与 CNAME 冲突

在采用根域名作为网站的网址的时候会遇到一些小问题,如前面的文章所说,其中有一个域名的 MX 记录与 CNAME 冲突,是一个比较重要的原因,也是本站在人潮汹涌的去www化下,最后的倔强,放弃了裸域名作网址的关键,但其实现在越来越多的人已经不习惯了输入www。

一、什么时候会用到 MX 和 CNAME

  • MX:如果需要设置邮箱,让邮箱能收到邮件,就需要添加MX记录。
  • CNAME:如果需要将域名指向另一个域名,再由另一个域名提供ip地址,就需要添加CNAME记录。

如上,当我们需要用到域名邮箱的时候,如本站采用腾讯的企业邮箱,发送通知的邮箱地址为 info>oldking.net (把 > 换位 @),就需要我把网站 oldking.net 根域名的 MX 记录指向腾讯企业邮箱提供的地址。

MX 记录

用到 CNAME 的地方很多,最多的是用在网站 CDN 加速上,大部分加速服务提供的都是 CNAME 模式。

CNMAE记录

二、MX 与 CNMAE 冲突

当同时使用了 MX 和 CNAME 记录之后就会产生问题,一些严格的 NS 服务商会在你添加的时候直接不允许这样操作。如 CloudXNS 就严格按照标准,不允许同时添加 MX 和 CNAME。

MX CNAME 冲突

但是老鬼之前有个域名在 Dnspod 就是可以的,虽然会跳出提示,但是可以添加的。但是所产生的问题就是,经常收不到邮件,或者邮件不能立即到达,在老鬼的实验中有一些邮件延迟了好几个小时。这对使用企业邮箱的用户肯定造成了很大的困扰。知其然,知其所以然,原理是什么呢?

三、技术剖析以及原理

因为老鬼已经从 Dnspod 域名转出了,所以这里借用 CloudXNS 客服实验的图片。

根据 RCF 1034 标准,在 3.6.2 中指出,如果 CNAME 资源记录出现在一个域名节点,为了确保不会出现不同的解析结果,这个域名节点将不再接受其他记录值。我们来验证一下。

假设为DNS域chinatesters.cn注册了下面的两条记录(MX 与 CNAME 同时存在):

MX 10 mx.ym.163.com.

CNAME  fastweb.com.cn.

这时候我们用递归命令 dig 查询解析

同时设置MX CNAME

我们看到,不管是查询 MX 还是 CNAME 的解析,其结果都是 fastweb.com.cn. 这和我们设置并不一致,看来是这里出现的问题。但如果在递归服务器的 CNAME 记录 TTL 过期后再来做查询,只是把查询的顺序颠倒, (即先查询 MX 记录,再查询 CNAME 记录)则有可能得到期望的正确结果。

总结一下,递归 DNS 服务器在查询某个常规域名记录(非 CNAME 记录)时,如果在本地 cache 中已有该域名有对应的 CNAME 记录,则会开始用该别名记录来重启查询。上文中dig查询MX记录测试示例即对应于这种情况。

因此,即使某些域名解析系统网页上并未限制用户同时填写 CNAME 和 MX 的操作,但只要将CNAME和MX配置到一起,上述问题也一定是存在的,它会导致邮件服务偶尔出现异常。

实际上除了 CNAME 和 MX 不能共存外,已经注册了 CNAME 类型的域名记录是不能再注册除 DNSSEC 相关类型记录(RRSIG、NSEC 等)之外的任何其他类型记录(包括 MX、A、NS 等记录)。理由同上,这里就不一一做演示了。

四、解决办法,小结

当然,如果你不需要同时使用那些冲突的记录,以上问题将对你没有任何影响。

  1. 将 NS 替换成 CloudXNS 并且使用它们提供的 LINK 记录代替 CNMAE
  2. 使用二级邮箱,如可以添加 mail.oldking.net 这类的二级域名,并将这个二级域名 MX 指向邮箱服务器地址,这样得到的类似的邮箱地址为 info>mail.oldking.net
  3. 使用 Dnspod 的服务,按照 Dnspod 客服的说法,是勉强可以的,但是根据 CloudXNS 的说法,这样是不符合规定的,不过亲自测试可以收到,不过经常漏收,或者延迟几个小时收到邮件。
  4. 使用 Cloudflre 的服务,在 Cloudflare 解析的域名可以做到 CNMAE 和 MX 共存
  5. 不要同时使用 CNAME 和 MX 等,MX 与 A 记录是不冲突的

目前包括 CloudXNS 和 Dnspod 等服务商对于这个问题,都有自己的解决方案,不过都有各自的局限,比如只能所有解析都用他的,或者必须要使用他自身的 CDN 服务等,都是不完美的解决方案。基于此,本站放弃了直接使用裸域,而采用传统的 www 主站,根域名做 301 跳转到 www,虽然暂时没有上 CDN 不过为了不时之需,所以从开始就是不使用裸域了。

 

 

版权声明 作者:oldking
标题:域名 MX 记录与 CNAME 冲突
链接:https://www.oldking.net/121.html
来源:老鬼的博客(OldKing.net)
声明:如无特别声明本文即为原创文章仅代表个人观点,版权归作者所有,未经允许请勿转载,转载请保留原文链接。
THE END
分享
二维码
海报
域名 MX 记录与 CNAME 冲突
文章目录 Toggle一、什么时候会用到 MX 和 CNAME二、MX 与 CNMAE 冲突三、技术剖析以及原理四、解决办法,小结 在采用根域名作为网站的网址的时候会遇到一些……
<<上一篇
下一篇>>