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 / 问题 / 18000
Accepted
Michael Gorsuch
Michael Gorsuch
Asked: 2009-06-03 10:15:46 +0800 CST2009-06-03 10:15:46 +0800 CST 2009-06-03 10:15:46 +0800 CST

DNS:同时需要 MX 记录和 CNAME 的子域

  • 772

假设我们拥有 mywebservice.com 区域。

我希望我的每个客户都有自己的子域,例如 customer.mywebservice.com。

customer.mywebservice.com 需要是给定服务器异地的 CNAME。由于该站点管理自己的设备并且可以随时更改地址,因此 CNAME 是必需的。

人们还需要能够向 [email protected] 发送电子邮件,这需要一个简单的 MX 记录。

但是,这就是我想要一些指导的地方:

根据RFC 1034:

If a CNAME RR is present at a node, no other data should be
present; this ensures that the data for a canonical name and its aliases
cannot be different.

我还验证了我的 DNS 服务器将拒绝为使用它们的主机提供除 CNAME 之外的任何内容。

所以,看来我可能有一个失败的情况。如果我想使用 MX 记录,我需要使用 A 而不是 CNAME。

谁能想到任何解决方法?谢谢!

domain-name-system cname-record mx-record
  • 8 8 个回答
  • 33894 Views

8 个回答

  • Voted
  1. Best Answer
    Justin Scott
    2009-06-03T10:55:43+08:002009-06-03T10:55:43+08:00

    不幸的是,您遇到的是 DNS 规范的限制。在大多数 DNS 服务器实现中,拥有与定义为 CNAME 记录相同的主机名的 MX 记录将失败。一些较旧的 DNS 服务器将允许这样做,但它们大多已被淘汰,以支持更新、更安全的实施。

    您需要直接使用带有客户站点 IP 地址的“A”记录而不是使用别名记录,而不是使用 CNAME 记录。

    • 25
  2. Michael Gorsuch
    2009-06-21T23:31:07+08:002009-06-21T23:31:07+08:00

    经过大量的工作和研究,我找到了一个可以接受的解决方案。首先,重要的是我们都遵循 RFC。我修补了我的 DNS 服务器以违反 RFC,我发现其他几个主要的 DNS 服务器不会遵守更改。

    适当的举措是将 MX 放在 CNAME 指向的主机上。因此,如果 customer.mywebservice.com 是 A 记录 loadbalancer.mywebservice.com 的 CNAME,则还可以为 loadbalancer.mywebservice.com 构建一个 MX 记录。我已经验证这适用于所有主要的解析器。

    如果对 customer.mywebservice.com 进行 MX 查询,解析器库将遵循 CNAME 并为最终 A 记录获取正确的 MX。欢呼!

    • 22
  3. Zoredache
    2009-06-03T11:11:19+08:002009-06-03T11:11:19+08:00

    customer.mywebservice.com 需要是给定服务器异地的 CNAME。由于该站点管理自己的设备并且可以随时更改地址,因此 CNAME 是必需的。

    谁能想到任何解决方法?谢谢!

    您要求客户必须能够更改地址,您是否考虑过允许客户动态更新自己的记录?使用动态 dns,您可以使用 A 记录,客户可以根据需要更改记录。这需要一些工作,但您可以将每个单独的子域作为一个单独的区域,这样您就可以确保客户只能触摸他们自己的区域。

    我还没有尝试过,但gnudip似乎是一个开源工具,用于促进动态更新,而无需处理身份验证和在 DNS 服务器上设置大量区域。

    • 4
  4. Doug Luxem
    2009-06-03T10:25:09+08:002009-06-03T10:25:09+08:00

    如果所有这些记录的 MX 记录都相同,那么您可以尝试使用 DNAME 将 XYZ.mywebservice.com 重定向到 hosting.mywebservice.com。在 hosting.mywebservice.com 下添加您的相关 MX 和 A 记录。

    我必须说我从未在生产中使用过 DNAME 记录,但您可以在RFC2672中阅读更多关于它们的信息。

    • 3
  5. MikeyB
    2009-06-03T11:04:55+08:002009-06-03T11:04:55+08:00

    customer.mywebservice.com CNAME 的 RHS 是否有 MX 条目?

    如果是这样,那么邮件服务器将使用该 MX 来查找要使用的邮件服务器。希望你能控制它。

    • 3
  6. osheroff
    2012-03-13T05:04:10+08:002012-03-13T05:04:10+08:00

    Michael Gorsuch 的回答在很大程度上是正确的,CNAME -> A+MX 链确实有效……主要是。但是,它确实会在某些 MTA 中引发一些不良行为。我发现以相当大的规模运行此解决方案:

    • 一些 MTA 会直接拒绝查找记录。
    • 其他人将错误地替换 CNAME 应该是的 A 记录:即我发送邮件到“[email protected]”,该 CNAMES 到 web.example.com,它的 MX 为 mail.example.com,并且MTA 将信封头重写为“收件人:[email protected]”。

    目前尚不清楚这些问题有多普遍(google/hotmail/yahoo/etc 似乎都正确处理了这个问题),但它们确实让我们寻找更好的解决方案。

    • 1
  7. Bachsau
    2016-07-24T15:56:39+08:002016-07-24T15:56:39+08:00

    一个可能且有效的解决方案是为您的所有客户创建一个基本主机名,并将其设置为异地网络服务器和您的记录A,然后将所有客户的域 CNAME 到该单个主机名。这样,当异地的 IP 地址发生变化时,您只需更改一条记录。AAAAMX

    这是唯一有效且可能的方式,因为 CNAME 是一组完整记录的别名,而不仅仅是A.

    • 0
  8. drybjed
    2009-06-03T10:22:44+08:002009-06-03T10:22:44+08:00

    MX 和 CNAME 是完全独立的记录 - 第一个确定给定域的邮件服务器,第二个给出域的地址。这应该有效:

    @IN SOA ns1.mywebservice.com。root.mywebservice.com。(
                            2009060201
                            12小时
                            1小时
                            1w
                            8小时
    )
    
                            NS ns1.mywebservice.com。
                            NS ns2.mywebservice.com。
    
    客户 CNAME offsite.host。
    客户 MX 10 邮件服务器。
    
    • -4

