использование регулярных выражений в exim-фильтрации

Я пытаюсь создать eximфильтр для блокировки спам-сообщений, содержащих

"85% OFF"

в строке темы. Это пустое место, затем любые две цифры, затем знак процента, пустое место и слово OFF во всех шапках. Вот что я написал:

# Exim filter if $header_subject: contains " \\d{2}% OFF" then fail text "no spam please" seen finish endif 

Однако это не работает и позволяет сопоставлять сообщения, хотя проходит тестирование regex101 . Что мне не хватает? Какой правильный синтаксис?

One Solution collect form web for “использование регулярных выражений в exim-фильтрации”

Я временно заменил свой .forward и подтвердил, что он не работает.

Есть две проблемы.

  1. contains выполнение подстроки и не понимает регулярные выражения. Для регулярных выражений вы хотите matches а не contains .

  2. Класс символов \d PCRE-типа выглядит сломанным, как и синтаксис {N} ! Я пробовал всевозможные комбинации. Единственный синтаксис, который работал, был [0-9][0-9] . Даже [0-9]{2} не работал, и ни [0-9]\\{2\\} , ни \\d\\d . (Я запускаю версию 4.72.) Редактирование: Вот почему: Цитаты не должны использоваться в регулярных выражениях в файлах фильтра Exim, за исключением случаев, когда регулярные выражения содержат whitspace. Однако обратные косые черты должны быть удвоены даже в нерегулярных регулярных выражениях. В цитированных регулярных выражениях они должны быть снова удвоены: $header_subject: matches "\\\\d{2}% OFF" . Подсчитайте их: четыре обратные косые черты.

Проверьте свой скрипт с помощью /usr/sbin/exim -bF <scriptfile> -f <sender> . Тестовое сообщение должно быть отправлено на стандартный ввод (например, перенаправлено из файла).

Для тестирования Subject: обработка, он может содержать только эту строку заголовка и ничего больше. Столица F в -bF должна разрешить обработку вашей команды fail которая отключена, если вы используете -bf .

  • Постфикс останавливается непрерывно
  • Как переопределить адрес электронной почты, используемый командой
  • Как я могу написать root?
  • Ошибка условия exim "$ {env не является известным оператором"
  • Отправка электронной почты с сервера за пределами сети
  • Уведомление о статусе отправки (задержка) с моего сервера?
  • Попытка использовать TLS SMTP против Exim, получив ошибку безопасности; что не так?
  • настроить fetchmail / exim4 для загрузки с учетной записи gmail и переслать на другой адрес электронной почты
  • Установка Dovecot и Exim на CentOS 6.4
  • Как настроить Exim для пересылки всей входящей почты на новый сервер?
  • Debian: exim, Maildir и почта
  • Interesting Posts
    Linux и Unix - лучшая ОС в мире.