AskOverflow.Dev

AskOverflow.Dev Logo AskOverflow.Dev Logo

AskOverflow.Dev Navigation

  • 主页
  • 系统&网络
  • Ubuntu
  • Unix
  • DBA
  • Computer
  • Coding
  • LangChain

Mobile menu

Close
  • 主页
  • 系统&网络
    • 最新
    • 热门
    • 标签
  • Ubuntu
    • 最新
    • 热门
    • 标签
  • Unix
    • 最新
    • 标签
  • DBA
    • 最新
    • 标签
  • Computer
    • 最新
    • 标签
  • Coding
    • 最新
    • 标签
主页 / server / 问题 / 663112
Accepted
dayuloli
dayuloli
Asked: 2015-01-29 09:13:40 +0800 CST2015-01-29 09:13:40 +0800 CST 2015-01-29 09:13:40 +0800 CST

为什么 MX 记录不能指向 IP 地址?

  • 772

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

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

domain-name-system
  • 6 6 个回答
  • 60907 Views

6 个回答

  • Voted
  1. Best Answer
    Michael Hampton
    2015-01-29T09:36:57+08:002015-01-29T09:36:57+08:00

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

    1980 年代最初编写规范的原因与今天的原因几乎相同:主机可能连接到多个网络并使用多种协议。

    早在 80 年代,将邮件网关连接到使用 TCP/IP 的(相对较新的)互联网和其他传统网络(通常使用其他协议)的情况并不少见。以这种方式指定 MX 允许 DNS 记录可以识别如何到达 Internet 以外的网络上的此类主机,例如Chaosnet。但在实践中,这几乎从未发生过。几乎每个人都重新设计了他们的网络,转而成为互联网的一部分。

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

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

    • 97
  2. Håkan Lindqvist
    2015-01-29T09:34:20+08:002015-01-29T09:34:20+08:00

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

    需要注意的是,DNS 是一种二进制协议,在记录类型和此类记录所保存的数据类型之间具有严格的映射关系。

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

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

    记录不可能将IPMX地址作为其数据。

    • 22
  3. TheCleaner
    2015-01-29T09:40:52+08:002015-01-29T09:40:52+08:00

    我会把这个扔掉作为猜测。当然,我因流感在家,所以也许我疯了。

    RFC 974 规定:

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

    通过要求名称而不是 IP,它有力地鼓励了这种做法。名称可以保持不变,并且在负载平衡或 DR 的情况下,您不必担心更改 MX 记录本身并等待 DNS 传播。

    • 6
  4. Nathan C
    2015-01-29T09:29:11+08:002015-01-29T09:29:11+08:00

    某些电子邮件服务器(如 exim)特别不允许发送到指向纯 IP 地址的 MX 记录,因此您需要使用 FQDN 以使其符合要求。这是因为大多数服务器都希望 MX 记录包含主机名,而不是 IP(这就是 A 记录的用途)。

    编辑:详细地说,在 DNS 中,每条记录对每条记录可以保存的数据类型都有严格的要求。对于 MX 记录,它只是一个主机名。

    • 3
  5. Citizen
    2015-01-29T09:42:31+08:002015-01-29T09:42:31+08:00

    在 RFC 1025 中,MX 记录仅指向 A 记录或 CNAME 的 RR(资源记录)。

    因此,发送邮件的邮件服务器请求 MX 记录的 RR,mx 记录列出服务器的 A 记录,邮件服务器进行正向查找以获取 A 记录,然后通过 smtp 将邮件转发到列出的服务主机邮件服务器“愿意”接收该域的邮件。

    您的问题 - 为什么邮件无法发送到 IP 地址

    回应 - 因为信任

    许多关于邮件的规则已经演变,以保持域之间的信任,即来回发送的消息实际上是有效的。所有这些都是为了最终减少垃圾邮件。

    • 反向 IP 查找
    • 与此相关的正向名称查找

    构建邮件服务器的基础的所有这些基本组件至少有一些小组件用于创建可信赖的通信和减少不可信的通信。

    参考 - RFC 1035 和 974

    https://www.ietf.org/rfc/rfc1035.txt35

    https://www.ietf.org/rfc/rfc974.txt

    • 2
  6. Hagen von Eitzen
    2015-02-01T13:49:19+08:002015-02-01T13:49:19+08:00

    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
    

    总是可以替换为

    . MX 10 dummy
    dummy A 5.6.7.8
    

    (并且还会受到不知道MXA记录的 DNS 客户端的支持)?

    • 2

相关问题

  • Solaris DNS

  • resolv.conf 在经过一段时间后被更改

  • 为什么有些网站的网址中没有“www”就无法显示?[关闭]

  • 为本地网络中的名称解析添加自定义 dns 条目

Sidebar

Stats

  • 问题 205573
  • 回答 270741
  • 最佳答案 135370
  • 用户 68524
  • 热门
  • 回答
  • Marko Smith

    新安装后 postgres 的默认超级用户用户名/密码是什么?

    • 5 个回答
  • Marko Smith

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    命令行列出 Windows Active Directory 组中的用户?

    • 9 个回答
  • Marko Smith

    什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同?

    • 3 个回答
  • Marko Smith

    如何确定bash变量是否为空?

    • 15 个回答
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    Noah Goodrich 什么是 Pem 文件,它与其他 OpenSSL 生成的密钥文件格式有何不同? 2009-05-19 18:24:42 +0800 CST
  • Martin Hope
    Brent 如何确定bash变量是否为空? 2009-05-13 09:54:48 +0800 CST
  • Martin Hope
    cletus 您如何找到在 Windows 中打开文件的进程? 2009-05-01 16:47:16 +0800 CST

热门标签

linux nginx windows networking ubuntu domain-name-system amazon-web-services active-directory apache-2.4 ssh

Explore

  • 主页
  • 问题
    • 最新
    • 热门
  • 标签
  • 帮助

Footer

AskOverflow.Dev

关于我们

  • 关于我们
  • 联系我们

Legal Stuff

  • Privacy Policy

Language

  • Pt
  • Server
  • Unix

© 2023 AskOverflow.DEV All Rights Reserve