Postfix Header_Check正则expression式'不匹配'的问题

我试图configurationPostfix不接受与我自己的域以外的FROM地址的出站邮件。

以下正则expression式只能成功拒绝3个域:

/etc/postfix/header_checks: /(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS! 

我想基本上扭转它,并阻止一切,但3。

所以根据手册:

!/ pattern / flags结果当模式与inputstring不匹配时,使用相应的结果值。

但是,这只是阻止了一切:

 /etc/postfix/header_checks: !/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS! 

问题是后缀使用header_checks 每个标题行。 所以,如果有标题行像

 Subject: I love you :p 

后缀将应用该正则expression式到这一行。 结果是postfix会拒绝这封电子邮件。

解决scheme是添加if endif您的正则expression式模式if endif

 if /^From:/ !/(^From:.*domain\.com|^From:.*domain\.net|^From:.*domain\.co\.il)/ REJECT SEND FROM THE RIGHT DOMAINS FFS! endif 

基本上,你告诉后缀只将模式应用到From头。 这将阻止后缀评估到另一个标题行的正则expression式,并导致拒绝的电子邮件。

进一步的信息见postfix手册