ietf-smtp
[Top] [All Lists]

Re: RFC 2821 Address Resolution

2004-01-05 01:25:42


----- Original Message ----- 
From: <Valdis(_dot_)Kletnieks(_at_)vt(_dot_)edu>
To: "Hector Santos" <winserver(_dot_)support(_at_)winserver(_dot_)com>
Cc: "IETF-SMTP" <ietf-smtp(_at_)imc(_dot_)org>
Sent: Sunday, January 04, 2004 4:31 PM
Subject: Re: RFC 2821 Address Resolution


1) It's unclear if you should try the first mx1, the first mx2,
the second mx1, the second mx2, or first try all the mx1 and then
all the mx2.

Group them and then randomized?

Certainly *not* - you're required to preserve per-host ordering of the A
records (as you don't KNOW if they're round-robined, or if they are
preference-ordered - the first could have an OC12 and the 3rd or 4th A
record correspond to a DS3).

Sorry, I mean randomize the MX records.

What I ended up doing for my new resolver to minimize the lookup.  So if MX1
and MX2 are equal preference but one of them do no have any A records in the
MX query, then add the MX to the end of the list (before any higher
preference entry) with no A records.   This will allow for the MX entries
with A records to be tried first.

Here is an example output using AOL.COM with a UDP-based DNS MX lookup
resulting with incomplete information and how I finalize the list:

-- [aol.com] --
DNS> records  : 22 an: 4  ns: 4  ar: 14
DNS> RR MX   ttl=636    pre=15  | aol.com | mailin-03.mx.aol.com
DNS> RR MX   ttl=636    pre=15  | aol.com | mailin-04.mx.aol.com
DNS> RR MX   ttl=636    pre=15  | aol.com | mailin-01.mx.aol.com
DNS> RR MX   ttl=636    pre=15  | aol.com | mailin-02.mx.aol.com
DNS> RR A    ttl=135    | 205.188.156.185  | mailin-01.mx.aol.com
DNS> RR A    ttl=135    | 205.188.158.121  | mailin-01.mx.aol.com
DNS> RR A    ttl=135    | 205.188.159.57   | mailin-01.mx.aol.com
DNS> RR A    ttl=135    | 64.12.137.89     | mailin-01.mx.aol.com
DNS> RR A    ttl=135    | 64.12.137.184    | mailin-01.mx.aol.com
DNS> RR A    ttl=135    | 64.12.138.57     | mailin-01.mx.aol.com
DNS> RR A    ttl=135    | 64.12.138.152    | mailin-01.mx.aol.com
DNS> RR A    ttl=103    | 64.12.137.184    | mailin-02.mx.aol.com
DNS> RR A    ttl=103    | 64.12.138.89     | mailin-02.mx.aol.com
DNS> RR A    ttl=103    | 64.12.138.120    | mailin-02.mx.aol.com
DNS> RR A    ttl=103    | 205.188.156.185  | mailin-02.mx.aol.com
DNS> RR A    ttl=103    | 205.188.158.121  | mailin-02.mx.aol.com
DNS> RR A    ttl=103    | 205.188.159.57   | mailin-02.mx.aol.com
DNS> RR A    ttl=103    | 64.12.137.89     | mailin-02.mx.aol.com

count : 11
MX     0  | 15 | 205.188.156.185  | mailin-01.mx.aol.com |
MX     1  | 15 | 205.188.158.121  | mailin-01.mx.aol.com |
MX     2  | 15 | 205.188.159.57   | mailin-01.mx.aol.com |
MX     3  | 15 | 64.12.137.89     | mailin-01.mx.aol.com |
MX     4  | 15 | 64.12.137.184    | mailin-01.mx.aol.com |
MX     5  | 15 | 64.12.138.57     | mailin-01.mx.aol.com |
MX     6  | 15 | 64.12.138.152    | mailin-01.mx.aol.com |
MX     7  | 15 | 64.12.138.89     | mailin-02.mx.aol.com |
MX     8  | 15 | 64.12.138.120    | mailin-02.mx.aol.com |
MX    *9  | 15 | 0.0.0.0          | mailin-04.mx.aol.com |
MX    *10 | 15 | 0.0.0.0          | mailin-03.mx.aol.com |

Here there are 4 MX with equal preference.  mailin-04 and mailin-03 has no A
records, so they end up at towards the bottom of the final list (indicated
with the asterisk).    So what will happen in the sender is that if he sees
an IP of zero, it will then perform the A record lookup at the point.

