MX 记录指向自身,可能吗?

LPC*_*hip 7 domain-name-system mx-record

假设我有以下域的活动 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
Run Code Online (Sandbox Code Playgroud)

现在,这是一个有效的 DNS 记录。如果我添加以下 mx 记录,会导致任何问题吗?

mx.example.com MX   mx.example.com
Run Code Online (Sandbox Code Playgroud)

我已经测试过了,它似乎有效,但我想确定一下。

原因是,我总是使用 mailaddress@mx.example.com 发送电子邮件,而没有添加最后一条 mx 记录。但是有些服务会失败,因为它们没有使用主域,而是检查子域(如果该 mx 记录存在)。添加 mx 记录似乎可以让服务正常工作,但我现在担心它可能会导致实际发送/接收电子邮件的问题。

此外,我已将新 mx 记录的优先级设置为低于原始记录,因此理论上应该使其始终选择第一个,但我很好奇如果优先级颠倒它甚至会起作用。

Til*_*idt 16

指向自身的 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.
Run Code Online (Sandbox Code Playgroud)

或者,等效地:

   $ORIGIN example.com.
   @               A    123.45.67.89
                   MX   10 mx
   mx              A    123.45.67.89
                   MX   10 mx
Run Code Online (Sandbox Code Playgroud)

$ORIGIN如果整个指令是域的区域文件的一部分,则该指令是多余的example.com。)

  • @kasperd:人类读者可能会将其视为这样的指示,但是如果邮件服务器想要符合 RFC 标准,则别无选择,只能进行重试。我也不认为这是一个大问题。那些无用的重试的资源消耗可以忽略不计,而且地址拼写错误,只是偶然地将域部分更改为没有邮件服务的现有服务器的 FQDN 是不可能的,它们不会显着增加您经常看到的无用重试的数量在任何邮件服务器上。 (4认同)

dro*_*kie 5

你好像把自己搞糊涂了。DNS MX-RR 格式domain MX pref name用于表示具有名称的服务器name将是域的 MX domain

在您的情况下,您是说具有名称的服务器mx.example.com将处理mx.example.com域的邮件。这是完全有效的,但在我看来,您想为example.com.


小智 5

我想您的问题的核心已得到解答,但您可能想澄清一些困惑:

  1. 没有“具有较低优先级的第二个 MX 记录”,MX 记录优先级仅限于名称,示例中的两个名称每个都只有一个 MX,因此优先级完全没有影响。MTA 查找 MX 记录以查找它正试图交付给的主机部分,仅此而已(如果 MX 查找给出零结果记录,则 A/AAAA 查找除外)。
  2. 此外,MX 记录不会“指向自身”——它只是碰巧包含存储在其下的相同主机名,但该名称指向 A 和 AAAA 记录,这与存储在同一名称下的 MX 记录不同。在 DNS 中,您可以在同一名称下存储任意数量的不同记录,并且一个名称下的一条记录指向同名下的另一条记录并没有错——唯一不是一个好主意的事情实际上是指向相同的记录,就像有一个带有自己名字的 CNAME 记录,因为它又会指向同一个 CNAME 记录,等等,无止境。