首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SpamAssassin REGEX捕获长URL

SpamAssassin REGEX捕获长URL
EN

Stack Overflow用户
提问于 2014-10-21 04:19:46
回答 2查看 2.2K关注 0票数 3

我正在CentOS上磨光我的CentOS过滤器。在我得到*.link和.eu域之后,我喜欢用超过100个字符标记非常长的域字符串。

这些条件是:

  • 从http或https开始
  • 可能包含也可能不包含
  • 以EOL结尾,换行,空格,",',<

我想出了这个:

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

它在REGEX测试器中工作,但在SpamAssassin中不工作

EN

回答 2

Stack Overflow用户

发布于 2014-10-21 05:56:50

您想要编写一个测试,而不是body测试。

票数 2
EN

Stack Overflow用户

发布于 2014-11-13 22:05:04

要解决新的TLD问题,确实需要一个身体规则。正如您前面所写的,存在一些语法问题和一些不必要的计算开销。试一试:

代码语言:javascript
复制
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个字符(这太小了!)我去掉了逗号&分号,因为它们可能是URL的一部分,合法消息的URL长度只有一个字符太长,所以您可能对m@\bhttps?://\S{100}@i没有意见。

警告:我以对抗垃圾邮件为生,而且有大量的数据在我的指尖。你会击中更多的非垃圾邮件(“火腿”)比垃圾邮件以下128个字符。没有一个大小范围会有一个非常好的垃圾邮件:哈姆比率;一个S/O,又名精密度,可能是可以接受的,但你真的想接近1.000。根据我的测试,最好的范围是192-256个字符,但即使这样也太弱了(S/O = 0.862),没有多大用处。几乎没有垃圾邮件使用超过1024个字符的链接(S/O = 0.057)。

我改了这条规则的名字。当你的规则出了问题,“信用”变成“责难”的时候,你的规则就能很容易地被识别为你的(而不是上游的),这是很好的。我甚至将这个答案链接到规则描述中,这样您的用户就可以了解更多信息。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/26478828

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档