我们有一个在Microsoft Azure上运行的应用程序,并设置了一个CNAME记录来覆盖域名,因此我们可以拥有http://example.com的优秀网址(注意我在整个过程中用example.com替换我们的真实域名)
CNAME
mydomain.com -> mydomainapp.cloudapp.net
我们正确设置了MX和A记录,因此MX包含mailserver.example.com和一条将邮件服务器指向正确IP地址的A记录。
MX
mailserver.example.com
A
mailserver -> 198.168.111.111 (note this IP is fictitious)
一切都很好,对于大多数电子邮件但是对于某些邮件服务器(还不知道还有什么技术)他们现在使用的是CNAME而不是MX和A记录。
因此,发送到jerry@example.com的电子邮件实际发送到jerry@exampleapp.cloudapp.net,其中example.cloudapp.net是Azure上我们使用CNAME映射的域。
EMAIL TO: jerry@example.com
BECOMES: jerry@exampleapp.cloudapp.net
我能找到的唯一建议只是说没有域级CNAME或根本不使用CNAME,但当然Azure IP地址可以更改,所以我们必须使用CNAME。我们可以为www.example.com提供前缀,但肯定必须有更好的解决方案。
任何想法都非常感激。
答案 0 :(得分:4)
无法在域级别使用CNAME记录,因为CNAME是所有RR类型的别名,因此始终会导致MX,SOA,NS等的重定向查找同样。
RFC1912第2.4节的以下摘录非常清楚地说明了这一点:
不允许CNAME记录与任何其他数据共存。在
换句话说,如果suzy.podunk.xx是sue.podunk.xx的别名,那么你就是 也不能有suzy.podunk.edu的MX记录,或A记录,或者 甚至是TXT记录。特别是不要试图结合CNAME和NS
像这样的记录!:podunk.xx. IN NS ns1 IN NS ns2 IN CNAME mary mary IN A 1.2.3.4
这通常是由没有经验的管理员尝试的 允许您的域名也是主机的明显方法。然而, 像BIND这样的DNS服务器会看到CNAME并拒绝添加任何内容 该名称的其他资源。由于不允许其他记录 要与CNAME共存,NS条目将被忽略。所以一切 podunk.xx域中的主机也会被忽略!
因此不得使用mydomain.com
的CNAME记录!
因此,您必须为mydomain.com
(根据需要在MX:s和其他记录中)设置A记录,因为这是DNS方面唯一可行的解决方案。
答案 1 :(得分:2)
是的,有一个更好的解决方案 - 为您的应用使用二级域名。设为portal.mydomain.com
并使用CNAME
将portal.mydomain.com
映射到mydomainapp.cloudapp.net
并设置MX
的{{1}}记录,并将所有地址设置为形式mydomain.com
。通过这种方式,您仍然可以拥有user@mydomain.com
并且所有电子邮件仍然看起来很严肃 - mydomain.com
,而不是user@mydomain.com
。
从技术上讲,上述设置确实意味着您没有域级john1094@gmail.com
。
答案 2 :(得分:1)
好的,经过大量研究后,似乎最好的(至少在我看来)解决方案是使用A记录而不是CNAME来进行域级记录。
你可能会尖叫“什么!但IP地址是动态分配的!”。是的,但只有当您拆除部署并更换它时。只要您发布到登台并使用“交换生产和登台”选项,Windows Azure将为您保留VIP地址。这样做可以保留您的VIP地址,这样您就可以在DNS中使用A记录而不是CNAME。
有关背景信息,请参阅http://www.windowsazure.com/en-us/develop/net/common-tasks/custom-dns/。
注意MS官方线路是因为可能交换IP地址而推荐CNAME而不是A记录,但我猜他们并不考虑想要在Azure平台上运行http://mydomain.com的人。
我还找到了其他可能的解决方案,包括在您的应用程序中构建一个SMTP侦听器,该应用程序在端口25上读取邮件并将其转发回去。技术上很好,但是大锤和坚果会浮现在脑海中,加上它还有一件事要出错,当然还有一大堆资源要付钱。
答案 3 :(得分:0)
我们对根域使用A
记录,这很好,正如@Jezbers在他的回答中提到的那样。 A
记录不会破坏电子邮件。但是,CNAME
记录会影响其他记录(它允许您具有“重定向域”功能,因此foo@mydomain.com也适用于foo@mynewdomain.com)。
如果您正在寻找比SMTP侦听器更好的“解决方案”解决方案,那么您可以考虑以下事项:
在www
子域名中托管您的网站,并将CNAME
放在那里。让其他主机301重定向到www
并使用A
记录将您的根域指向此重定向网站。
不完美,但最有可能是比SMTP选项更好的选项。