Take the 2-minute tour ×
Server Fault is a question and answer site for professional system and network administrators. It's 100% free, no registration required.

We have a server that sends our weekly newsletter to subscribers, To prevent people like Hotmail or Yahoo from blocking us due to sending too many simultaneous emails to them, Is there a way we can stagger email, or rate-limit outbound emails from postfix?

Keep in mind, I dont want the mailserver to stop queueing mail or accepting new messages, Simply defer delivery if there are more then 3-4 messages per destination domain/ipaddress, or something similar.

Note: I dont want a Sender Throttle, as described in a similar question, here. I'm looking more for a recipient throttle but haven't had any luck finding out how to do so with PolicyD or Anvil services, and was wondering if anyone else has accomplished such a task.

share|improve this question
add comment

5 Answers

up vote 5 down vote accepted

You could use the deadbeats trick:

main.cf:

transport_maps = hash:/etc/postfix/transport
deadbeats_destination_concurrency_limit = 50

master.cf:

deadbeats unix - - n - - smtp -o smtp_connect_timeout=5 -o smtp_helo_timeout=5 smtp_connect_timeout=2

transport.cf:

hotmail.com             deadbeats:
yahoo.com               deadbeats:
earthlink.net           deadbeats:
freemail.com.au         deadbeats:
share|improve this answer
add comment

To supplement rkthkr's post, you will need to run postmap on the transports file (man transport(5))

postmap /etc/postfix/transport.cf
share|improve this answer
add comment

you can also add in

main.cf

deadbeats_destination_recipient_limit = 5

for having 5 recipients per session

share|improve this answer
add comment

Should read:

deadbeats    unix    -    -    n    -    -    smtp 
    -o smtp_connect_timeout=5 
    -o smtp_helo_timeout=5 
    -o smtp_connect_timeout=2

And you should restart Postfix

share|improve this answer
add comment

I'm pretty sure that rkthr's suggested master.cf of

deadbeats unix - - n - - smtp -o smtp_connect_timeout=5 -o smtp_helo_timeout=5 smtp_connect_timeout=2

has the 'smtp_connect_timeout' parameter mistakenly listed twice. If for some reason you wanted to have it listed twice, you would need another '-o' as described in user40991's answer.

share|improve this answer
add comment

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.