August 17th, 2006


Yahoo's mail servers

I now have scientific evidence that Yahoo runs the worst mail server farm on the Internet.

Publication of results to follow.

Update: Randy thinks this is too harsh and got me in contact with the Yahoo folks. What I said to Yahoo:
We're actually not quite sure if Yahoo's mail servers "suck" or if they're just really aggresive in their anti-spam efforts.

The success rate of a TCP connect to any of the IPs in the first 3 mx records happening within any sane amount of time is relatively low, compared to other mail servers on the Internet. Sometimes an IP will take a connection in milliseconds, followed by 15 - 120+ seconds the next time (on the same IP), followed by milliseconds again. So it doesn't /seem/ like anti-spam or rate limiting, but instead like poor load balancing.

Or maybe this is intentional and we need to get onto a bulk sender whitelist? I have no clue how your incoming mail servers are setup, though.
From my perspective, Yahoo is the only big email provider whose email servers don't answer somewhat immediately, and my logs are filled with errors that we couldn't establish a connection to *any* of their MX servers in a reasonable amount of time, so mail to Yahoo users had to be delayed until a future attempt.

If Yahoo wants to greylist me or even tell me "4xx too busy try later" immediately upon connect (which they do, sometimes), I'm fine with that. But not even taking a connection for 12+ seconds is just ridiculous. I send email to gmail and it's taken in milliseconds and is server-pushed to the gmail client in the browser within a second after that. That's just impressive. Not so impressed with Yahoo's end-to-end.

greylisting 4xx patterns

We're building a list of error messages as given out by greylisting email servers so we can pattern-match on it and re-schedule the email exactly when we're told it's okay to.

Here's the patterns we've seen so far:
451 Greylisting enabled, try again in 1 minutes                                                                                                                  
451 4.7.1 Greylisting in action, please come back in 00:09:00                                                                                                     
451 4.7.1 Greylisting in action, please come back later                                                                                                   
450 <>: Recipient address rejected: Greylisted for 181 seconds
450 4.7.1 <>: Recipient address rejected: Greylisted for 300 seconds (see
450 <[]>: Client host rejected: Policy Rejection- GreyList learning. Please try later.
450 <>: Recipient address rejected: Policy Rejection- Hotkey Greylisting in progress ... Please try again after 2 minutes
451 sender/recip/ip triad greylisted; retry AFTER A DECENT INTERVAL will succeed
450 <>: Recipient address rejected: Greylisting in action. Please try delivery again in 240 seconds.
451 4.3.0 Temporarily greylisted as anti-spam measure.  Please try again.
451 <>: Recipient address rejected: Service is greylisted.  Waiting for retransmit.
etc, etc.

Think I need to write a CPAN module just to return the number of seconds to retry given a string.