> Ben Kennedy wrote:
> 
> >Sam Varshavchik wrote at 9:02 am (-0400) on 21 6 2005:
> >
> >  
> >
> >>So, until modern technology advances to such a point, the 
> only logical 
> >>thing
> >>to do is attempt to deliver E-mail repeatedly, and follow 
> the preferred 
> >>logic for making each delivery attempt: pick a primary MX 
> at random, if you 
> >>can't connect it to it, pick a secondary MX at random, and so on.
> >>    
> >>
> >
> >I have to admit I am starting to come around to 
> understanding Rodrigo's 
> >viewpoint on this, however.  What is the *downside* of 
> having Courier 
> >retry a different (same-priority if exists, or next lowest, 
> as usual) 
> >MX rather than the same *potentially*-broken one, after the usual 
> >interval?
> >  
> >
> Yes, that's precisely my point.
> 
> >It won't be construed as a spam attempt, unless I guess you 
> are of the 
> >opinion that my sending two separate messages to you and 
> happening to 
> >have them connect to two different MX is also spammy 
> behaviour (no, it 
> >would just be coincidence).
> >  
> >
> That's my understanding also.

What you're suggesting here makes some sense, but you have to think
about it from a bigger-picture perspective.  Basically, you're trying to
change stateless SMTP handling based upon MX records into a stateful
system that remembers broken MXes and acts on that knowledge.

This could help some cases, but in most cases, this is simply going to
create a new superstructure of information and processing of that
information.  And keep in mind that for most mail servers, they're only
going to send a few mails to each domain, except for a few tight
partners with whom they trade lots of mail.  If it's a high-volume
associate, you could probably lean on them to fix their servers or
update the DNS.  If it's someone you only send a couple pieces of mail
to once in a while, then let the messages go at the best-effort way they
do now.

The only way this would be viable, in my opinion, is if we created a new
project that used DNS to query for the MX records, passed the best one
to the mail server, and then received a report from the mail server
(pass or fail) for that MX.  We would save the information and base our
future suggestions of the best MX on this information.  Thus, servers
that never allow mail through will not be recommended as the best
choice, while those that operate correctly will.  

Doing something like this, however, would completely undermine the MX
system in place, and take control out of the hands of the local
administrator, who are supposedly the best-informed of what's actually
going on.  Suppose for a moment that you have the following scenario:

Primarymail.nowhere.com  10
Othermail1.nowhere.com   20
Othermail2.nowhere.com   20
Othermail3.nowhere.com   20

Now suppose Primarymail has a memory problem and just stops responding
after receiving a small portion of the body of the email.  So, the
connections keep timing out.  Under the above proposal, it would be
marked as BAD.

You try Othermail2.nowhere.com as your random choice.  It has the same
problem.  It is marked as BAD.
You try Othermail3.nowhere.com as your second choice.  Again, same
problem.  It too is marked as BAD.
Finally, you try Othermail1.nowhere.com.  It works.  Hooray!

Ok, now 30 seconds later, you have another email to send.  Do you try
Primarymail.nowhere.com first?  It's been marked as bad, right?  Well,
it's weight is 10, so you really ought to try it first.  On the second
round, the only mail server not marked as BAD is Othermail1.nowhere.com.
So you try it.  But it fails.

The key is, the clueful administrator of nowhere.com is in the process
of switching the host records to point to the email servers in such a
way that the working email server will become Primarymail.nowhere.com.
But you hit it at a bad time.  Maybe DNS caching with your provider
screwed everything up.  Maybe he was changing the IP addresses on the
servers.  Maybe Godzilla decided to chew on the Cat5 cable at just the
wrong time.  The point is, you have no knowledge of what is going on
there.  And you shouldn't have to.

So, what do you do?  Do you unmark all of the failed MX records?  Do you
have a score that keeps accruing based on how many bad responses are
received?  What is bad, anyway?  4xx?  5xx?  Connection refused?  And
how much more complexity did we add, and for what gain?

I think such a system could work.  It would take a lot of work on a
powerful back-end, and it would take a lot of work with all the
different email servers, as each would have to query our DNS and send us
a response.  But in the end, it could work, much like the DNS
blacklists.  But the real solution is to let the administrators fix
their email servers, and let the DNS fixes propagate out.  If the
administrator can't do this, then they don't deserve to get email
anyway!  

I know we've had problems in the past, and I'm glad that most mail
servers will queue up emails for a while and keep trying until we're
back up.  And even with a T1, we have experienced downtime, so don't
tell me it's only with dial-up!

Part of the beauty of SMTP is it's simplicity.  Servers do not have to
know anything about where they are sending the message.  They don't have
to remember any information between connection attempts.  They simply do
what they're supposed to in the same way every time.  Anything we did to
mess with that would have to have serious advantages that couldn't be
accomplished any other way!

SMTP may be broken, but it's ubiquitous.  If we're going to go to such
lengths to try to fix something that works OK when properly configured,
we might as well go and invent a new protocol that fixes other
limitations.  But that sounds like a Redmond solution, after all.

Just some thoughts, 
David Gomillion




-------------------------------------------------------
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