dub*_*lee 1 email spamassassin regex
我希望编写一个 SpamAssassin 规则,如果电子邮件n正文中包含超过一个特定字符,则该规则将匹配。不一定是连续的。例如,如果消息中总共有十个星号,则匹配规则。
如果有十个连续的星号,我知道如何编写规则,如下所示:
body TEN_ASTERISKS /(**********)/
score TEN_ASTERISKS 0.5
describe TEN_ASTERISKS Message body contains ten asterisks.
Run Code Online (Sandbox Code Playgroud)
我将如何重写规则以匹配总共十个星号(不一定是连续的)?
上述规则格式错误,不会起作用。
SpamAssassin 规则是正则表达式,因此您只需转义这些:
body TEN_ASTERISKS /\*\*\*\*\*\*\*\*\*\*/
score TEN_ASTERISKS 0.5
describe TEN_ASTERISKS Message body contains ten asterisks.
Run Code Online (Sandbox Code Playgroud)
另外,括号是不必要的。它们形成一个存储在内存中的捕获组,这(假设您看到大量带有星号的邮件)可能会对您的服务器造成损害。
(你也可以这样做body TEN_ASTERISKS /\*{10}/,但我想做一个更简单的例子。正则表达式非常强大。)
要匹配十个单独的星号,您需要tflags multiple:
body __HAS_ASTERISK /\*/
tflags __HAS_ASTERISK multiple maxhits=11
meta TEN_ASTERISKS __HAS_ASTERISK > 10
score TEN_ASTERISKS 0.5
describe TEN_ASTERISKS Message body contains ten asterisks.
Run Code Online (Sandbox Code Playgroud)
这maxhits=11件作品是一个优化。它告诉 SpamAssassin 停止计数(tflags multiple运行成本很高)。
| 归档时间: |
|
| 查看次数: |
542 次 |
| 最近记录: |