Malcolm Weir wrote:

-----Original Message-----
From: Rodrigo Severo
Sent: Tuesday, June 21, 2005 1:03 PM

And, contrary to the implication, it would be a BAD idea to include logic that selects lower priority ("secondary") MXs for the
subsequent
attempts unless (all) the higher priority ones cannot be contacted.

Why?

Well, how do you know that the _list_ of MXs hasn't been changed between attempts?

If this is a concern,

It HAS to be a concern!
I am really not sure it HAS to be a concern, but as I said, if it is a concern there are good ways to accomodate it.

Courier can fetch a new list at every delivery attempt. Discard the ones it already tried and pick the remaining top priority one.

This is FAR better than the previously stated version of the idea, where you
wandered off into lower priority ones when higher priority MXs are listed.

Look, although it obviously doesn't suit you, the semantics of the MX
priority scheme only permit you to try a lower priority when *all* the
higher priority ones cannot be reached.
RFC 2821 states otherwise:

"When the (MX) lookup succeeds, the mapping can result in a list of alternative delivery addresses rather than a single address, because of multiple MX records, multihoming, or both. 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."

This is the main recomendation of RFC 2821 on the subject. Latter it opens doors for other behaviours. The behaviour you are defending is allowed through some of these doors. Please do not think Courier's current behaviour is the only one accepatable, the mostly recommended neither use any kind of authoritative argument like it. It is allowed by RFC 2821 but it is not the main recomendation.

Courier is complaint to RFC 2821 in this matter. I am just campaigning to include in Courier the possibility to use a method of message delivery that is the main recomendation of this same RFC.

Consider this list:

        PrimaryA MX 10
        PrimaryB MX 10
        SecondaryA MX 20
        SecondaryB MX 20

Now, suppose you connect to PrimaryA, and time out during the dialog.

We're agreed that you must wait for a retry.

CURRENTLY, Courier randomly picks PrimaryA or PrimaryB on the second
attempt.

You'd like Courier to remember that PrimaryA had timed out, check that the
the list hasn't changed, and connect to PrimaryB.

Now, suppose that Courier did pick PrimaryB (either randomly or by storing
the list of MXs previously tried and reconciling that with the current
list).

If PrimaryB now times out during a dialog,

from what I've seen, you'd like Courier to try SecondaryA or SecondayB,
right?

BUT... It's been at least to wait_for_retry intervals since PrimaryA
exhibited its problem issue, and Courier (and sendmail, Qmail, Postfix,
etc.) cannot presume that the people who run PrimaryA haven't fixed it in
the interim.  It's still listed as a highest priority MX, so the MTA is
obliged to try to use it.
By your logic secondary MXs would never be connected at all because if I try a primary MX and fail I shall wait for my next retry. At this point I have to retry one of the primaries again as I "cannot presume that the people who run PrimaryA haven't fixed it in the interim" to use your own words. Closed loop, no secondary MX get connected at all. Doesn't seems to me as specially good logic.

I'm really in no position as to speak about the reasons other sys admins might setup multiple MXs with priorities. The real fact is that they still do. I'm just trying to make the best use of it.

No, you're actually trying to modify the meaning of "priority" so it becomes
something more like "order to use".
No, I'm not trying to mess with the english language at all (despite my erratic domain of the language).

What I'm doing is suggesting an alternative behaviour I latter discovered is backed-up by RFC 2821. My intentions are much humbler ;)

Well, maybe I'm just a lucky guy but I have to regulary send messages to two different domains with different misconfigurations for which such a feature would be very helpfull.

*Shrug*

My recommendation for you would be to create a local "stealth" DNS for those
two domains, and in that flatten their MX priorities so that they're all
primaries.  Courier will then randomly pick one on each attempt, and the
chance of Courier retrying the same server will be much reduced.

Of course, this is rather rude behavior, but your problem is caused by
people unwilling to fix their servers, so you're stuck with having to work
around their broken setup.

The problem with your idea is that this way I wouldn't respect MX priorities, i.e. try the primary MXs first. This is not good.


Rodrigo



-------------------------------------------------------
SF.Net email is sponsored by: Discover Easy Linux Migration Strategies
from IBM. Find simple to follow Roadmaps, straightforward articles,
informative Webcasts and more! Get everything you need to get up to
speed, fast. http://ads.osdn.com/?ad_id=7477&alloc_id=16492&op=click
_______________________________________________
courier-users mailing list
courier-users@lists.sourceforge.net
Unsubscribe: https://lists.sourceforge.net/lists/listinfo/courier-users

Reply via email to