Basically what I want
to do is rewriting the From: Header, using header_checks, but only if the mail goes
to a certain domain.
The problem with header_check is, that I can't check for a combination of To: and From: Headers.
Now I was wondering if it was possible
to use the header_checks in combination with smtpd_restriction_classes or something similar.
I've found a lot information about header_checks and multiple header fields, when searching the net.
All of them basically telling me, that
one can't combine two header for checking.
But I didn't find any information if it was possible
to only do a header check if a condition (eg. mail goes
to example.com) was met.
Edit:
While doing some more Research I've found the following article which suggests
to add a Service in postfix master.cf, use a transportmap
to pass mails for the Domain
to that service and have a separate header_check defined with -o.
The thing is that I can't get it
to work...
What I did so far is adding the Service
to the master.cf:
example unix - - n - - smtpd
-o header_checks=regexp:/etc/postfix/check_headers_example
Adding the followin Line
to the transportmap:
example.com example:
Last but not least I have two regexp-files for header checks,
one for the newly added service, and
one to redirect answers
to the rewritten domain.
check_headers_example:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:
[email protected]>$2
Obviously if someone answers, the mail would go
to nirvana, so I have the following check_headers defined in the main postfix process:
/To:(.*)<(.*)@mydomain.example.com>(.*)/ REDIRECT
[email protected]$2
Somehow the Transport is ignored.
Any help is appreciated.
Edit 2:
I'm still stuck... I did try the following:
smtpd_restriction_classes = header_rewrite
header_rewrite = regexp:/etc/postfix/rewrite_headers_domain
smtpd_recipient_restrictions = (some checks) check_recipient_access hash:/etc/postfix/rewrite_table, (more checks)
In the rewrite_table the following entries exist:
/From:(.*)@mydomain.ain>(.*)/ REPLACE From:
[email protected]>$2
All it gets me is a NOQUEUE: reject: 451 4.3.5 Server configuration error. I couldn't find any resources on how you would do that but some people saying it wasn't possible.
Edit 3:
The reason I asked this question was, that we have a customer (lets say customer.com) who uses some aliases that will forward mail
to a domain, let's say example.com.
The mailserver at example.com does not accept any mail from an external server that come from a sender @example.com.
So all mails that are written from example.com
to [email protected] will be rejected in the end.
An exception on example.com's mailserver is not possible.
We didn't really solve this problem, but will try
to work around it by using lists (mailman) instead of aliases.
This is not really nice though, nor a real solution.
I'd appreciate all suggestions how this could be done in a proper way.