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.

This is related to this question: http://serverfault.com/questions/20550/ways-to-get-a-bounceback-report-for-my-newsletter-application

Let's say I'm generating email addresses like this when I send out newsletters to identify bounces and unsubscribe them from my newsletter: bounce-123456789@example.com

I assume I'd use this in the return-path, right?

Then how would I set it up in postfix to collect all these addresses prefixed with "bounce-" into one mailbox?

Finally, I've heard people mention a soft bounce vs. a hard bounce. Can someone explain the different and how they should be counted to know when to permanently remove someone from an email newsletter?

Thanks!

share|improve this question

2 Answers 2

up vote 9 down vote accepted

The exact answer to your question (handling the bounce-xxx@example.com address) depends on how your server is configured to receive mail. If example.com is the virtual domain the best you can do is collect the messages in the bounce@example.com mailbox (assuming recipient_delimiter = -).

If example.com is the locally delivered domain for the server (mail is delivered to actual system accounts) then you can add a .forward file to the home directory of the bounce user, which delivers to a program that parses the bounce information and records it in a database or file. See man local for more info on the .forward format and how to deliver to a program.

What we do, since we send messages for a large number of domains, is use bounces.example.com as our VERP domain. This domain needs to be added to relay_domains. Create /etc/postfix/transport_maps with this content:

bounces.example.com             bulkbounce:

Then append a line similar to this to /etc/postfix/master.cf:

bulkbounce   unix  -       n       n       -       -       pipe
  user=nobody argv=/usr/local/bin/bounce_handler.py ${recipient}

The bounce_handler.py script accepts the VERP address as its command line option, parses it and makes the necessary database updates to record the bounce.

share|improve this answer
    
Ooh, I like the idea of using the recipient delimeter to group them. Typically a + is used right? I think that will work great, thanks! –  Brian Armstrong Jul 31 '09 at 21:40

Most modern mailing list software already knows how to handle VERP messages if the MTA is properly configured to pass them back to the mailing list software. In the case of GNU Mailman you should checkout the FAQ page aptly named "How do I use VERP with a - delimiter (Postfix recipient_delimiter)?".

If you're making your own custom newsletter software to handle this you should ask yourself why you're re-inventing the wheel instead of using existing applications that can handle the task simply and easily for you already.

share|improve this answer
    
Yep, I'm making my own newsletter software. There is a good reason! –  Brian Armstrong Jul 31 '09 at 3:23
    
Then you should look at having it use VERP to handle bounces properly. –  Jeremy Bouse Jul 31 '09 at 10:48
    
Hi Jeremy, I think you're right VERP is the standard solution here, although it appears it's only useful to identify the sender and recipient. In this case we need to also identify the particular message which went out that caused the bounce, so I believe we'll have to do a custom solution with our own ID in the address. I think the solution mentioned below using a recipient delimeter will let us group them together in one bounce account. Thanks for the response though I appreciate the help! –  Brian Armstrong Jul 31 '09 at 21:39
    
Insyte's solution is just a modified VERP at it's core. You just need to make sure that it provides enough of a unique identifier for your bounce handler to identify it. In most mailing list software that is the email address, but could be anything since you're designing your own. –  Jeremy Bouse Aug 1 '09 at 0:25

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.