我了解您不应将MX记录直接指向IP地址,而应将其指向A记录,该记录又指向邮件服务器的IP地址。

,原则上为什么要这样做?

评论

如果可以设置MX记录,则还可以设置A记录。我在这里看不到问题。

@joshudson根本不是问题,只是我试图理解原因,而不是简单地遵循其他人的做法。

我只是在CloudFlare中尝试过。它不接受IP地址作为MX记录的值。

在添加SPF记录并进行过多查找之前,我从不关心此问题。不得不找到另一种方法来削减一些。

#1 楼

MX记录的整个思想是指定一个或多个可以接受域邮件的主机。如RFC 1035中所指定,MX记录包含一个域名。因此,它必须指向本身可以在DNS中解析的主机。 IP地址无法使用,因为它会被解释为不合格的域名,无法解析。

之所以在1980年代(最初编写规范时)的原因几乎是相同的作为今天的原因:主机可能连接到多个网络并使用多种协议。

早在80年代,同时将邮件网关连接到(相对较新的)邮件网关并不少见使用TCP / IP的Internet,以及使用其他协议的其他传统网络的Internet。以这种方式指定MX允许DNS记录,DNS记录可以标识如何访问Internet以外的网络(例如Chaosnet)上的此类主机。但是实际上,这几乎从未发生过。几乎每个人都重新设计了其网络,以使其成为Internet的一部分。

今天,情况是主机可以通过多种协议(IPv4和IPv6)以及每种协议中的多个IP地址到达。单个MX记录不可能列出一个以上的地址,因此唯一的选择是指向一个主机,然后可以在该主机中查找该主机的所有地址。 (作为性能优化,如果DNS服务器具有授权记录,则它将在响应附加部分中发送主机的地址记录,从而节省了往返时间。)

也有这种情况当您的邮件交换器由第三方(例如Google Apps或Office 365)提供时,就会出现这种情况。您将MX记录指向其主机名,但是服务提供商可能需要更改邮件服务器的IP地址。既然您已指向主机,则服务提供商可以透明地执行此操作,而无需对记录进行任何更改。

评论


但这并不能真正阻止与IP地址的兼容性。实际上,根据我所做的少量测试,大多数SMTP服务器/客户端都可以与MX记录中的IP地址配合使用。我认为这样做的目的是劝阻业界不要大规模使用IP地址-如果未声明该规则,很可能会发生这种情况-而不是逐案进行。因此,“应该”而不是“必须”。不过,+ 1可以获取很棒的信息。我从来没有考虑过大部分。

–辛尼泽
2015年1月29日在2:50



@Zenexer并不存在交通法规,因为相对而言,很少有专家确切地知道什么是安全的,什么不是安全的。之所以存在它们,是因为他们有更多的白痴,他们认为他们知道自己在做什么,却不知道。

– Shadur
15年1月29日在9:59

@Zenexer您可能会发现特定的MTA今天可以容忍它,而明天则不会。毕竟,这不是标准所允许的行为。当然,并不是所有的MTA都会支持它,因此这样做意味着您肯定会丢失邮件。

–迈克尔·汉普顿
2015年1月29日14:30



@MSalters我认为您很困惑。我什么也没说。确实,我说过MX记录必须包含一个主机名,这也是RFC所说的。

–迈克尔·汉普顿
15年2月2日在15:20

其实那是我的错;我的印象是这应该做,而不是必须做。在这种情况下,即使@Shadur的超赞隐喻也不太合适。

–辛尼泽
2015年2月4日在21:22



#2 楼

DNS作为协议具有一些不同类型的值,这些值是不可互换的。

请注意,DNS是一种二进制协议,在记录类型和数据类型之间具有严格的映射,因此记录保持。

例如:
A记录包含IPv4地址(4个字节的数据,固定长度)。
AAAA记录包含IPv6地址(16个字节的数据)数据,固定长度)。

另一方面,MX记录包含名称(格式为<int number of bytes> <label> <int number of bytes> <label> <int 0>的标签序列,长度可变)。

MX记录无法有一个IP地址作为其数据。

评论


您可以将标签设置为IP地址的文本表示形式,但是这样做没有任何意义,因为它不能解析为主机名。

–迈克尔·汉普顿
15年1月28日在18:13

@MichaelHampton确实,有可能带有全数字标签的名称在通常的人类友好表示中乍一看看起来像IPv4地址。但是,这实际上并没有改变任何内容,因为它仍然是一个名称,因此将像一个名称一样处理(至少在公共Internet上,该名称将是NXDOMAIN)。

