Postfix recipient rewriting from one domain to another

postfixrewrite

I have a situation where emails sent to marketing@domain1.com are configured to go to a listserver via virtual_alias_maps:

virtual_alias_maps = $virtual_maps hash:/Library/Server/Mail/Data/listserver/aliases/list_server_virtual

I also have emails to marketing@domain2.com go there as well, but the listserver sucks (I'm stuck with it), and refuses to accept anything that isn't addressed to domain1.com. So, I thought rewriting might be the solution. Unfortunately, I'm not sure that rewriting ACTUALLY rewrites the To: header, which is what I was expecting and what I need to occur (I'm assuming my expectations are flawed).

So, I added:

 recipient_canonical_maps = hash:/Library/Server/Mail/Config/postfix/canonical

And /Library/Server/Mail/Config/postfix/canonical contains:

 marketing@domain2.com               marketing@domain1.com

Now, emails sent to marketing@domain2.com are getting redirected ("rewritten"?) to marketing@domain1.com, but when the email comes through, it still says "To: marketing@domain2.com".

So, to make things easier to troubleshoot, I updated canonical to rewrite marketing@domain2.com to come straight to me (bypassing any potential listserver confusion):

 marketing@domain2.com               me@domain1.com

But again, when emails are sent to: marketing@domain2.com, they are correctly delivered to me@domain1.com, but the headers still show "To: marketing@domain2.com"

Is there any way to get Postfix to literally rewrite the 'To:' header?

Best Answer

Modifying headers is not recommended and Postfix has abandoned it for reasons explained in Postfix Address Rewriting:

Postfix versions 2.1 and earlier always rewrite message header addresses, and append Postfix's own domain information to addresses that Postfix considers incomplete. While rewriting message header addresses is OK for mail with a local origin, it is undesirable for remote mail:

  • Message header address rewriting is frowned upon by mail standards,
  • Appending Postfix's own domain produces incorrect results with some incomplete addresses,
  • Appending Postfix's own domain sometimes creates the appearance that spam is sent by local users.

Postfix versions 2.2 give you the option to either not rewrite message headers from remote SMTP clients at all, or to label incomplete addresses in such message headers as invalid.

It's possible to change this behavior for canonical address mapping:

NOTE: Postfix versions 2.2 and later rewrite message headers from remote SMTP clients only if the client matches the local_header_rewrite_clients parameter, or if the remote_header_rewrite_domain configuration parameter specifies a non-empty value. To get the behavior before Postfix 2.2, specify

local_header_rewrite_clients = static:all

Also notice that if the headers are DKIM signed, DKIM will fail if tested after rewriting the headers. That's one practical reason why this might not be a good idea.

Related Topic