Photo by Álvaro Serrano
Фильтрация заголовков

Фильтрация заголовков при отправке писем

9.04.23
21.12.23

Postfix добавляет заголовки при отправке писем по умолчанию. Там есть много информации, которую не следует раскрывать. В Postfix есть механизм фильтрации заголовков (и не только), который хорошо подойдёт для этой цели. Надо установить пакет postfix-pcre

apt install postfix-pcre

Далее, в файл /etc/postfix/main.cf добавить строку:

smtp_header_checks = pcre:/etc/postfix/smtp_header_checks

Механизм фильтрации довольно обширен. Всего есть целый ряд подобных директив:

header_checks = pcre:/etc/postfix/header_checks
mime_header_checks = pcre:/etc/postfix/mime_header_checks
nested_header_checks = pcre:/etc/postfix/nested_header_checks
body_checks = pcre:/etc/postfix/body_checks
milter_header_checks = pcre:/etc/postfix/milter_header_checks
smtp_header_checks = pcre:/etc/postfix/smtp_header_checks
smtp_mime_header_checks = pcre:/etc/postfix/smtp_mime_header_checks
smtp_nested_header_checks = pcre:/etc/postfix/smtp_nested_header_checks
smtp_body_checks = pcre:/etc/postfix/smtp_body_checks
  • header_checks — проверка заголовков во входящих письмах
  • smtp_header_checks — проверка заголовков в исходящих письмах
  • mime_header_checks — проверка MIME-заголовков вложенных вайлов во входящих письмах
  • nested_header_checks — проверка заголовков вложенных сообщений
  • body_checks — проверка всего остального контента письма
  • milter_header_checks — проверка заголовков добавляемых Milter-ом
  • smtp_* — проверка всего того же самого, но в исходящих сообщениях.

Нам удобнее использовать именно smtp_header_checks.
Затем в файле: /etc/postfix/smtp_header_checks надо добавить правила фильтрации. Принцип такой:

/Заголовок/  действие  аргумент_если_есть

Действия (Actions) могут быть следующие (имена действий не чувствительны к регистру):

BCC user@domain 

добавляет указанный адрес в качестве получателя BCC

DISCARD необязательный текст 

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

FILTER transport:destination
HOLD optional text...
IGNORE 

Удаляет текущую строку из данных и переходит к следующей

INFO optional text... 

Делает запись в логах

PREPEND text... 

Добавляет к текущей строке указанный текст и переходит к следующей строке ввода.

REDIRECT user@domain
REPLACE text... 

Меняет текущую строку указанным текстом

REJECT optional text... 

Отклоняет всё сообщение целиком. Не просматривает оставшуюся часть входного сообщения.

WARN optional text... 

Логирует сообщение.

Мы будем использовать IGNORE и REPLACE

Для того чтобы избавиться от ip-адреса локальной сети, вставляемого в исходящее письмо, а также тип почтового агента и его версию добавьте в файл /etc/postfix/smtp_header_checks следующие строки:

/^X-Originating-IP:/ IGNORE
/^X-Mailer:/ IGNORE
/^Mime-Version:/ IGNORE

Если вы знакомы с регулярными выражениями regexp или regex (от Regular Expressions) то вам будет просто разобраться как использовать детективу REPLACE , если нет, то добавьте следующую строку в файл /etc/postfix/smtp_header_checks

/^Received: from .*/ REPLACE Received: from your-mail-domain.ru (using ESMTPS) 

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

/^Received: from .*/ IGNORE

Но в этом случае некоторые спам-фильтры будут занижать оценку вашей почте. Лучше не удалять этот заголовок совсем.
После редактирования надо перезагрузить postfix для вступления всех изменений в силу.

Установка и настройка почтового сервера на базе Postfix.