我还是讲一些为什么不能这样做的原因吧:
@
abelyao 并不是说 MX 和 CNAME 不能同时在后台设置,但是请参见 RFC1912 section 2.4 ,“ A CNAME record is not allowed to coexist with any other data.”,有些 DNS 解析商为了遵守 RFC1912 就禁止你在根域下设置 CNAME ,不过实际上还是可以这样的,所以一些解析商没有禁止你在根域下设置 CNAME 。
这里有写在根域下设置 CNAME 的一些后果:
https://blog.cloudflare.com/introducing-cname-flattening-rfc-compliant-cnames-at-a-domains-root/Technically, the root could be a CNAME but the RFCs state that once a record has a CNAME it can't have any other entries associated with it: that's a problem for a root record like
example.com because it will often have an MX record (so email gets delivered), an NS record (to find out which nameserver handles the zone) and an SOA record.
也就是说设置了 CNAME 后就不能设置其它类型的记录,比如 NS 、 MX ……而你的一级域名已经在根域名下分配了 NS 记录(比如
example.com 已经在 .com 下分配到了 NS 记录 `dig @
a.gtld
-servers.net example.com ns` 可以看出),所以不该再有一个 CNAME 了。
为什么会这样?因为设置了 CNAME 后所有记录都会 “转发” 到设置的那个域名,比如我
www.ze3kr.com CNAME 到了
ze3kr.com 上,现在查
www.ze3kr.com 的 MX 和 NS 记录,全都是
ze3kr.com 上的记录。
同理,假如你把
example.com CNAME 到了
example.net 上,然后
example.com 上的 MX 、 NS 等等记录都会解析到
example.net 上。最坏的情况还不只是 MX 到了
example.net 上别人能在他的服务器上收发给你域名上的邮件,而是, NS 记录也解析到了
example.net 上,而且
example.net 上正好也设置了 NS 记录,于是你的域名本身就被别人解析走了,不只是邮箱。不过被别人解析走之后,你的
example.com 上可能就解析不到 CNAME 记录了,如此循环,你的域名可能无法再解析……不过应该现在的客户端或者是解析缓存服务器都能避免这种错误了。