RFC 974 - Mail Routing and the Domain System

  My imperfect understanding of how most mail agents handle MX records is
that with the first configuration, mx1 will always be tried first,
followed by mx2, etc. With the second configuration, a BIND server will
return the A addresses in an effectively random pattern, so load should
be distributed across the 3 servers.

Indeed if the MXes have different priorities, only in this case they have
the same priorities so they will also be load balanced. (The key being,
BIND will round robin any kind of record, not just A records).

I tried to answer this question earlier but couldn't come up with a good
answer so I kept quiet :frowning:

-Phil

Phillip Vandry wrote:

> My imperfect understanding of how most mail agents handle MX records is
> that with the first configuration, mx1 will always be tried first,
> followed by mx2, etc. With the second configuration, a BIND server will
> return the A addresses in an effectively random pattern, so load should
> be distributed across the 3 servers.

Indeed if the MXes have different priorities, only in this case they have
the same priorities so they will also be load balanced. (The key being,
BIND will round robin any kind of record, not just A records).

  BIND will round robin the MX records, how mail agents deal with
multiple MX records of the same priority is less of a known factor (to
me at least). Actually I'd be interested to hear from people who try
both configurations for say a month at a time to see what influence each
configuration has if any.

Doug

Studded wrote:

        BIND will round robin the MX records, how mail agents deal with
multiple MX records of the same priority is less of a known factor (to
me at least). Actually I'd be interested to hear from people who try
both configurations for say a month at a time to see what influence each
configuration has if any.

I was just looking at this code in sendmail the other day. sendmail will
randomize when it gets multiple MX records of the same priority. Look at
mxrand() in domain.c.