5

In order for my webb-app unit tests to work in my local development environment, namely where email delivery is concerned, I installed postfix.

Come to find out my co-workers are now getting numerous emails each time I run our unit tests. So I'd like to configure postfix so that outgoing mail is not actually delivered to the outside world, but instead written to an arbitrary directory on my filesystem.

I've done a fair amount of searching, however I haven't found a solution specific to my needs. The closest solution I can find is routing mail through a custom script, as linked below, however this has not done the trick just yet.

Thanks in advance for any assistance --

How do I get Postfix to deliver ALL mail to a custom script?

5

Yes it is possible. Add the following lines to your /etc/postfix/master.cf:

fs_mail    unix  -       n       n       -       -       pipe
   flags=F user=%YOUR_USER_NAME% argv=tee /home/%YOUR_USER_NAME%/fs_mail.dump

And then add this line to your /etc/postfix/main.cf:

default_transport = fs_mail

And then restart your Postfix server

sudo /etc/init.d/postfix restart

And it should save all outgoing mail into fs_mail.dump file in your home folder (replace %YOUR_USER_NAME% with your real username ;) )

| improve this answer | |
  • 1
    Possible to add fs_mail as an additional channel, rather than making it the only / default one? – frhd Oct 1 '15 at 15:58
4

You can use the smtp-sink utility that ships with postfix:

smtp-sink -u root -d %d.%H.%M.%S 192.168.1.10:25 10

smtp-sink writes out the files with a timestamp.hex

Cheers

P.S.

You were pretty quick on the acceptance of the best answer.

P.P.S.

You specifically mentioned postfix so I mentioned smtp-sink but fakemail works better IMHO as it writes out the files as foo@example.com.N where N is the occurrence of the same address. http://sourceforge.net/projects/fakemail/

| improve this answer | |
  • +1 I agree, for the purpose of unit testing, fakemail is really the way to go! – ciceron May 6 '12 at 10:18
1

one way is redirect all mails to a local account.

# main.cf

header_checks = regexp:/etc/postfix/header_checks

# /etc/postfix/header_checks

/./   REDIRECT some@local.account
| improve this answer | |
0

Easiest way, IMHO, is to create a local email address on your development machine and then configure postfix to redirect all mails to that address and discard them afterwards.

Take a look here for some hints.

| improve this answer | |

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

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