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

Postfix header_checks не работает

У меня конфиг main.cf:

header_checks = regexp:/etc/postfix/header_checks

И /etc/postfix/header_checks:

/^Subject:.*viagra.*/i DISCARD
/^Subject:.*pills.*/i DISCARD
/^Subject:.*f\*ckbuddy.*/i DISCARD
/^Subject:.*f\*ckfriend.*/i DISCARD
/^Subject:.*f\@ck.*/i DISCARD

/^From:.*viagra.*/i DISCARD

Обратите внимание, я добавил /i сделать регистр нечувствительным. Не уверены, позволяет ли это?

Я пытался отправлять электронные письма с Hotmail на мой сервер с таблетками в теме, но все равно не повезло! Также есть возврат к методу отправителя вместо DISCARD?

Если postmap -q "<put test header here>" regexp:/etc/postfix/header_checks правильно возвращает DISCARD (или соответствующее действие для совпадения), но postfix на самом деле не выполняет указанное действие, тогда, вероятно, есть receive_override_options=no_header_body_checks где-то в main.cf или master.cf то есть отключение проверки заголовка. в master.cf файл, это будет -o в одной из записей конфигурации службы.

Есть 4 варианта receive_override_options:

  • no_unknown_recipient_checks Не пытайтесь отклонить неизвестных получателей (только SMTP-сервер). Обычно это указывается ПОСЛЕ внешнего фильтра содержимого.
  • no_address_mappings Отключить каноническое сопоставление адресов, расширение карты виртуальных псевдонимов, маскировку адресов и автоматических получателей BCC (слепой копии). Обычно это указывается ДО внешнего фильтра содержимого.
  • no_header_body_checks Отключить header / body_checks. Обычно это указывается ПОСЛЕ внешнего фильтра содержимого.
  • no_milters Отключить приложения Milter (почтовый фильтр). Обычно это указывается ПОСЛЕ внешнего фильтра содержимого.

В no_address_mappings параметры обычно находятся в main.cf в то время как другие варианты, в master.cf

Параметр «-o receive_override_options» переопределяет настройки main.cf, чтобы избежать дублирования работы, которая уже была выполнена до фильтрации содержимого. Эти параметры дополняют параметры, указанные в main.cf

Источник: Фильтр содержимого после очереди Postfix

в header_checks (5) страница руководства, есть этот абзац, в котором говорится, что некоторое время по умолчанию для всех регулярных выражений считается, что они нечувствительны к регистру:

СОВМЕСТИМОСТЬ
В Postfix версии 2.2 и более ранних укажите "postmap -fq" для запроса таблицы, содержащей шаблоны с учетом регистра. По умолчанию шаблоны regexp: и pcre: нечувствительны к регистру.

Поэтому добавление флага к регулярному выражению не решит вашу проблему.

Как уже упоминали другие, ваш первый шаг - убедиться, что он работает с:

postmap -q "<string to test--i.e. Subject: Viagra>" /etc/postfix/header_checks.re

На выходе будет действие для строки. (DISCARD в твоем случае)

Если это сработает, возможно, вам не хватает строки для включения заголовка или строки, которая предотвращает включение, как упоминали другие.

header_checks = regexp:/etc/postfix/header_checks.re

Поскольку вы говорите, что у вас есть эта строка, последняя будет большой проблемой.

Обратите внимание, что у меня есть .re расширение. Я не думаю, что это имеет значение, но может быть хорошей идеей иметь какое-то расширение, чтобы знать, что содержит файл.

  • regex: и pcre: По умолчанию в шаблонах регистр не учитывается. Однако i флаг должен работать.
  • Ты можешь использовать REJECT вместо того DISCARD сообщить отправителю.
  • Ты использовал postmap /etc/postfix/header_checks а постфикс перезалил?
  • Вы можете протестировать регулярные выражения в Интернете на многих сайтах. http://www.pagecolumn.com/tool/pregtest.htm позволяет использовать регулярные выражения POSIX.
  • Если возможно, используя pcre регулярные выражения обычно быстрее, чем использование реализации Posix с regexp:. Использовать header_checks = pcre:/etc/postfix/header_checks

  • Что говорят файлы журналов?

Так как @HZC говорит, что это может быть -o receive_override_options вопрос. У меня была такая же проблема: Моя проблема и решил это после сообщения postfix header_checks с использованием правильной настройки regexp. Мой случай был ОТКАЗАТЬ вместо ОТКАЗАТЬ. Вы используете DISCARD, если хотите обмануть спамера, спамер не получит никаких уведомлений. Для получения дополнительной информации об этом вы можете посетить эта ссылка и увидеть ОТКАЗЫВАЕТ ДЕЙСТВИЯ раздел.

ВЫБРАТЬ структуру:

              DISCARD optional text...
              Claim successful delivery and silently discard the message.  Log
              the optional text if specified, otherwise log a generic message.