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

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

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

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

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

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

 mime_header_checks = regexp:/etc/postfix/blocked_attachments

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

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

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

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

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

Как я могу использовать разные _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: / путь / к / header_checks

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

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

Решение 2. Метод множественной очистки

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

Магический параметр для этой конфигурации - 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

Примечание:

  • Ваш случай похож на этот вопрос. К сожалению ответ от Лаурентиу Роеску работает, только если вы хотите включить 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