Назад | Перейти на главную страницу

exim filter regex discard rule

Мы пытаемся отбросить все электронные письма с соответствующей темой, например: тема:

Тема: DOMAIN.COM Оповещение: ИМЯ Мы НЕ получили ваш платеж

Мы пытаемся сопоставить любой домен, оповещение и "Мы НЕ получили ваш платеж"

Используя следующий фильтр:

if
 $header_subject: matches "^(?!:\\\\/\\\\/)([a-zA-Z0-9-_]+\\\\.)*[a-zA-Z0-9][a-zA-Z0-9-_]+\\\\.[a-zA-Z]{2,11}?\\$"
 and $header_subject: contains "Alert"
 and $header_subject: contains "We have NOT received your payment"
then
 save "/dev/null" 660
endif

Однако при тестировании он не соответствует, я тестировал регулярное выражение на соответствие домену, и он работает, но при добавлении дополнительных правил он останавливает работу фильтра.

Это отклоняет письмо с темой, соответствующей "Оповещение DOMAIN.COM: ИМЯ. Мы НЕ получили ваш платеж"

(где DOMAIN.COM может быть любым доменом)

if $h_subject matches "^[A-Za-z0-9-_]+\\\\.[a-zA-Z]\\\\b.+Alert.+We have NOT received your payment\\$"
then
  seen finish
endif

Примечание. Вы можете проверить влияние системного фильтра на доставку с помощью:

exim -bF test_filter <test_message

Ваше первое регулярное выражение содержит \\$ который соответствует концу строки, поэтому он соответствует только в том случае, если строка домена находится в конце темы.