Postfix header_checks 不起作用:前面的正则表达式无效

Postfix header_checks 不起作用:前面的正则表达式无效

我在使用 Postfix 时遇到了问题。最近我们收到的邮件带有格式错误的“发件人:”标头,如下所示:

From: "Name Surname <[email protected]>" <[email protected]>
From: "[email protected]" <[email protected]>

最终得到了基于 PCRE 标头检查的解决方案,使用以下两个正则表达式:

/^From:.+(".+<(.*@+.*)>").*<((?!\2).*)>$/ REJECT
/^From:.+("([^<>]*@+[^<>]*)").*<((?!\2).*)>$/ REJECT

完毕

postmap /etc/postfix/header_checks

并重新加载后缀。

看起来运行正常,并且 POstfix 显然可以毫无问题地处理 PCRE:

postmap -q 'From: "Name Surname <[email protected]>" <[email protected]>' pcre:/etc/postfix/header_checks
REJECT
postmap -q 'From: "[email protected]" <[email protected]>' pcre:/etc/postfix/header_checks
REJECT

但实际使用中邮件并没有被拦截。日志中有以下(重复的)错误:

Nov 22 10:52:19 mx1 postfix/cleanup[32087]: warning: regexp map /etc/postfix/header_checks, line 497: Invalid preceding regular expression
Nov 22 10:52:19 mx1 postfix/cleanup[32087]: warning: regexp map /etc/postfix/header_checks, line 498: Invalid preceding regular expression

/etc/postfix/header_checks文件内容如下(前496行是注释):

/^From:.+(".+<(.*@+.*)>").*<((?!\2).*)>$/ REJECT
/^From:.+("([^<>]*@+[^<>]*)").*<((?!\2).*)>$/ REJECT
/^Subject:/ WARN

附加信息:

- There are no receive_override_options: the file is used as the subject are correctly logged in logfile (last line). And the errors too shows the file is handled by postfix.
- Tested the two regexp with multiple online services and they seems correct: also the postmap -q tests shows they are working correctly.
- Postfix 2.10.1 and PCRE 8.32 on a CentOS 7.7

任何想法?

相关内容