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

Удалить / скрыть IP-адрес отправителя клиента из постфикса?

Я пытаюсь скрыть IP-адрес клиента от писем, отправленных с postfix.

вот пример того, что я имею в виду:

Received: from mail.[removed].com (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [75.37.61.254])
    (using TLSv1 with cipher DHE-RSA-AES256-SHA (256/256 bits))
    (No client certificate requested)
    by mail.[removed].com (Postfix) with ESMTP id D50C7BF185DD
    for <[removed]@gmail.com>; Thu,  2 Aug 2012 16:14:21 +0900 (JST)
Date: Thu, 02 Aug 2012 07:14:08 +0000

Обратите внимание на эту строку (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [75.37.61.254])

Я хочу удалить эту строку из электронного письма.

Я пробовал это делать:

/etc/postfix/main.cf:

smtp_header_checks = regexp:/etc/postfix/smtp_header_checks

smtp_header_checks:

/^((.*) [(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])])/    IGNORE

Но мой IP-адрес все еще находится в полученной части электронного письма. Если я отправлю электронное письмо с SMTP-сервера локально, IP-адрес станет localhost.localdomain [127.0.0.1]

Как удалить клиентские IP-адреса из заголовка?

В main.cf:

smtp_header_checks = pcre:/etc/postfix/smtp_header_checks

В dynamicmaps.cf:

# Use your real path to dict_pcre.so, below
pcre    /usr/lib/postfix/dict_pcre.so           dict_pcre_open

Вы должны поместить это в свой /etc/postfix/smtp_header_checks:

/^Received: .*/     IGNORE
/^X-Originating-IP:/    IGNORE

Тогда беги

# /etc/init.d/postfix reload

Чтобы удалить IP-адрес отправителя из заголовка Received для отправки новой почты, используйте 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 -> очистка -> входящая очередь. В 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

Пришло время настроить уборка услуга для аподтвержденный sотказ. Я выбираю имя 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.)

Я тестировал это с postfix 3.4.7-0 + deb10u1 на Debian buster. Еще одно отличное описание с тем же подходом см. При отправке электронной почты с помощью Postfix, как я могу скрыть IP-адрес отправителя и имя пользователя в заголовке Received?

С вышеуказанной модификацией следующее превращается в 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)

Откройте /etc/postfix/master.cf и найдите:

cleanup unix n - n - 0 cleanup

Добавьте ниже этой строки и получите:

cleanup unix n - n - 0 cleanup -o header_checks=pcre:/etc/postfix/header_checks

Отредактируйте / etc / postfix / header_checks и добавьте ниже коды:

/^Received:/ IGNORE

Теперь перезапустите postfix. Скажем, на CentOS:

service postfix restart

использовать это:

/^Received: from .*127.0.0.1**/ IGNORE

использовать только один * в обоих концах