了解 SpamAssassin HK_RANDOM 正则表达式

问题描述 投票:0回答:2

SpamAssassin 有几个尝试检测“随机查找”值的规则。例如:

/^(?!(?:mail|bounce)[_.-]|[^@]*(?:[+=^~\#]|mcgr|kpmg|nlpbr|ndqv|lcgc|cplpr|-mailer@)|[^@]{26}|.*?@.{0,20}\bcmp-info\.com$)[^@]*(?:[bcdfgjklmnpqrtvwxz]{5}|[aeiouy]{5}|([a-z]{1,2})(?:\1){3})/mi

我知道正则表达式的第一部分会阻止某些情况匹配:

(?!(?:mail|bounce)[_.-]|[^@]*(?:[+=^~\#]|mcgr|kpmg|nlpbr|ndqv|lcgc|cplpr|-mailer@)|[^@]{26}|.*?@.{0,20}\bcmp-info\.com$)

但是,我无法理解第二部分如何检测“随机性”。任何帮助将不胜感激!

/[^@]*(?:[bcdfgjklmnpqrtvwxz]{5}|[aeiouy]{5}|([a-z]{1,2})(?:\1){3})/mi
regex spam-prevention
2个回答
2
投票

它将匹配包含 5 个连续辅音的字符串(由于某种原因排除

h
s
):

[bcdfgjklmnpqrtvwxz]{5}

或 5 个连续元音 :

[aeiouy]{5}

或相同的字母或几个字母重复 3 次(出现 4 次):

([a-z]{1,2})(?:\1){3}

以下是它将匹配的字符串的一些示例:

somethingmkfkgkmsomething
aiaioe
totototo
aaaa

它显然无法检测随机性,但它可以识别有意义的字符串中不经常出现的模式,并提到这些模式看起来是随机的。

这些模式也有可能是在分析垃圾邮件发送者制作的大量电子邮件后“根据经验”构建的,并且实际上反映了这些垃圾邮件发送者使用的工具背后的算法或他们用于创建这些电子邮件的过程(例如一定程度的键盘混搭?)。

最后要注意的是,您无法检测单个数据的随机性。然而,你可以做的是尝试检测目的,如果你没有找到任何目的,那么据你所知,它是随机的。 SpamAssasin 假设了一些关于人类交流的规则(这些规则可能更适合不同的语言:它会标记一些法语不完美时态形式,例如“échouaient”),并且如果内容与它们不匹配它将其报告为“随机”。


0
投票

但在德语中,例如arztpraxis(= 医生办公室或医生诊所)今天在 100% 合法邮件中匹配,该邮件本身没有问题 - 但我只是在寻找解释。

© www.soinside.com 2019 - 2024. All rights reserved.