相关问题

  • 可以任意注册名字到同一个公网IP吗?

  • Linux 绑定服务器为 DHCP Windows 客户端提供地址,但不为 DHCP Linux 客户端提供地址

  • 如何使用 Windows Server 解析 http 域名

  • 动态更新 /etc/resolv.conf 中列出的解析器

  • 内部名称解析

Sidebar

Stats

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

    SFTP 使用什么端口?

    • 6 个回答
  • Marko Smith

    从 IP 地址解析主机名

    • 8 个回答
  • Marko Smith

    如何按大小对 du -h 输出进行排序

    • 30 个回答
  • Marko Smith

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

    • 9 个回答
  • Marko Smith

    Windows 中执行反向 DNS 查找的命令行实用程序是什么?

    • 14 个回答
  • Marko Smith

    如何检查 Windows 机器上的端口是否被阻塞?

    • 4 个回答
  • Marko Smith

    我应该打开哪个端口以允许远程桌面?

    • 9 个回答
  • Marko Smith

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

    • 3 个回答
  • Marko Smith

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

    • 15 个回答
  • Martin Hope
    MikeN 在 Nginx 中,如何在维护子域的同时将所有 http 请求重写为 https? 2009-09-22 06:04:43 +0800 CST
  • Martin Hope
    Tom Feiner 如何按大小对 du -h 输出进行排序 2009-02-26 05:42:42 +0800 CST
  • Martin Hope
    0x89 bash中的双方括号和单方括号有什么区别? 2009-08-10 13:11:51 +0800 CST
  • Martin Hope
    kch 如何更改我的私钥密码? 2009-08-06 21:37:57 +0800 CST
  • Martin Hope
    Kyle Brandt IPv4 子网如何工作? 2009-08-05 06:05:31 +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