【问题标题】:Understanding SpamAssassin HK_RANDOM regex了解 SpamAssassin HK_RANDOM 正则表达式
【发布时间】:2017-07-10 14:20:07
【问题描述】:

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


    【解决方案1】:

    它将匹配包含 5 个连续辅音的字符串(由于某种原因,不包括 hs):

    [bcdfgjklmnpqrtvwxz]{5}
    

    或5个连续元音:

    [aeiouy]{5}
    

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

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

    这里有几个它会匹配的字符串示例:

    somethingmkfkgkmsomething
    aiaioe
    totototo
    aaaa
    

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-10-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2019-03-07
      相关资源
      最近更新 更多