Uncle George wrote:
To provide reliable mail transmission, the SMTP client MUST be able
to try (and retry) each of the relevant addresses in this list in
order, until a delivery attempt succeeds.
I think you are missing the *MUST* in the first sentence. There is no
try of any other MX if a connection is made, but delivery fails for any
reason.
If you look carefully, at the top of the RFC, "SHOULD" is defined:
The SHOULD addresses a configurable limit of MX tries.
IMHO, QMail does try and retry each of the relevant addresses in the MX
list, in order, until a delivery attempt succeeds. The issue is that
different people interpret this in different ways:
Some people think this should mean:
-> TRY1: "MX5 is dead, MX10 is greylisting, MX15 is greylisting, MX20 is
greylisting"
-> TRY2: "MX5 is dead, MX10 accepts message"
While QMail thinks this should mean:
-> TRY1: "MX5 is dead, MX10 is greylisting"
-> TRY2: "MX10 accepts message"
Is there a reason to go onto MX15 or MX20? MX10 says that it'll accept
the mail, but that it's temporarily unable to do so. Trying the other
MXes just generates additional unnecessary traffic. The only problem
occurs when the receiving MTA lies about it's ability to accept the
message, or a temporary failure that takes more than your maximum queue
time to resolve.
"MAY" addresses the configurable MX retry limit; "SHOULD" recommends
that QMail try more than one MX, even though it's not required to:
In any case, the SMTP client SHOULD try at least two addresses.
So, as I said before, as long as QMail is _capable_ of trying more than
one MX, it doesn't have to, and is still RFC compliant. (Not that I put
a whole lot of stock in everything being RFC compliant.)
Tyler
|