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

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

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

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

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

人们还需要能够发送电子邮件至[电子邮件保护],这需要一个简单的 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。

有人能想到任何解决方法吗?谢谢!

答案1

不幸的是,您遇到的问题是 DNS 规范的限制。在大多数 DNS 服务器实现中,将同一主机名的 MX 记录定义为 CNAME 记录都会失败。一些较旧的 DNS 服务器允许这样做,但它们大多已被淘汰,取而代之的是更新、更安全的实现。

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

答案2

经过大量的工作和研究,我找到了一个可以接受的解决方案。首先,我们所有人都必须遵守 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。好极了!

答案3

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

有人能想到任何解决方法吗?谢谢!

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

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

答案4

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

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

相关内容