匹配特定模式的 Spamassassin 过滤器名称

Spammassassin filter names that match a specific pattern

我最近收到了很多来自许多域的垃圾邮件(太多以至于无法列入黑名单),其中发件人姓名遵循以下模式:Name S. 因此名称后跟白色 space,然后是一个字母,最后是一个点。我想知道我是否可以在 Spamassassin 中实现它。考虑到这一点,这是我的问题:

  1. header 的哪一部分包含发件人姓名?我猜是 from header,但是 postfix 只在日志中显示电子邮件地址,所以我有点困惑。

  2. 假设 1. 的答案是肯定的,这是正确的 Spamassassin 规则/正确的正则表达式来实现我想要实现的目标:

header NAME_SPACE_LETTER_POINT=~/((?:[a-z][a-z]+))(\s+)([a-z])(\.)/ score NAME_SPACE_LETTER_POINT 5.0

  1. 仅根据单一规则将邮件标记为垃圾邮件是否是一种好的做法? (服务器的垃圾邮件阈值是5,所以上面的规则会立即将任何邮件标记为垃圾邮件)

提前感谢您对这些问题的任何建议/答案!

语法几乎正确。应该是:

header NAME_SPACE_LETTER_POINT From =~ /((?:[a-z][a-z]+))(\s+)([a-z])(\.)/

此外,正则表达式是错误的,因为它们默认区分大小写,因此需要在末尾添加 i 选项。括号似乎也太多了,所以我把它们剪掉了一点。

/([a-z][a-z]+\s+[a-z]\.)/i

它可能需要进一步限制,因为它会在“发件人”字段中的任何位置匹配 "Name S.",因此会匹配完全有效的名称 "Samuel L. Jackson",例如。

我认为你问题的第三部分有点主观。就我个人而言,我不会给这个特定规则很高的分数,因为即使你进一步限制正则表达式,它仍然可能会出现一些误报。如果该规则针对的是始终是垃圾邮件的特定 words/phrases,那么在我看来,给它如此高的分数以始终将其标记为垃圾邮件是可以的。