我之前asked a question regarding MX records(并欣赏我从SO'ers那里得到的深思熟虑的答案)。既然问题已经解决了,我想退一步问为什么首先有MX记录。
具体来说:为什么SMTP会通过DNS获得特殊待遇?
我们没有FTP的HTTP或FX记录的HX记录。似乎所有其他互联网协议与DNS的A记录相得益彰。实际上,Wikipedia article on MX records表示当前的SMTP规范说如果接收方不存在MX记录,服务器应该回退到A记录上。它还提到了一些在DNS前世界中制作的SMTP,但那是在25年前。我们真的需要MX记录吗?
答案 0 :(得分:35)
MX
个记录,因为需要将user@domain
的SMTP流量路由到该域的其他流量,并且尚未发明SRV
个记录。
您可以在浏览器中输入http://example.com/
但没有www
前缀且仍然可以访问所需网站的现代约定实际上有点奇怪。要更详细地解释,请考虑如何设置区域以实现此无前缀访问:
$ORIGIN example.com
@ IN A 192.168.1.1
IN MX mail.example.com
www IN A 192.168.1.1
mail IN A 192.168.1.2
因此,无论使用何种协议,发送到example.com
的任何流量都会转到该IP地址(除非是使用MX记录的电子邮件)。
在实践中,所有应用程序最好使用SRV
个记录,然后我们可以一起取消特定于应用程序的前缀,并使用A记录真正的目的 - 专门将真正的主机名映射到IP地址。
如果以这种方式使用SRV记录,那么区域文件看起来就像:
$ORIGIN example.com
_http._tcp IN SRV 0 0 80 www.example.com
_smtp._tcp IN SRV 0 0 25 mail.example.com
www IN A 192.168.1.1
mail IN A 192.168.1.2
这一假设,即域中的主要A
记录实际上是针对HTTP服务的,这也是Verisign的SiteFinder“服务”引起的问题的原因之一(简要说明)通过拦截未知域的所有DNS A
记录查找并返回其中一个地址,Verisign破坏了各种协议,假设它们可以故障转移到其他地址数据库机制,如果DNS查找失败。
答案 1 :(得分:5)
MX记录背后的主要目的是能够指定处理整个域的特定协议的机器,还指定备份邮件服务器(具有不同的优先级)。这样,如果一个服务器出现故障,仍然可以到达下一个服务器,以便向该域发送电子邮件。使用普通A记录也无法做到,这些记录直接映射了主机的全名。
弗兰克指出,现在可以用SRV records(日期为8年,而不是25年)来完成。那时候没有很多其他标准协议可供大量使用。
答案 2 :(得分:2)
似乎所有其他互联网协议都与DNS'A记录相得益彰。
那么,SRV记录类型可用于那些。
如果今天正在编写SMTP,它可能会使用它。
答案 3 :(得分:2)
除了允许备份交换机的规范之外,请注意并非每个域都有自己的邮件服务器,因此必须能够指定一个存在于另一个域上的邮件服务器,以授权交换邮件,以便管理和系统消息发送给邮件管理员,root或DNS中列出的任何技术/管理联系人WHOIS记录可以传递,即使它们在当前域中不存在。
对于ftp和http,您根本不需要它,因为这些服务不会启动MX等出站连接,也不会被视为官方联系人。
答案 4 :(得分:2)
永远不要忽视“历史原因”的解释。早在80年代早期,SMTP几乎是唯一一个必须可用于映射整个站点的公共协议 - 并且DNS查找是在许多系统上使用通用HOSTS文件完成的。