我正在尝试将 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 手册 了解更多信息