Правило заголовка регулярного выражения Spamassassin не работает

Я новичок в Spamassassin, регулярных выражениях и Perl, поэтому буду признателен за помощь. Я пытался добавить оценку спама ко всем электронным письмам, отправители которых следуют определенному шаблону, а именно: [email protected]. Это то, что я придумал

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 просто создает стену текста, содержащую ту же ошибку. Может ли кто-нибудь указать мне правильное направление? Заранее спасибо.


person JohnTheWalker    schedule 12.02.2018    source источник


Ответы (1)


Я не знаю 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?

person melpomene    schedule 12.02.2018