为什么要有MX记录?

时间:2008-12-21 23:34:24

标签: smtp dns mx-record

我之前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记录吗?

5 个答案:

答案 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文件完成的。