smtp - 为什么有 MX 记录?

标签 smtp dns mx-record

关闭。这个问题是off-topic .它目前不接受答案。












想改进这个问题? Update the question所以它是on-topic对于堆栈溢出。

8年前关闭。




Improve this question




我以前 asked a question regarding MX records (并感谢我从 SO'ers 收到的深思熟虑的回答)。既然这个问题已经解决了,我想退后一步,问一开始为什么会有 MX 记录。

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

我们没有 HTTP 的 HX 记录或 FTP 的 FX 记录。似乎所有其他 Internet 协议(protocol)都与 DNS 的 A 记录相处得很好。确实,Wikipedia article on MX records声明当前的 SMTP 规范说,如果接收方不存在 MX 记录,则服务器应回退到 A 记录。它还提到了 SMTP 在 DNS 之前的世界中所做的一些调整,但那是 25 年前的事了。我们真的需要 MX 记录了吗?

最佳答案

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 地址,无论使用何种协议(protocol)(除非它是使用 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 的部分原因。 “服务”引起的问题与 2003 年(简要)引入时一样多。通过拦截所有 DNS A记录未知域的查找并返回他们自己的地址之一,威瑞信打破了各种协议(protocol),这些协议(protocol)假设如果 DNS 查找失败,他们可以故障转移到其他地址数据库机制。

关于smtp - 为什么有 MX 记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/385193/

相关文章:

python - 如何通过批处理文件测试python脚本是否成功运行

google-app-engine - 如何将 Google App Engine 与我自己的裸域(不是子域)一起使用?

Java DNSLookup MX 记录列表。喜欢 MXToolBox

email - 在 php 中使用 imap 创建邮件帐户而不是邮箱

ssl - 邮件服务器的 SSL 证书无效

grails - 如何发送带有布局的电子邮件

dns - [i.][m.] HTTP 地址

php - 从域名重定向到虚线四边形托管框

python - 为什么 dnspython 模块会给出 LifetimeTimeout 错误?

.net - 使用SmtpClient发送邮件的最佳方式?