I believe this is the "clever" logic you suggested.  Right?

Seems to work with over 500 domains I tested it with.   Here is a another
snapshot:

-- [aol.com] --
DNS> records  : 22 an: 4  ns: 4  ar: 14
DNS> RR MX   ttl=439    pre=15  | aol.com | mailin-01.mx.aol.com
DNS> RR MX   ttl=439    pre=15  | aol.com | mailin-02.mx.aol.com
DNS> RR MX   ttl=439    pre=15  | aol.com | mailin-03.mx.aol.com
DNS> RR MX   ttl=439    pre=15  | aol.com | mailin-04.mx.aol.com
DNS> RR A    ttl=222    | 64.12.138.89     | mailin-02.mx.aol.com
DNS> RR A    ttl=222    | 64.12.138.120    | mailin-02.mx.aol.com
DNS> RR A    ttl=222    | 205.188.156.185  | mailin-02.mx.aol.com
DNS> RR A    ttl=222    | 205.188.158.121  | mailin-02.mx.aol.com
DNS> RR A    ttl=222    | 205.188.159.57   | mailin-02.mx.aol.com
DNS> RR A    ttl=222    | 64.12.137.89     | mailin-02.mx.aol.com
DNS> RR A    ttl=222    | 64.12.137.184    | mailin-02.mx.aol.com
DNS> RR A    ttl=76     | 64.12.137.121    | mailin-03.mx.aol.com
DNS> RR A    ttl=76     | 64.12.137.152    | mailin-03.mx.aol.com
DNS> RR A    ttl=76     | 64.12.138.57     | mailin-03.mx.aol.com
DNS> RR A    ttl=76     | 64.12.138.120    | mailin-03.mx.aol.com
DNS> RR A    ttl=76     | 205.188.156.249  | mailin-03.mx.aol.com
DNS> RR A    ttl=76     | 205.188.157.25   | mailin-03.mx.aol.com
DNS> RR A    ttl=76     | 205.188.159.217  | mailin-03.mx.aol.com

count : 15
MX     0  | 15 | 64.12.138.89     | mailin-02.mx.aol.com |
MX     1  | 15 | 64.12.138.120    | mailin-02.mx.aol.com |
MX     2  | 15 | 205.188.156.185  | mailin-02.mx.aol.com |
MX     3  | 15 | 205.188.158.121  | mailin-02.mx.aol.com |
MX     4  | 15 | 205.188.159.57   | mailin-02.mx.aol.com |
MX     5  | 15 | 64.12.137.89     | mailin-02.mx.aol.com |
MX     6  | 15 | 64.12.137.184    | mailin-02.mx.aol.com |
MX     7  | 15 | 64.12.137.121    | mailin-03.mx.aol.com |
MX     8  | 15 | 64.12.137.152    | mailin-03.mx.aol.com |
MX     9  | 15 | 64.12.138.57     | mailin-03.mx.aol.com |
MX     10 | 15 | 205.188.156.249  | mailin-03.mx.aol.com |
MX     11 | 15 | 205.188.157.25   | mailin-03.mx.aol.com |
MX     12 | 15 | 205.188.159.217  | mailin-03.mx.aol.com |
MX    *13 | 15 | 0.0.0.0          | mailin-04.mx.aol.com |
MX    *14 | 15 | 0.0.0.0          | mailin-01.mx.aol.com |

This time mailin-01 and mailin-04 end up in the bottom.    Notice list is
larger.  In the first list, duplicate IPs were removed.

Here is YAHOO.COM which offers 3 MX host with 2 equal preferences:

-- [yahoo.com] --
DNS> records  : 21 an: 3  ns: 5  ar: 13
DNS> RR MX   ttl=1583   pre=1   | yahoo.com | mx2.mail.yahoo.com
DNS> RR MX   ttl=1583   pre=5   | yahoo.com | mx4.mail.yahoo.com
DNS> RR MX   ttl=1583   pre=1   | yahoo.com | mx1.mail.yahoo.com
DNS> RR A    ttl=61     | 64.157.4.79      | mx1.mail.yahoo.com
DNS> RR A    ttl=61     | 64.156.215.5     | mx1.mail.yahoo.com
DNS> RR A    ttl=61     | 64.156.215.6     | mx1.mail.yahoo.com
DNS> RR A    ttl=61     | 64.156.215.7     | mx1.mail.yahoo.com
DNS> RR A    ttl=61     | 64.157.4.78      | mx1.mail.yahoo.com
DNS> RR A    ttl=1292   | 64.157.4.78      | mx2.mail.yahoo.com
DNS> RR A    ttl=1292   | 64.156.215.5     | mx2.mail.yahoo.com
DNS> RR A    ttl=1292   | 64.156.215.6     | mx2.mail.yahoo.com
DNS> RR A    ttl=120    | 216.155.197.63   | mx4.mail.yahoo.com
DNS> RR A    ttl=120    | 66.218.86.156    | mx4.mail.yahoo.com
DNS> RR A    ttl=120    | 66.218.86.253    | mx4.mail.yahoo.com
DNS> RR A    ttl=120    | 66.218.86.254    | mx4.mail.yahoo.com
DNS> RR A    ttl=120    | 67.28.114.32     | mx4.mail.yahoo.com

