Чтобы удалить IP-адрес отправителя из заголовка «Получено» для новых отправлений почты, используйте header_checks
ключ вместо smtp_header_checks
параметра:
header_checks = regexp:/etc/postfix/header_checks_submission
Этот smtp_header_checks
параметр применяется только к почте, отправляемой из Postfix на внешние серверы, тогда как этот header_checks
параметр применяется к входящей почте, отправляемой с вашего клиента в Postfix.
Смотрите также Как Postfix получает почту на http://www.postfix.org/OVERVIEW.html для обзора компонентов, почта отправляется из smtpd -> cleanup -> входящей очереди. smtpd
Процесс получает почту и вводит Received
заголовок с IP - адресом отправителя. header_checks(5)
Опция обрабатывается cleanup(8)
компонентом , который дезинфицирует заголовки электронной почты.
Он не рекомендуется устанавливать такую header_checks
опцию глобально в вашем main.cf , как это будет изменить заголовок Received в всех электронных письмах, даже те , полученные от внешних серверов. Вместо этого вы должны настроить свой клиент на отправку электронной почты через выделенную службу отправки через порт 587 и настроить Postfix для перезаписи заголовков только для этих аутентифицированных представлений.
В /etc/postfix/master.cf
, добавьте следующие -o
строки после submission
строки:
submission inet n - y - - smtpd
# Require SASL authentication
-o smtpd_sasl_auth_enable=yes
# Require TLS transport security, do not leak your credentials in plaintext.
-o smtpd_tls_security_level=encrypt`
# Disallow unauthenticated users from sending mail through this port.
-o smtpd_client_restrictions=permit_sasl_authenticated,reject
# Use a different cleanup service (see below)
-o cleanup_service_name=ascleanup
Время для настройки очистки сервис для через uthenticated s ubmissions. Я выбираю имя, ascleanup
чтобы оно было коротким и выровненным, но любое имя работает. Для этого продублируйте строку обслуживания очистки в том же master.cf
файле, но переименуйте первое поле и добавьте новую опцию, чтобы выбрать файл фильтра:
cleanup unix n - y - 0 cleanup
ascleanup unix n - y - 0 cleanup
-o header_checks=pcre:/etc/postfix/header_checks_submission
(Использование pcre
таблицы требует установки postfix-pcre
в Debian, который автоматически позаботится об обновлении файла dynamicmaps.cf. Никаких дальнейших изменений для этого не требуется.)
Последняя часть - это фактическая конфигурация фильтра в /etc/postfix/header_checks_submission
. Вы могли бы потенциально использовать что-то вроде:
/^Received: .*/ IGNORE
который удалит полную строку заголовка Received, но вместо этого вы можете просто отбросить from helo.host (reverse.host.name [192.0.2.1])
деталь, сохранив при этом другую информацию:
/^Received: from [^ ]+ \([^ ]+ \[[IPv0-9a-f:.]+\]\)\s+(.* \(Postfix\) with .+)$/ REPLACE Received: $1
Если вы изменили mail_name
параметр, измените Postfix
слово в соответствии с вашей конфигурацией. (Этот шаблон точен на основе исходного кода Postfix, smtpd / smtpd.c .)
Я протестировал это с постфиксом 3.4.7-0 + deb10u1 на Debian Buster. Еще одно отличное описание с тем же подходом см. В разделе «Как отправить сообщение электронной почты и имя пользователя отправителя в заголовке« Получено »при отправке электронной почты с использованием Postfix»?
С вышеупомянутой модификацией следующее превращается в Received: by ...
:
Received: from debian (unknown [IPv6:fe80::b036:2ff:fe6e:73f4])
by mail.example.nl (Postfix) with ESMTPSA id 1571B910B
for <some@example.com>; Sun, 12 Jan 2020 02:23:15 +0000 (UTC)