I've a Ubuntu 9.04 server installation which is hosting a small number of websites (currently two, and will remain in single figures). The email requirements for the server are very limited - to send outgoing emails and forward all incoming emails to a mailbox on another server - most likely Google.

I've installed postfix and the outgoing mail is working fine. How do I configure Postfix to forward all incoming mail? If I send it to a googlemail address are there any special considerations? Finally how difficult is it to incorporate basic spam filtering into the forwarding mechanism?

4 Answers 4


This is called a "catch all"

Mapping is done using /etc/postfix/virtual file.

vi /etc/postfix/virtual

Append code as follows, replacing domain and emailusername with actual values:

@yourdomain.com emailusername

Save and close the file. Run following command:

postmap /etc/postfix/virtual

Also make sure you have following line in /etc/postfix/main.cf file:

virtual_alias_maps = hash:/etc/postfix/virtual

If you just added above, line reload postfix:

service postfix reload

From http://www.cyberciti.biz/faq/howto-setup-postfix-catch-all-email-accounts/

  • Brilliant stuff. This helped me too. Thanks Matt!
    – Mike B
    Dec 1, 2009 at 6:16

You need virtual aliases. Something like:

virtual_alias_domains = foo.com, bar.com
virtual_alias_maps = hash:/etc/postfix/virtual

where /etc/postfix/virtual contains:

@foo.com    [email protected]
@bar.com    [email protected]

run postmap /etc/postfix/virtual to create the database from the map file and postfix reload to re-read the configuration. The virtual table is quite flexible -- you can match specific addresses or whole domains and forward mail to multiple addresses.

Note: Do not list the extra domains in $mydestination! See the docs for more detail.

No special considerations I can think of when sending to GMail addresses. One optional neat trick is to send mail for each domain to a separate address and have GMail automatically label it accordingly. Forward mail for foo.com to [email protected] and bar.com to [email protected] and corresponding filters. See this GMail blog post for more.

I haven't tried but one method to filter spam is to incorporate SpamAssassin. A Google for this turns up quite a few handy-looking guides.


Isn't it simpler to use 'always_bcc = [email protected]' in main.cf? Denes


Note that when using virtual aliases or mail forwarding, Postfix tends to retain the envelope sender from the original message. This causes problems for Gmail and others that use SPF:

Received-SPF: softfail (google.com: domain of transitioning ***@***.com does not
    designate *** as permitted sender);

I haven't found any good solution for this, but here's a hack to sort-of-fix-it:

  1. Create a new file /etc/postfix/sender_canonical:

    /.*/    postmaster
  2. postmap /etc/postfix/sender_canonical

  3. Add some lines to /etc/postfix/main.cf:

    sender_canonical_classes = envelope_sender
    sender_canonical_maps = regexp:/etc/postfix/sender_canonical
  4. service postfix reload

  5. Send email from an external source and verify that Return-Path contains your postmaster@*** address

Warning: This replaces the envelope sender for all messages passing through your server, which may have unintended side-effects. The message From headers should not be modified by this however, so sender addresses should still display correctly.

  • How to configure sender_canonical to set a "From", I need to forward all incoming email using static email in "From" header, it is because I am using a relay that only can send email from the only email which are added there.
    – A.Aleem11
    Oct 12, 2018 at 6:42

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .