You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Postfix body_checks拦截邮件后,如何定位触发的正则表达式并移除该规则?

Postfix body_checks拦截邮件后,如何定位触发的正则表达式并移除该规则?

嘿,我来帮你搞定这个问题!遇到body_checks误拦重要邮件确实闹心,咱们一步步来排查和解决:

第一步:定位触发拦截的具体规则

Postfix默认不会记录具体是哪条body_check规则触发了拦截,所以得先调整配置,让它把匹配细节打在日志里:

  1. 临时修改body_checks规则,添加日志标记
    打开你的/etc/postfix/body_checks文件,把每条规则里的REJECT改成WARN REJECT,比如:

    /xxlady/                               WARN REJECT
    /Aktfotos/                             WARN REJECT
    /betrogen/                             WARN REJECT
    # 剩下的所有规则都做同样修改
    

    这样调整后,Postfix在执行拦截动作前,会先把匹配到的规则信息写入日志。

  2. 重新加载Postfix配置
    执行命令让配置生效:

    postfix reload
    
  3. 触发邮件并查看日志
    让发件人重新发送那封被误拦的邮件,然后查看Postfix的日志文件(通常是/var/log/mail.log或/var/log/maillog),搜索包含body_checks的日志条目,你会看到类似这样的内容:

    body_checks: warn: regexp match: /CPF\s057\s200\s664\s645/ against "邮件内容里的相关文本"
    这条日志就明确告诉你,是哪条正则规则触发了拦截。

第二步:移除或调整误触发的规则

找到那条误匹配的规则后,你有两种处理方式:

  • 直接注释/删除规则:在/etc/postfix/body_checks里给那条规则前面加#注释掉,或者直接删除整行;
  • 调整正则表达式:如果规则本身有必要保留,只是匹配范围太宽,你可以修改正则(比如添加单词边界\b,或者调整匹配逻辑)。

修改完成后,记得把之前加的WARN去掉(改回REJECT),然后再次执行postfix reload让配置生效。

最后,再测试发送一次邮件,确认它能正常被接收就搞定啦!

备注:内容来源于stack exchange,提问作者Rafael

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:05:08