Wednesday, February 24, 2010

Redirect all outgoing email to a single account with postfix

Wednesday, February 24, 2010 Posted by Andre Broers , ,
copied from:

.Lab environments can get fairly messy if not maintained and the gentle hand of a sysadmin is routinely applied. Security compliance is generally the last thing on a developers mind whilst hacking away at projects still in the development stage. Having lab databases filled with unobfuscated customer data which is never a good idea, is unfortunately common.

Im not condoning having real customer data in a lab environment, though it does happen and there is a real potential for a disaster to occur such as testing out your latest 'mass email 2.0' code on your lab database not realising that your lab data is actually a production data set. Oh yer, you also forgot to firewall outbound port 25/tcp aswell as well as having recursion available within your internal BIND9 view. Doh!@#

Heck, having your lab have any access to the intertubes is just a plain bad idea.. period.

Again, im not condoning this though you may want to catch all outgoing emails and redirect them to a single email account which can be viewed by fellow engineers and developers as a means of testing your features that can generate email.

Postfix can be setup to redirect all outgoing email to a single account. As long as your code hands email off to your MTA, this hack will do what you need. Your will need to look a bit like this.

relayhost =
bounce_queue_lifetime = 0
maximal_queue_lifetime = 0
always_bcc = rene@localhost

relayhost lets postfix know what is the next host to relay outgoing email through. For this hack, set relayhost to a bogus address. Setting this to a bogus IP address will force postfix to keep the email in its delivery queue without it actually reaching its next hop.

bounce_queue_lifetime defines the amount of time a bounce message is queued before it is considered undeliverable. Postfix will only attempt to deliver the bounce message once if bounce_queue_lifetime is set to 0.

maximal_queue_lifetime is the maximal time a message is queued before it is sent back as undeliverable. Again, 0 forces postfix to only attempt once.

Finally, always_bcc is the email account that will catch all mail. This account will also catch Non-Delivery Notifcation's which may become annoying though a little procmail fu will fix that.