使用SpamAssassin无法检测邮件网页链接,求排查原因
SpamAssassin自定义BADLINKS规则未触发的排查要点
未适配邮件编码格式
测试邮件里的src=3D"是Quoted-Printable编码后的内容,=3D对应原始字符=。如果你的正则基于解码后的内容编写,但使用了rawbody规则类型(处理未解码的原始邮件内容),或者用body规则但正则未兼容编码后的字符,就会匹配失败。
解决思路:若要匹配解码后的HTML内容,使用body规则;若匹配原始内容,正则需包含=3D这类编码字符,或统一用rawbody适配编码格式。正则表达式匹配范围不足
你的正则可能未覆盖HTML标签内的链接(比如<img src>属性中的URL),或未适配HTTPS协议、带参数的链接。例如正则仅写http://\S+会漏掉HTTPS链接,未考虑引号包裹的URL也会匹配失败。
示例修正正则(匹配HTML属性中的HTTPS/HTTP链接):body BADLINKS /<(?:img|a)[^>]+src=("|')https?:\/\/\S+\1/i规则定义格式不完整
检查local.cf中的规则定义是否符合规范:- 必须指定规则类型(
body/rawbody等),比如body BADLINKS /你的正则表达式/ - 必须设置规则得分,比如
score BADLINKS 3.0(得分需达到可被检测的阈值) - 正则分隔符需正确,若用
/作为分隔符,正则内的/要转义,或更换为#等其他分隔符
- 必须指定规则类型(
未考虑链接跳转中间层(后续DNS检查补充)
测试邮件中的链接是SendGrid追踪链接,这类链接本身的A记录并非127.x.x.x,但会跳转至目标地址。若后续DNS检查仅查当前链接的IP,需添加跳转追踪逻辑(比如利用SpamAssassin的urirhssub插件检查跳转后的最终IP),不过当前需先解决规则匹配触发的问题。
内容的提问来源于stack exchange,提问作者Lasse Michael Mølgaard
相关产品推荐
相关产品推荐

