I am trying to configure Postfix to NOT accept outbound messages with FROM addresses other than my own domains.
The following regex successfully rejects only 3 domains:
/etc/postfix/header_checks:
/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS!
I'd like to basically reverse it and block EVERYTHING BUT those 3.
So according to the manual:
!/pattern/flags result When pattern does not match the input string, use the corre- sponding result value.
However, this just blocks everything:
/etc/postfix/header_checks:
!/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS!
The problem is postfix use header_checks for every header line. So if there is header line like
and postfix will apply that regex into this line. The result is postfix will reject this email.
The solution is adding
if endif
in your regex patternBasically you tell postfix to apply the pattern into From header only. This will prevent postfix to evaluate the regex into another header line and causes rejected email.
See postfix manual to further information