域内(几乎)所有主机的自动 MX 条目

域内(几乎)所有主机的自动 MX 条目

我正在运行一个 DNS 服务器example.com,其中有多个 A/CNAME 记录指向不同的 IP 地址。

@           IN      A      198.51.100.1
a           IN      A      198.51.100.3
b           IN      CNAME  a
c           IN      A      203.0.113.12

mail.example.com现在我想为顶级域([email protected])和该域内的所有主机([email protected][email protected])运行单个邮件服务器(例如)

我想象过类似的事情

@           IN  MX  10  mail
*           IN  MX  10  mail
mail        IN  A       203.0.113.25

现在上面的内容对于主域来说已经足够好了:

$ dig mx example.com | grep MX
;example.com.         IN MX
example.com.          IN MX 10 mail.example.com.
$

但它不适用于 A/CNAME 记录:

$ dig mx a.example.com | grep MX
;a.example.com.         IN MX
$

相反,通配符*将按字面意思进行解释:

$ dig mx '*.example.com' | grep MX
;*.example.com.         IN MX
*.example.com.   604800 IN MX 10 mail.example.com.
$

看来要走的路是为域中的每个主机设置一个 MX 记录:

@           IN      MX  10  mail
a           IN      MX  10  mail
b           IN      MX  10  mail
c           IN      MX  10  mail

现在想象一下我的域中有数百个主机...为每个主机添加相同的 MX 记录似乎很容易出错。

有没有办法为域的所有 A/CNAME 记录指定单个 MX 条目?

我知道 serverfault 上有类似的问题,例如子域名的 MX 记录但答案似乎只处理所有主机都解析到同一个 IP 地址的情况,也就是不是这里的情况。

;; I cannot use this!
@           IN      A      198.51.100.3
*           IN      CNAME  @

奖励问题

如果有这样的办法,是否也可以为特定记录指定 MX 记录?例如所有主机都应使用mail.example.com,仅c.example.com应使用mail.c.example.com

概括

总而言之,我想避免在我的域中MX为每个A/记录都有一个记录。CNAME

例如我想要避免下列:

@           IN      A      198.51.100.1
@           IN      MX 10  mail
a           IN      A      198.51.100.3
a           IN      MX 10  mail
b           IN      CNAME  a
b           IN      MX 10  mail
c           IN      A      203.0.113.12
c           IN      MX 10  mail
mail        IN      A      203.0.113.25

答案1

通配符仅适用于不存在任何类型的 RR 的 FQDN。由于您有“a.example.com”的 A 记录,因此任何 RR 类型的通配符都不会与“a.example.com”匹配。听起来您已经掌握了替代方案;主要是手动生成每条记录或使用一些复杂的包含系统。

还有一件事要提一下,如果一个域名没有 MX 记录,但有一个 A 记录,那么邮件交换器应该尝试使用电子邮件服务的 A 记录。我见过的所有主流电子邮件软件都这样做。

相关内容