假设我有以下针对域激活的 DNS example.com
(忽略优先级和 ttl)
example.com A 123.45.67.89
mx.example.com A 123.45.67.89
example.com MX mx.example.com
现在,这是一条有效的 DNS 记录。如果我添加以下 mx 记录,是否会引起任何问题?
mx.example.com MX mx.example.com
我已经测试过了,它似乎有效,但我想确定一下。
原因是,我总是用[电子邮件保护]发送电子邮件时不添加最后一条 mx 记录。但有些服务会失败,因为它们没有使用主域,而是检查子域是否存在 mx 记录。添加 mx 记录似乎可以让所有服务正常工作,但我现在担心这可能会导致实际发送/接收电子邮件出现问题。
另外,我已将新 mx 记录的优先级设置为低于原始优先级,因此理论上应该总是选择第一个,但我很好奇如果优先级颠倒它是否会起作用。
答案1
指向自身的 MX RR 完全有效,不会造成任何问题。不过,这可能被认为是多余的,因为一般规则是,如果域名没有 MX RR 但有 A RR,则应使用后者进行邮件传递。换句话说,当不存在显式 MX RR 时,会隐式假定 MX RR 指向自身。
请注意,您的示例代码存在语法问题。FQDN 缺少结尾的点,MX RR 缺少优先级字段。它应为:
example.com. A 123.45.67.89
mx.example.com. A 123.45.67.89
example.com. MX 10 mx.example.com.
mx.example.com. MX 10 mx.example.com.
或者,等效地:
$ORIGIN example.com.
@ A 123.45.67.89
MX 10 mx
mx A 123.45.67.89
MX 10 mx
($ORIGIN
如果整体是域的区域文件的一部分,那么该指令就是多余的example.com
。)
答案2
您似乎搞混了。DNS MX-RR 格式domain MX pref name
用于表示具有名称的服务器name
将成为域的 MX domain
。
在您的例子中,您说的是名为 的服务器mx.example.com
将处理mx.example.com
域的邮件。这完全有效,但在我看来,您想要为 设定一个 MX example.com
。
答案3
我想你的问题的核心已经得到解答了,但你可能需要澄清一些困惑:
- 不存在“优先级较低的第二个 MX 记录”,MX 记录优先级的范围是名称,您示例中的两个名称各只有一个 MX,因此优先级完全没有影响。MTA 会查找 MX 记录以准确找到它要传送到的主机部分,而不会查找其他内容(如果 MX 查找结果记录为零,则查找 A/AAAA 记录除外)。
- 此外,MX 记录并不“指向自身”——它只是恰好包含存储它的主机名,但该名称指向 A 和 AAAA 记录,这些记录与存储在同一名称下的 MX 记录不同。在 DNS 中,您可以存储同一名称下的任意数量的不同记录,一个名称下的一条记录指向同一名称下的另一条记录并没有什么不妥——唯一不好的做法是指向同一条记录,例如,有一个 CNAME 记录,其中包含自己的名称,因为这反过来会指向相同的 CNAME 记录,等等,以此类推,无穷无尽。