Postfix Header_Check Regex“不匹配”问题

Postfix Header_Check Regex“不匹配”问题

我正在尝试将 Postfix 配置为不接受来自我自己的域以外的地址的出站消息。

以下正则表达式仅成功拒绝 3 个域:

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

我想从根本上扭转它并阻止除这三个之外的所有内容。

因此根据手册:

!/pattern/flags result 当 pattern 与输入字符串不匹配时,使用相应的结果值。

然而,这只是阻止了一切:

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

答案1

问题是 postfix 使用 header_checks每一个标题行。因此,如果有这样的标题行

Subject: I love you :p

并且 postfix 会将该正则表达式应用到此行。结果是 postfix 将拒绝此电子邮件。

解决方案是添加if endif正则表达式模式

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

基本上你告诉 postfix 将模式应用到仅限标题。这将阻止 postfix 将正则表达式评估为另一个标题行并导致电子邮件被拒绝。

Postfix 手册 了解更多信息

相关内容