17

我之前问过一个关于 MX 记录的问题(并感谢我从 SO'ers 那里得到的深思熟虑的回答)。既然这个问题已经解决了,我想退后一步,问一开始为什么会有 MX 记录。

具体来说:为什么SMTP会受到DNS的特殊对待?

我们没有 HTTP 的 HX 记录或 FTP 的 FX 记录。似乎所有其他 Internet 协议都与 DNS 的 A 记录相处得很好。事实上,关于 MX 记录的 Wikipedia 文章指出,当前的 SMTP 规范说,如果接收方不存在 MX 记录,则服务器应该使用 A 记录。它还提到了 SMTP 在 DNS 之前的世界中所做的一些调整,但那是 25 年前的事了。我们真的需要 MX 记录了吗?

4

5 回答 5

36

MX使用记录是因为 SMTP 流量需要user@domain以不同方式路由到该域的其他流量,并且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 地址的流量都会流向该 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

这种假设域中的主要记录实际上是用于 HTTP 服务的,这也是 Verisign 的SiteFinder “服务”引起与 2003 年(简要)引入时一样多的问题A的部分原因。通过拦截所有 DNS记录查找未知域并返回他们自己的地址之一,威瑞信打破了各种协议,这些协议假设如果 DNS 查找失败,他们可以故障转移到其他地址数据库机制。A

于 2008-12-22T00:57:52.310 回答
5

MX 记录背后的主要目的是能够指定机器来处理整个域的特定协议,并指定备份邮件服务器(具有不同的优先级)。这样,如果一台服务器出现故障,您仍然可以访问将电子邮件发送到该域的下一个服务器。纯 A 记录也不能做到这一点,它直接将全名映射到主机。

正如弗兰克指出的那样,现在可以使用SRV 记录(日期为 8 年前,而不是 25 年)来完成。那时还没有很多其他标准协议可以大规模使用。

于 2008-12-21T23:39:10.113 回答
2

似乎所有其他 Internet 协议都与 DNS 的 A 记录相处得很好。

好吧,SRV 记录类型适用于那些。

如果今天正在编写 SMTP,它可能会使用它。

于 2008-12-21T23:37:29.647 回答
2

除了允许指定备份交换器之外,请注意并非每个域都有自己的邮件服务器,因此有必要能够指定存在于另一个域上的邮件服务器作为交换邮件的授权,以便管理和系统消息处理可以传递给邮政主管、根或 DNS WHOIS 记录中列出的任何技术/管理联系人,即使它们在当前域中不存在。

对于 ftp 和 http,您只是不需要它,因为这些服务不会像 MX 那样启动出站连接,也不会被视为官方联系点。

于 2008-12-22T00:05:33.430 回答
2

永远不要忽视“历史原因”的解释。早在 80 年代初期,SMTP 几乎是唯一一个必须可用于映射整个站点的公开协议——DNS 查找是使用许多系统上的通用 HOSTS 文件完成的。

于 2008-12-22T00:21:55.703 回答