SpamAssassin - 如何使用多个规则自定义过滤器?

3

我正在尝试设置一个自定义的SpamAssassin过滤器,以应对我们从GMail和Hotmail帐户收到的大量SEO和Web dev垃圾邮件 - 最好是在服务器范围内,因为该服务器上托管了多个邮件。我已经针对成千上万的这些垃圾邮件示例对SA进行了训练,但通常SA的分数低于垃圾邮件阈值,因为它们通过了所有其他测试(SPF,RBL检查等),即使贝叶斯过滤器捕获它们。

我已将以下内容添加到我的/etc/mail/spamassassin/local.cf文件中:

# GMAIL & HOTMAIL SEO SPAM
header      GMAIL_HOTMAIL_SEO_SPAM  From =~ /\@gmail\.com|\@hotmail\.com|\@outlook\.com/i
body        GMAIL_HOTMAIL_SEO_SPAM      /seo|india/i
score GMAIL_HOTMAIL_SEO_SPAM          15
describe GMAIL_HOTMAIL_SEO_SPAM Web dev and SEO spam from GMail & Hotmail

显然,目标是捕获符合“标题”和“正文”规则的消息-一开始看起来它是有效的。 当我从包含“正文”规则单词的GMail和Hotmail帐户向该服务器上的帐户发送测试邮件时,过滤器被触发-而当我从相同的GMail和Hotmail帐户发送没有任何“正文”规则中单词的邮件时,它们不会触发过滤器。但是,当我从一个非GMail / Hotmail帐户发送一个包含“正文”规则中的单词的测试邮件时,也会触发过滤器。由于某种原因,“标题”规则似乎只有在满足“正文”规则条件时才会触发过滤器,但反之不成立,“正文”规则即使未满足“标题”规则的条件也会触发。有什么办法让它正常工作吗?
1个回答

4

经过一些测试和搜索,我成功地使用元规则使其正常工作:

# GMAIL & HOTMAIL SEO SPAM USING META RULES
header      __GMAIL_HOTMAIL_SPAM_FROM   From =~ /\@gmail\.com|\@hotmail\.com|\@outlook\.com/i
body        __GMAIL_HOTMAIL_SPAM_BODY       /india|seo proposal|seo quote|top ranking guaranteed|front page of google|top in google|google 1st page|guaranteed 1st page|top rankings on google|top ranking on google|top rank in google|top 10 positions in google|top 3 positions|1st ranking on google|1st page of google|1st page on google|1st position in Google|google page 1|ranking proposal/i
meta    GMAIL_HOTMAIL_SPAM __GMAIL_HOTMAIL_SPAM_FROM && __GMAIL_HOTMAIL_SPAM_BODY
score   GMAIL_HOTMAIL_SPAM  15

在from和body规则中的双下划线是为了防止这些规则被单独应用 - 如果没有它们,这些规则将被应用并添加一个得分 "1.0"。


想知道 PCRE 中是否需要用括号表示“或”(|)分组?/(word1|words2 words2|word3|etc)/i 只是好奇。 - B. Shea
1
说实话,我不太确定 - 这个过滤器主要是通过试错和修改我在网络上和Spamassassin文档中找到的示例过滤器拼凑而成的。尽管根据我所做的测试(从GMail和Hotmail帐户发送的测试消息)似乎它正在工作。 - StephenB
谢谢回复。是的,我想它可以工作。我猜我只是太习惯于通过组捕获/括号来完成它们,以至于我忘记了它也可以不用。参考 https://www.pcre.org/current/doc/html/pcre2syntax.html#SEC12(请参见ALTERNATION)。 - B. Shea

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接