我正在尝试配置 DNS 以处理跨多个子域的邮件,其中每个子域都有自己的邮件服务器。我的目标是将 user@%subdomain%.example.com 的邮件路由到 %subdomain%.example.com 下托管的服务器。
所需配置的示例:
- 发送至[email protected]的邮件应由 abcde.example.com 服务器处理
- 发往[email protected]的邮件应由 xyz.example.com 服务器处理
对于所有可能的子域名,也是如此。子域名有很多,因此无法为每个子域名手动添加 MX 记录。
可能有效的方法
_smtp._tcp.*.example.com. IN SRV 0 0 25 %.example.com.
这种配置看起来合乎逻辑,但我不确定邮件服务器对它的支持程度如何。我不知道 IMAP 和 POP3 是否有类似的东西。
我的问题
- 实现这样的路由需要创建哪些 DNS 记录?
- 是否可以设置通配符 MX 记录以自动将邮件路由到相应的子域?
- 如果无法使用通配符 MX 记录,那么如何自动化为新子域创建 MX 记录的过程(最好以一种不花费太多时间的方式,也许使用动态 DNS)?
什么不起作用
- 将所有子域名通配符路由到单个域名,例如
IN MX 10 central-mail.example.com.
。仅当电子邮件无需解密数据包内容(例如 TLS/SSL 中的 SNI)即可路由到正确的服务器时,这种配置才是可接受的。
我将非常感激您对必要的 DNS 记录的详细解释以及任何其他建议。
您不需要任何配置。
如果不存在 MX 记录,它将被传送到主机名,例如
[email protected]
将被传送到。这在RFC 5321 第 5.1 节xyz.example.com
中有说明:没有。如果 Vidarlo 的答案(即,当不存在记录时,这已经是默认行为)由于垃圾邮件过滤过于严格而无法满足您的需求,那么另一个答案是“您不能仅使用 DNS 来实现这种通配符”。
_smtp
不受任何邮件提供商支持(如果我没记错的话,规范禁止),因为 MX 记录已经存在并且工作方式相同。邮件客户端会寻找该_submission[s]
服务。除此之外,这通常不是使用通配符的有效方法 - 它们只能用作最左边的组件 - 并且一般的 DNS 和 SRV 记录都没有特别规定
%
或其他替代。某些 DNS 服务器可以具有服务器端逻辑来执行更复杂的操作(例如,有些具有 Lua 脚本),但标准 DNS 配置无法做到这一点。
完全取决于您的 DNS 托管平台。有些具有基于 HTTP 的 API,有些则没有。(“动态 DNS” 不是一项神奇的功能;它只是另一个 API。)独立服务器可能使用可以生成的文本区域文件,或者可能支持 RFC2136 动态更新,或者可能允许您将记录插入 SQL 数据库。Active Directory 支持三种不同的 API(RFC2136、MS-RPC、LDAP)。