Скрываем IP отправителей в Postfix
Postfix можно научить скрывать IP-адреса авторизованных пользователей в заголовках так, чтобы получатели писем не могли узнать с какого IP (и из какой страны) выходит в сеть и отправляет письма их собеседник. Адреса в логах при этом остаются, а посторонние лишаются возможности установить слежку. Это же делает Gmail для писем, отправленных через веб-интерфейс.
Иными словами, чтобы вместо подобного в заголовках письма:
Received: from localhost (dyn.pool.example.net [172.31.64.88])
(using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))
(No client certificate requested)
by mx.example.com (Postfix) with ESMTPSA id A2019508951
for <user@example.net>; Wed, 23 Jun 2010 17:34:29 +0900 (JST)
Стало так:
Received: by mx.example.com (Postfix) with ESMTPSA id A2019508951
for <user@example.net>; Wed, 23 Jun 2010 17:34:29 +0900 (JST)
Для этого нужно включить следующую директиву чтобы Postfix в принципе добавлял вышеуказанный заголовок:
postconf -e smtpd_sasl_authenticated_header=yes
Затем включить smtp_header_checks
, которые работают только для исходящих писем:
postconf -e smtp_header_checks=pcre:/etc/postfix/header_checks
И добавить в /etc/postfix/header_checks
две строки для удаления лишнего из заголовков:
/^Received: from .*?([[:space:]]+\(Authenticated sender: [^)]+\).*by.*)/
REPLACE Received: from [127.0.0.1] (localhost [127.0.0.1])${1}
Правило легко доработать чтобы скрывалась и строка Authenticated sender
. Например, так:
/^Received: from .*?\(Authenticated sender: [^)]+\)[[:space:]]+(by.*)/
REPLACE Received: ${1}
Проверить полученное регулярное выражение можно с помощью postmap
:
postmap -h -q - pcre:/etc/postfix/header_checks < test_message
Также есть вариант вообще убирать этот заголовок, но это не рекомендуется авторами Postfix.