–Håkan Lindqvist
15年1月28日在18:29

这并不能真正回答OP的问题。您基本上会说“因为那是事实”。

–dr_
16-9-28在10:38

@ dr01考虑到该问题清楚地表明您并未意识到“它的状态”(“实际上,您不应该将MX记录指向IP地址,而应将其指向A记录”)除了名称之外,还有其他任何值),我认为指出事物的方式以及为什么这使得其他任何选择都变得不可能,这并不不合适。我感觉到您正在大量阅读实际上并不存在的问题。

–Håkan Lindqvist
16-09-28在16:11

@ dr01即,不要认为该问题读作是DNS初期或类似情况下有关设计决策的学术问题,而仅仅是有关如何或应该使用世界上实际存在的MX记录的问题。

–Håkan Lindqvist
16/09/28 '16:20

#3 楼

我将其排除在外。当然,我已经感冒了,所以也许我很生气。

RFC 974规定:


LOCAL邮件程序的第一步是:发出MX RRs
查询。强烈建议每次邮件发件人尝试发送邮件时都应执行此步骤。希望域邮件中的域数据库中的更改将被邮件快速使用,因此域管理员可以通过简单地更改有缺陷的主机来为
有缺陷的主机重新路由传输中的消息。域数据库。


由于要求使用名称而不是IP,因此强烈鼓励这种做法。名称可以保持不变,并且在负载平衡或灾难恢复的情况下,您不必担心更改MX记录本身并等待DNS传播。

评论


在您患流感时,请假时回答堆栈交换问题。...我给您戴上帽子,先生!

– Mike B
15年1月28日在19:45

#4 楼

某些电子邮件服务器(例如exim)明确不允许发送指向纯IP地址的MX记录,因此您必须使用FQDN才能兼容。这是因为大多数服务器希望MX记录包含一个主机名,而不是IP(这是A记录的目的)。

编辑:详细地说,在DNS中,每个记录对每个记录可以保存的数据。对于MX记录,它只是一个主机名。

评论


那么,为什么exim首先不允许MX记录指向IP地址?对我来说似乎很奇怪!我知道我不应该因为惯例,但我不明白为什么将其定为非法。

– dayuloli
15年1月28日在17:31



我看不到任何MTA都可以将其作为MX记录来支持它的值。

–Håkan Lindqvist
15年1月28日在17:36

@HåkanLindqvist您的上述回答为我澄清了这一点!谢谢!

– dayuloli
15年1月28日在17:38

#5 楼

在RFC 1025中,MX记录仅指向A记录或CNAME的RR(资源记录)。
因此,发送邮件的邮件服务器要求MX记录的RR,mx记录列出了服务器的A记录,邮件服务器会进行前向查询以获取A记录,然后通过smtp将邮件转发到列为邮件服务器的服务主机,“愿意”接收该域的邮件。
您的问题-为什么不能邮件发送到IP地址
响应-出于信任原因
有关邮件的许多规则已经发展,以维持域之间来回发送消息实际上是有效的信任。所有这些都是为了最终减少SPAM。

反向IP查找
针对此问题的正向名称查找

所有这些基本要素都是为构建IP的基础邮件服务器上至少有一些小的组件可以创建可信赖的通信并减少不可信的通信。
参考-RFC 1035和974
https://www.ietf.org/rfc/rfc1035.txt35
https://www.ietf.org/rfc/rfc974.txt

#6 楼

MX记录的目的是使应用程序(邮件传输)可以了解要使用的主机。在应用程序级别,主机名是正确的选择(不是IP地址)。

此外,将变体类型记录的概念添加到DNS中会带来复杂的后果,因此会成为问题,实现事故,安全性挑战的切入点。
例如,1.2.3.4.example.com.是有效的主机名(是的,即使是按照RFC1034 3.5的规定也是如此)。在example.com的绑定配置文件中将此主机指定为MX可能看起来像

.  MX 10  1.2.3.4


,并且大概与具有IP的MX记录应该是一样的
甚至要在DNS数据报中传输信息,也需要一些古怪的附加程序;最简单的方法是引入一种新的资源记录类型,例如MXA。但是话又说回来,为什么在总是可以用

. MXA 10 5.6.7.8

代替的时候引入负担这样的新记录类型呢? br />(不知道MXA记录的DNS客户端也会支持它)吗?