MX Records Are Nonrecursive
Consider the following MX setup, which causes all mail
for hostA
to be
sent to hostB
and
all mail for hostB
to be sent to hostB
, or to hostC
if hostB
is down:[156]
hostA IN MX 10 hostB hostB IN MX 10 hostB IN MX 20 hostC
One might expect sendmail to be
smart and deliver mail for hostA
to hostC
if hostB
is down. But
sendmail won’t do that. The
RFC standards do not allow it to recursively look up
additional MX records. If
sendmail did, it could get
hopelessly entangled in MX loops. Consider the
following:
hostA IN MX 10 hostB
hostB IN MX 10 hostB
IN MX 20 hostC
hostC IN MX 10 hostA ← potential loop
If your intention is to have hostA
MX to two other hosts, you must
state that explicitly:
hostA IN MX 10 hostB IN MX 20 hostC hostB IN MX 10 hostB IN MX 20 hostC
Another reason sendmail refuses
to follow MX records beyond the target host is that
costs in such a situation are undefined. Consider
the previous example with the potential loop. What
is the cost of hostA
when MX’d by hostB
to hostC
? Should it be the
minimum of 10, the maximum of 20, the mean of 15, or
the sum of 30?
[156] † We are fudging for the sake of simplicity. Here, we assume that all the hosts also have A records.
Get sendmail, 4th Edition now with the O’Reilly learning platform.
O’Reilly members experience books, live events, courses curated by job role, and more from O’Reilly and nearly 200 top publishers.