Postfix seems too aggressive while sending newsletters

I'm having a problem sending newsletters to certain domains/servers, like yahoo or minor network providers. It's like I'm spamming their servers with connections and they tell me to stop after a short while. I do get a bunch of emails through, but then I'm faced with messages like the below for a period of time (an hour or so) until the connection is reopened:

status=deferred (delivery temporarily suspended: lost connection with mx-eu.mail.am0.yahoodns.net[188.125.69.79]

I'm not interested in spamming their servers with connections and have tried various of different parameters in order to tune postfix to my needs. What I've tried so far in short:

  • Reducing concurrent connections globally
  • Inserting a delay of 1 second globally
  • Reduced the number of processes to as low as 2
  • Created specific policies for the domains in question (source: http://steam.io/2013/04/01/postfix-rate-limiting)

Does any of you have experience in this matter? And would it be possible to create policies for these specific recipient servers for instance yahoo?

Configuration examples will be appreciated.


Solution 1:

Postfix is not being particularly aggressive. It's trying to deliver mail in accordance with SMTP and various best practices.

This is Yahoo's fault.

Yahoo has extremely low limits on simultaneous recipients of a message from a single sender. I see this occur with a small 500-member list with only a couple of dozen Yahoo addresses on it.

The contents of this particular list are extremely time-sensitive; if the message isn't received, read and acted on within two minutes, it loses much of its value.

My "solution" is to warn Yahoo Mail users that Yahoo may delay receipt of their mail and that they may wish to consider a different provider. This may or may not work for you. Since Postfix retries the remaining recipients pretty quickly, this isn't usually a serious issue.

Some other possible solutions are:

  • VERP. This makes every message unique and also happens to work around Yahoo's ridiculously low limits, but it slows down delivery and increases bandwidth usage dramatically because message bodies have to be repeatedly transmitted for every recipient. You might want to run tests and determine whether the difference in delivery time is acceptable or not. For something as time-sensitive as the list I mentioned above, VERP is impossible.

  • Change the Postfix smtp_destination_recipient_limit setting. By default this is 50, meaning Postfix will try to deliver to up to 50 recipients per connection it makes to another SMTP server. Since Yahoo only seems to accept about 10 at a time, changing this to 10 would help. However, this would affect delivery to all destinations, even those that don't necessarily need to be artificially limited in this manner, and slow down all mail delivery. And since 50 seems to be an industry-wide best practice, I still won't recommend this.

Finally, the configuration listed in the article you linked seems fine. It's possible that you missed something while implementing it, or that Yahoo has decided it really doesn't like you.