Mailscanner & Postfix: УДЕРЖИВАЙТЕ все, кроме сообщений с пользовательским заголовком
ATM Я использую обычный метод, чтобы поместить все сообщения в состояние HOLD для передачи их из postfix в MailScanner, как описано на http://www.mailscanner.info/postfix.html:
В файле конфигурации Postfix /etc/postfix/main.cf добавьте эту строку:
header_checks = regexp:/etc/postfix/header_checks
В файле /etc/postfix/header_checks добавьте эту строку:
/^Received:/ HOLD
Результатом этого является указание Postfix переместить все сообщения в очередь HOLD.
Но у меня есть какое-то SMTP-сообщение, которое мне не нужно передавать через MailScanner, сообщения, идентифицируемые пользовательским заголовком. Мне нужно найти способ обойти MailScanner для этих сообщений, но я не могу его найти, учитывая, что мне нужно проверить наличие настраиваемого заголовка, а не то есть адреса From: или To:...
Попробовал изменить /etc/postfix/header_checks:
/^X-Custom-Header:/ FILTER smtp:[ip.addr.next.hop]:10025
в mail.log я вижу сообщение отфильтрованное:
Aug 19 17:52:17 servername postfix/cleanup[19423]: AFB842E33A: filter: header X-Custom-Header: from relay.sender.foo[xx.yy.zz.kk]; from=<sender@senderdomain.foo> to=<me@mydomain.foo> proto=ESMTP helo=<mail.sender.foo>: smtp:[ip.addr.next.hop]:10025
и если вышеприведенное правило является единственным правилом в header_checks, оно доставляется к следующему прыжку через smtp.
Теперь мне нужно перехватить все остальное в Mailscanner (так в очереди HOLD Postfix), так как я могу сказать header_checks сделать это? Если я оставляю /^ Получено: / проверяю, что даже AFB842E33A удерживается в очереди HOLD...
Может быть, это просто глупый вопрос, но... есть идеи?
1 ответ
Да, есть даже решение. Это называется header_checks
и является частью *_restrictions
, Формат (в зависимости от того, что вы хотите) описан в его собственной документации.
Но я не могу рекомендовать использовать фильтры после очереди, такие как Mailscanner и Spamassassin. Лучший способ уменьшить количество спама и сообщить об этом отправителю - это фильтры перед очередью, такие как встроенный postscreen
, client_restrictions
, sender_restrictions
, recipient_restrictions
, перед очереди очереди и внешние инструменты, такие как policyd-weight
,
Только фильтры перед очередью снижают нагрузку и ресурсы на сервере и могут блокировать 80% всего спама, даже не дойдя до сервера. В частности, Mailscanner находится в моем личном "списке ненависти", так как он имеет только ограниченную интеграцию с Postfix и не может использовать встроенные интерфейсы Postfix для антиспамовых фильтров и фильтров в целом.
Изменить: Из-за отредактированного вопроса, я отвечу на это сейчас.
FILTER
это не действие, которое мешает Postfix работать на header_checks
-файл. Он говорит только "когда я закончу с проверками, я буду фильтровать". И поэтому следующая строка соответствует и устанавливает почту в ожидании.
Решение (даже если оно выглядит урезанным) заключается в следующем header_checks
-файл:
/^X-Custom-Header:/ FILTER smtp:[ip.addr.next.hop]:10025
/^X-Custom-Header:/ OK
/^Received:/ HOLD