Use Postfix to forward mail to a domain to the same address at a different domain
Is there a way to configure Postfix to accept any mail for a domain (catch-all), and then forward that email to the same recipient at a different domain, ignorant of whether the recipient actually exists?
I use Postfix with a MySQL backing for virtual accounts.
Solution 1:
No this is not directly possible. There is one exception how it can work described in http://www.postfix.org/ADDRESS_REWRITING_README.html#luser_relay
Another crude solution would be to use SQL (substr + concat) to handle this for you in the virtual_alias_maps
.
Edit:
Oh. There is one last possibility. Use the policy delegation mechanism and return REDIRECT [email protected]
where you need it and DUNNO
if you don't want to rewrite.
Edit 2: Inspired by Squidly (but his solution does not work!) you can setup
virtual_alias_maps = pcre:/etc/postfix/forward_user.pcre, ...
and in that file put
/^(.*)@adomain\.example/ $(1)@other-domain.example
(Watch out for the escaped dot (\.) in the first column.) Personally I would prefer this version.
Solution 2:
The pcre table type is unavailable on my system, so I did the following:
-
In
/etc/postfix/main.cf
:virtual_alias_maps = regexp:/etc/postfix/virtual
-
In
/etc/postfix/virtual
:/^([^@]*)@olddomain/ $(1)@newdomain
Solution 3:
Not directly possible? I found it very simple and direct with no SQL, regular expressions, or policy mechanisms.
In main.cf
:
virtual_alias_domains = alias-destination1.com alias-destination2.com
virtual_alias_maps = hash:/etc/postfix/virtual
In /etc/postfix/virtual
:
# I want @true-destination.com to have two incoming aliases
@alias-destination1.com @true-destination.com
@alias-destination2.com @true-destination.com
Sending a test e-mail from the server:
# telnet localhost 25
Trying 127.0.0.1...
Connected to localhost.
Escape character is '^]'.
220 smtp.myserver.com ESMTP Postfix
HELO smtp.myserver.com
250 smtp.myserver.com
MAIL FROM:<[email protected]>
RCPT TO:<[email protected]>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Message-ID: <[email protected]>
Date: Thu, 05 May 2011 23:59:59 -0400
From: Some Body <[email protected]>
To: [email protected]
Subject: Hello
Just testing.
.
And the actual result in mail.log (I have amavis on port 10025 running):
Apr 6 22:39:43 smtp-a postfix/smtpd[4411]: connect from localhost[127.0.0.1]
Apr 6 22:39:43 smtp-a postfix/smtpd[4411]: 6B47641AF2: client=localhost[127.0.0.1]
Apr 6 22:39:43 smtp-a postfix/cleanup[3706]: 6B47641AF2: message-id=<[email protected]>
Apr 6 22:39:43 smtp-a postfix/qmgr[3681]: 6B47641AF2: from=<[email protected]>, size=1115, nrcpt=1 (queue active)
Apr 6 22:39:43 smtp-a postfix/smtpd[4411]: disconnect from localhost[127.0.0.1]
Apr 6 22:39:43 smtp-a amavis-incoming[2159]: (02159-13) Passed CLEAN {RelayedInternal}, LOCAL [127.0.0.1]:42426 [127.0.0.1] <[email protected]> -> <[email protected]>, Queue-ID: 5C61F41AE5, Message-ID: <[email protected]>, mail_id: hUbzH1PtXlzl, Hits: 2.605, size: 394, queued_as: 6B47641AF2, 1224 ms
Apr 6 22:39:43 smtp-a postfix/lmtp[3687]: 5C61F41AE5: to=<[email protected]>, relay=127.0.0.1[127.0.0.1]:10024, delay=25, delays=24/0/0/1.2, dsn=2.0.0, status=sent (250 2.0.0 from MTA(smtp:[127.0.0.1]:10025): 250 2.0.0 Ok: queued as 6B47641AF2)
Apr 6 22:39:43 smtp-a postfix/qmgr[3681]: 5C61F41AE5: removed
Key line separated for emphasis:
Apr 6 22:39:43 smtp-a postfix/smtp[3684]: 6B47641AF2: to=<[email protected]>, orig_to=<[email protected]>, relay=10.0.0.245[10.0.0.245]:2525, delay=0.03, delays=0.01/0/0/0.02, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 705AA40459)
Apr 6 22:39:43 smtp-a postfix/qmgr[3681]: 6B47641AF2: removed