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.