Как заблокировать вложения на входящие письма только с помощью Postfix?

9

У меня есть почтовый сервер (CentOS 6.5) под управлением Postfix и Dovecot

Postfix прослушивает порт 25 для входящей почты и 587 для исходящей почты

Проблема заключается в том, что исходящая почта с вложениями в формате PDF блокируется, если я хочу, чтобы входящая почта блокировалась только вложения в формате PDF.

У меня есть эта строка конфигурации в main.cf

 mime_header_checks = regexp:/etc/postfix/blocked_attachments

Файл block_attachments содержит:

/name=[^>]*\.(pdf|zip)/ REJECT

Таким образом, входящая почта с вложением в формате PDF правильно блокируется, но когда я создаю письмо с PDF, которое также блокируется при попытке отправки.

Как я могу сказать postfix, что я хочу фильтровать только входящие вложения? Или я что-то пропустил?

Адитья К
источник

Ответы:

7

Я перепишу твой вопрос:

Как я могу использовать разные _header_checks для smtpd (порт 25) и отправки (порт 587)?

Эту каноническую проблему можно разделить на несколько условий

  1. Я хочу отключить header_checks для одного из smtpd или представления.
  2. Я хочу запустить разные header_checks для smtpd и отправки.

1. Я хочу отключить header_checks для одного из smtpd или представления.

Для примера я предполагаю, что вы хотите отключить header_checks для отправки (исходящая электронная почта) .

Решение 1: метод receive_override_options

Вы можете использовать постфиксный параметр под названием receive_override_options . С помощью параметра вы можете переопределить глобальный переключатель header_check, чтобы фильтр не работал. # main.cf header_checks = pcre: / path / to / header_checks

#master.cf
submission inet n       -       n       -       -       smtpd
    -o receive_override_options=no_header_body_checks

Предостережения: это отключит ВСЕ _header_checks и body_checks, определенные в man 5 header_checks . Для получения информации о том, какой параметр будет отключен, см. Решение 2.

Решение 2: Метод многократной очистки

Мы можем использовать метод множественной очистки для вашей проблемы, как это *_header_checksбыло сделано службой очистки . Вы можете увидеть пример этой установки в учебнике amavisd-new .

Магический параметр для этой конфигурации - cleanup_service_name . С помощью этого параметра мы можем использовать разные службы очистки для каждого процесса smtpd. Сначала мы определяем один дополнительный сервис очистки (называемый no-headerchecks) в master.cf

no-headerchecks unix    n       -       n       -       0       cleanup
    -o mime_header_checks=

В этой очистке мы определяем пустые mime_header_checks, чтобы отключить фильтрацию. Последний шаг - указать службе отправки использовать наши проверки без заголовков.

submission inet n       -       n       -       -       smtpd
    -o cleanup_service_name=no-headerchecks 

2. Я хочу запустить разные header_checks для smtpd и отправки.

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

Сначала мы определяем один дополнительный сервис очистки (называемый second-headerchecks) в master.cf

second-headerchecks unix    n       -       n       -       0       cleanup
    -o mime_header_checks=pcre:/path/to/2ndheaderchecks

В этой очистке мы определяем вторую mime_header_checks для другой таблицы PCRE. Последний шаг - указать службе отправки использовать наши вторые проверки заголовков.

submission inet n       -       n       -       -       smtpd
    -o cleanup_service_name=second-headerchecks

Примечание:

  • Ваш случай выглядит похожим с этим вопросом . К сожалению, ответ от Laurentiu Roescu работает, только если вы хотите включить header_checks для исходящей почты, которая использует smtp в качестве транспорта. Хорошей новостью является то, что его первое предложение о cleanupдемоне дает нам представление о втором решении.

  • Можно использовать метод множественной очистки, если вам нужны разные header_checks, body_checks и другие параметры, определенные в man 5 header_checks.

masegaloeh
источник