Postfix 3.5.9配置regexp header_checks报expected format错误如何解决
报错原因
- 核心原因是
postmap校验的命令参数错误:regexp类型的Postfix查表不需要编译为db文件,直接执行postmap /etc/postfix/header_checks时,postmap会默认按照hash类型的键值对格式解析文件,把正则行当成普通键值对校验,匹配不到「key 空格 value」的格式就会触发报错。 - 次要的配置优化点:你在
if /^From:/匹配块中已经过滤了所有From头,块内的规则不需要重复写^From:前缀,虽然不会直接报错,但属于冗余写法,还可能提高正则误匹配概率。
修复方法
- 如需校验regexp格式的header_checks配置正确性,必须指定查表类型,执行命令:
postmap -q "From: test@wrong.com" regexp:/etc/postfix/header_checks
配置正确的前提下,输入非法发件人时会返回你设置的REJECT规则,输入合法域名的发件人则无返回。
2. 可选优化/etc/postfix/header_checks配置,简化冗余的正则前缀,修改后内容如下:
if /^From:/ !/@(domain\.com|domain\.net|domain\.co\.il)$/ REJECT SEND FROM THE RIGHT DOMAINS FFS! endif
- 重载Postfix配置让规则生效:
postfix reload
内容的提问来源于stack exchange,提问作者Blue Eye
相关产品推荐
相关产品推荐

