如何配置SpamAssassin规则拦截含超大边距隐藏文本及大图的垃圾邮件?
针对含隐藏文本垃圾邮件的SpamAssassin拦截规则
一、利用内置规则拦截
SpamAssassin自带不少针对隐藏内容和图片垃圾的内置规则,直接启用或调整评分就能用:
- HTML_HIDE_BIG_MARGIN:专门扫描HTML里异常超大的margin属性值,像你碰到的
margin-bottom: 223328553564px这种极端数值,这个规则会触发评分。 - HTML_HIDE_DISPLAY_NONE:识别通过
display: none样式隐藏的文本,当隐藏文本占比和可见内容严重失衡时触发。 - HTML_HIDE_OPACITY_0:部分版本会检测
opacity: 0这类透明隐藏的样式,抓取刻意隐藏文本的操作。 - IMAGE_SPAM:分析邮件中文本和图片的比例,要是邮件几乎全是大图、可见文本极少,这个规则会判定为图片垃圾邮件。
二、自定义精准拦截规则
如果内置规则不够精准,你可以在SpamAssassin的本地规则文件(比如local.cf)里添加以下自定义规则:
- 拦截超大边距的自定义规则
直接匹配位数超10位的margin数值:
body HTML_HIDE_EXTREME_MARGIN /margin-(top|right|bottom|left):\s*\d{10,}px/i score HTML_HIDE_EXTREME_MARGIN 4.0 describe HTML_HIDE_EXTREME_MARGIN 检测到异常超大边距用于隐藏文本
- 组合多种隐藏样式的规则
把隐藏样式和图片垃圾的特征结合,精准锁定这类邮件:
meta HIDDEN_TEXT_SPAM (HTML_HIDE_DISPLAY_NONE || HTML_HIDE_OPACITY_0 || HTML_HIDE_EXTREME_MARGIN) && IMAGE_SPAM score HIDDEN_TEXT_SPAM 6.0 describe HIDDEN_TEXT_SPAM 隐藏合规文本并显示垃圾大图的垃圾邮件
- 检测隐藏文本与可见内容的比例
通过自定义规则判断隐藏文本占比是否过高:
rawbody HIDDEN_TEXT_RATIO eval:check_hidden_text_ratio(0.8) score HIDDEN_TEXT_RATIO 5.0 describe HIDDEN_TEXT_RATIO 隐藏文本占比过高,疑似垃圾邮件
注:check_hidden_text_ratio需要配合SpamAssassin的自定义函数或文本分析工具来实现占比计算。
三、额外配置建议
- 调整内置规则评分:如果默认评分拦不住,比如把
HTML_HIDE_DISPLAY_NONE的分数从默认2.0调到3.5,增强拦截力度。 - 结合垃圾内容关键词:配合检测大图alt文本、链接里的垃圾关键词,和上面的规则联动,进一步提升准确率。
内容的提问来源于stack exchange,提问作者Hermann
相关产品推荐
相关产品推荐

