Как заблокировать вложения на входящие письма только с помощью Postfix?
У меня есть почтовый сервер (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, что я хочу фильтровать только входящие вложения? Или я что-то пропустил?
1 ответ
Я перепишу твой вопрос:
Как я могу использовать разные _header_checks для smtpd (порт 25) и отправки (порт 587)?
Эту каноническую проблему можно разделить на несколько условий
- Я хочу отключить header_checks для одного из smtpd или представления.
- Я хочу запустить разные 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
,
В /etc/postfix/master.cf, а не в /etc/postfix/main.cf, добавьте (nb должны быть пробелы с вкладками):
second-headerchecks unix n - n - 0 cleanup
-o mime_header_checks=pcre:/etc/postfix/2ndheaderchecks
submission inet n - n - - smtpd
-o cleanup_service_name=second-headerchecks
#
first-headerchecks unix n - n - 0 cleanup
-o mime_header_checks=pcre:/etc/postfix/1stheaderchecks
smtp inet n - n - - smtpd
-o cleanup_service_name=first-headerchecks
#
создайте /etc/postfix/1stheaderchecks, который в данном случае должен блокировать входящие zip-файлы, а затем создайте файл.db:
/name=[^>]*\.zip/ REJECT security issue - please contact....by phone
затем создайте /etc/postfix/2ndtheaderchecks, чтобы разрешить исходящие вложения (и создать файл.db):
# this file being 2ndheaderchecks allows for the sending of zip etc files which otherwise might be blocked
# ie all files can be sent aside from .128 files...I didn't want to leave it blank as was not sure if that would work
/name=[^>]*\.128/ REJECT