SpamAssassin REGEX捕获长URL

时间:2014-10-21 04:19:46

标签: regex spamassassin

我正在使用CentOS锐化我的SpamAssassin过滤器。在我输出* .link和.eu域之后,我想标记超过100个字符的非常长的域字符串。

条件是:

  • 以http或https
  • 开头
  • 可能包含或不包含www
  • 以EOL结束,换行,空格,“,”,<

我想出了这个:

body     LONG_URL    (https?:\/\/)[^,;\"\'<\s$]{100,}
describe LONG_URL    URL with over 100 characters
score    LONG_URL    0.5

它适用于REGEX测试程序,但在SpamAssassin中不起作用

2 个答案:

答案 0 :(得分:1)

您想要编写uri test,而不是body测试。

答案 1 :(得分:1)

要解决新TLD问题,您确实需要一个正文规则。正如您在上面所写的那样,存在一些语法问题和一些不必要的计算成本。试试这个:

body     YELLO_LONG_BODY_URL  m@\bhttps?://[^\"\'<\s$]{100}@i
describe YELLO_LONG_BODY_URL  100+ char URL, https://stackoverflow.com/a/26919318
score    YELLO_LONG_BODY_URL  0.1

这在技术上会起作用,虽然我确定你会发现很多非垃圾邮件,特别是营销邮件,特别是如果你保持100个字符(那个&#39;小!)。我拿出了逗号&amp;分号,因为它们可能是URL的一部分,而合法的消息只会将其URL长度作为一个字符太长,所以你可能只对m@\bhttps?://\S{100}@i

很好

警告:我以垃圾为生,并且触手可及很多数据。与128个字符以下的垃圾邮件相比,您可以获得更多非垃圾邮件(&#34; ham&#34;)。没有尺寸范围会有一个非常好的垃圾邮件:火腿比率; 0.900的S/O,又名precision可能是可以接受的,但你真的想要接近1.000。根据我的测试,最佳范围是192-256个字符,但即使是太弱(S / O = 0.862)也非常有用。使用超过1024个字符的链接(S / O = 0.057)几乎没有垃圾邮件。

我更改了此规则的名称。对你的规则表示赞赏是有好处的,这样当出现问题时可以很容易地将它们识别为你的(而不是上游的SpamAssassin)#34;信用&#34;成为&#34;责备&#34; ...我甚至在规则说明中将此答案链接起来,以便您的用户可以了解更多信息。