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

16

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

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

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-адреса из заголовка?

рукав моря
источник

Ответы:

12

В 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-адрес все еще отображается. Я ценю усилия.
Кайл
Не обязательно иметь postfix-pcre. Regexp работает так же.
Кайл
Хорошо. Я удостоверился, что pcre был установлен в системе. Я изменился regexp:/etc/postfix/smtp_header_checksна pcre:/.... Затем я перезапустил postfix и отслеживал почтовый журнал на наличие ошибок. Ошибки не отображались. В электронном письме по-прежнему отображается мой IP-адрес. XD Спасибо за усилия, Майк.
Кайл
Хм ... я получаю сообщение об ошибке, но я нашел этот irbs.net/internet/postfix/0404/1097.html Я протестировал регулярное выражение с этим postfix.org/pcre_table.5.html, используя аргумент: postmap -q "Received: from mail.[removed].com (adsl-75-37-61-254.dsl.frs2ca.sbcglobal.net [75.37.61.254])" pcre:/etc/postfix/smtp_header_checksи вывод был IGNOREтаким работает. Однако это не вносит изменения в электронную почту ... Поле внутри main.cfнеправильно?
Кайл
1
Черт возьми. Я просто потратил впустую ваше время. Это моя вина в самом начале. smtp_header_checksдолжен был быть header_checks... Это работает сейчас. Мне очень жаль, что я потратил впустую ваше время. Я ценю ваши усилия. Спасибо. pcre тоже работает тоже. Я на санто. Еще раз спасибо, брат.
Кайл
3

Откройте /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

Теперь перезапустите постфикс. Позвольте сказать на CentOS:

service postfix restart

igtztorrero
источник
1
К сожалению, это также лишит Receivedзаголовок на входящей почте.
0

Чтобы удалить 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)
Lekensteyn
источник
-1

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

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

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

HiperKulet
источник
Или больше нравится? / ^ Получено: от. * 127 \ .0 \ .0 \ .1. * / IGNORE
Джек Б.