count : 10
MX     0  | 1  | 64.157.4.78      | mx2.mail.yahoo.com |
MX     1  | 1  | 64.156.215.5     | mx2.mail.yahoo.com |
MX     2  | 1  | 64.156.215.6     | mx2.mail.yahoo.com |
MX     3  | 1  | 64.157.4.79      | mx1.mail.yahoo.com |
MX     4  | 1  | 64.156.215.7     | mx1.mail.yahoo.com |
MX     5  | 5  | 216.155.197.63   | mx4.mail.yahoo.com |
MX     6  | 5  | 66.218.86.156    | mx4.mail.yahoo.com |
MX     7  | 5  | 66.218.86.253    | mx4.mail.yahoo.com |
MX     8  | 5  | 66.218.86.254    | mx4.mail.yahoo.com |
MX     9  | 5  | 67.28.114.32     | mx4.mail.yahoo.com |

and another:

-- [yahoo.com] --
DNS> records  : 21 an: 3  ns: 5  ar: 13
DNS> RR MX   ttl=1378   pre=1   | yahoo.com | mx1.mail.yahoo.com
DNS> RR MX   ttl=1378   pre=1   | yahoo.com | mx2.mail.yahoo.com
DNS> RR MX   ttl=1378   pre=5   | yahoo.com | mx4.mail.yahoo.com
DNS> RR A    ttl=1722   | 64.157.4.79      | mx1.mail.yahoo.com
DNS> RR A    ttl=1722   | 64.156.215.5     | mx1.mail.yahoo.com
DNS> RR A    ttl=1722   | 64.156.215.6     | mx1.mail.yahoo.com
DNS> RR A    ttl=1722   | 64.156.215.7     | mx1.mail.yahoo.com
DNS> RR A    ttl=1722   | 64.157.4.78      | mx1.mail.yahoo.com
DNS> RR A    ttl=1087   | 64.156.215.5     | mx2.mail.yahoo.com
DNS> RR A    ttl=1087   | 64.156.215.6     | mx2.mail.yahoo.com
DNS> RR A    ttl=1087   | 64.157.4.78      | mx2.mail.yahoo.com
DNS> RR A    ttl=1721   | 66.218.86.253    | mx4.mail.yahoo.com
DNS> RR A    ttl=1721   | 66.218.86.254    | mx4.mail.yahoo.com
DNS> RR A    ttl=1721   | 67.28.114.32     | mx4.mail.yahoo.com
DNS> RR A    ttl=1721   | 216.155.197.63   | mx4.mail.yahoo.com
DNS> RR A    ttl=1721   | 66.218.86.156    | mx4.mail.yahoo.com

count : 10
MX     0  | 1  | 64.157.4.79      | mx1.mail.yahoo.com |
MX     1  | 1  | 64.156.215.5     | mx1.mail.yahoo.com |
MX     2  | 1  | 64.156.215.6     | mx1.mail.yahoo.com |
MX     3  | 1  | 64.156.215.7     | mx1.mail.yahoo.com |
MX     4  | 1  | 64.157.4.78      | mx1.mail.yahoo.com |
MX     5  | 5  | 66.218.86.253    | mx4.mail.yahoo.com |
MX     6  | 5  | 66.218.86.254    | mx4.mail.yahoo.com |
MX     7  | 5  | 67.28.114.32     | mx4.mail.yahoo.com |
MX     8  | 5  | 216.155.197.63   | mx4.mail.yahoo.com |
MX     9  | 5  | 66.218.86.156    | mx4.mail.yahoo.com |

Seems to be doing the job now.

Thanks for your input.

-- 
Hector Santos, Santronics Software, Inc.
http://www.santronics.com






<Prev in Thread] Current Thread [Next in Thread>