To create a test email server, I have a similar requirement as:

How to redirect all outgoing email from postfix to a single address for testing

But I need to send all the emails to an external account, not a local one.

I would like to do something like:

  • xyz:email@gmail.com

but xyz is not local nor smtp.


Create /etc/postfix/virtual-regexp with the following content:

/.+@.+/ email@gmail.com

Edit /etc/postfix/main.cf and add regexp:/etc/postfix/virtual-regexp to the virtual_maps configuration. The end result might look like this in main.cf:

virtual_maps = hash:/etc/postfix/virtual, regexp:/etc/postfix/virtual-regexp

Build the mapfile by typing:

postmap /etc/postfix/virtual-regexp

This also requires a virtual.db to exist. If it doesn't create an empty file called virtual and run :

touch /etc/postfix/virtual && postmap /etc/postfix/virtual


|improve this answer|||||
  • 1
    Thank you Mattias Ahnberg for your answer, How about sending multiple mails to the machine with postfix installed with one unique email address (gmail for example)? I can only receive the 2-3 first mail , the rest is bounced. – postmaps Jun 1 '13 at 20:13
  • Is it possible to redirect all mail addressed to local users (root etc.) to some external address and not redirect other mail? I think the at sign should be negated somehow – basin May 15 '15 at 14:05
  • @basin Is seems like replacing email@gmail.com with root@localhost would do that, no? – user14645 Jun 23 '15 at 15:47
  • No, I guess this answers: serverfault.com/questions/318426/… – basin Jun 23 '15 at 21:48
  • Regular expression tables are used as is, there’s no point in running postmap on them. – Joó Ádám Jul 23 '15 at 21:06

As this took me some time:

If you want to exclude target domains from this, prefix the rule with

/.+@exclude1.com/ @exclude1.com
/.+@exclude2.com/ @exclude2.com

to preserve original recipient, i found the virtual manpage a bit confusing on how to achive this.

|improve this answer|||||

Is it acceptable to just have it go to a local account that then forward all mail to your external address? You could get it running like the other question you mentioned, and then use procmail to have the messages forwarded and then deleted locally. Something like this would probably do the trick by replacing the folder with /dev/null.

|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.