我正在对我们的网站和托管进行大规模改组,将大约 10 个域名移至新服务器。为此,我必须对 DNS 进行一些更改,将所有域名指向新服务器。
如果服务器使用 CNAME 条目将所有 DNS 记录指向 IP 地址的 A 条目,而不是将所有 DNS 记录指向 IP 地址...如果这没有意义,请看一下这个:
mycompany.com
server1 A 12.34.56.78
domain1.com
@ CNAME server1.mycompany.com.
* CNAME server1.mycompany.com.
www CNAME server1.mycompany.com.
domain2.com
@ CNAME server1.mycompany.com.
* CNAME server1.mycompany.com.
www CNAME server1.mycompany.com.
domain3.com
@ CNAME server1.mycompany.com.
* CNAME server1.mycompany.com.
www CNAME server1.mycompany.com.
etc...
希望您能明白我的意思,为了保持整洁,我为服务器 IP 地址设置了一条 A 记录,并使用 CNAME 记录将所有其他域指向该记录。这意味着如果 IP 必须更改,我只需更改一次,这也意味着我可以轻松分辨出每条记录指向的位置,因为有些指向server2.mycompany.com
等等server3.mycompany.com
。
今天早上我们的电子邮件出现了问题,收件人的电子邮件服务器无法验证我们的邮件服务器,电子邮件被拒绝。我将@
我们mail.domain1.com
域名上的记录从更改CNAME server1.mycompany.com
为 IP 12.34.56.78
,电子邮件已成功发送。
问题,尽管它很好而且可读性强,但我为什么不应该使用 CNAME 指向另一个 DNS 记录呢?我相信这@
是针对域名本身(即domain1.com
)。设置为 CNAME 似乎@
会弄乱我们的电子邮件,但是对于何时应该使用它,有什么规则吗?
非常感谢,本
答案1
使用 CNAME 作为 MX 记录违反了 RFC。摘自 RFC2181 第 10.3 节:
用作 MX 资源记录值一部分的域名不能是别名。 [...] 它也可以有其他 RR,但永远不能有 CNAME RR。
在实践中它通常会起作用,但一些 MTA 知道你不应该这样做,所以假设它们在被输入一个时可以忽略你或行为不端。
答案2
- CNAME 无法指向另一个 CNAME
- PTR、SRV、NS、MX 无法指向 CNAME
- CNAME 必须没有其他记录
除 MX、NS 和 SRV 外,所有其他的都使用 CNAME。
答案3
出于性能原因,通常会避免使用 CNAME:它强制客户端向 DNS 服务器提出第二个问题,从而导致客户端的延迟更高,DNS 服务器的负载更大。