Spamassassin 正则表达式 header 规则无效

Spamassassin regex header rule not working

我是 Spamassassin、正则表达式和 Perl 的新手,因此非常感谢您的帮助。我试图为发件人遵循特定模式的所有电子邮件添加垃圾邮件分数,即: name.surname.@example.com。 这是我想出的

header NAME_DOT_SURNAME_DOT_FQDN From=~((?:[a-z]+))(\.)((?:[a-z]+))(\.)(@)((?:[a-z][a-z\.\d\-]+)\.(?:[a-z][a-z\-]+))(?![\w\.])
score NAME_DOT_SURNAME_DOT_FQDN 3.0

但是,它似乎不起作用。当我 运行 spamassassin --lint 我得到以下输出:

Feb 12 12:52:59.521 [32767] warn: Use of ?PATTERN? without explicit operator is deprecated at /etc/spamassassin/local.cf, rule NAME_DOT_SURNAME_DOT_FQDN, line 1.
Feb 12 12:52:59.522 [32767] warn: rules: failed to compile Mail::SpamAssassin::Plugin::Check::_head_tests_0_3, skipping:
Feb 12 12:52:59.522 [32767] warn:  (Unmatched ) in regex; marked by <-- HERE in m/: [...][a-z]+) <-- HERE )(\.)((/ at /etc/spamassassin/local.cf, rule NAME_DOT_SURNAME_DOT_FQDN, line 1.)
Feb 12 12:52:59.620 [32767] warn: lint: 1 issues detected, please rerun with debug enabled for more information

运行 spamassassin --lint -D 只会生成包含相同错误的文本墙。 谁能指出我正确的方向?提前致谢。

我不知道 SpamAssassin,但它是否需要 / / 围绕正则表达式?

因为错误消息表明 Perl 将 ? 视为正则表达式定界符,导致正则表达式为:

?:[a-z]+))(\.)((?
#-------^ unmatched ')'

所以我会尝试的是:

header NAME_DOT_SURNAME_DOT_FQDN From=~/((?:[a-z]+))(\.)((?:[a-z]+))(\.)(@)((?:[a-z][a-z\.\d\-]+)\.(?:[a-z][a-z\-]+))(?![\w\.])/

此外,那些双反斜杠看起来很可疑。你确定你不是说例如\w 而不是 \w?