我正在使用CentOS锐化我的SpamAssassin过滤器。在我输出* .link和.eu域之后,我想标记超过100个字符的非常长的域字符串。
条件是:
我想出了这个:
body LONG_URL (https?:\/\/)[^,;\"\'<\s$]{100,}
describe LONG_URL URL with over 100 characters
score LONG_URL 0.5
它适用于REGEX测试程序,但在SpamAssassin中不起作用
答案 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; ...我甚至在规则说明中将此答案链接起来,以便您的用户可以了解更多信息。