Вопрос или проблема
Я использую Postfix, чтобы направлять электронную почту с трех разных доменов в один адрес для сбора следующим образом:
/etc/postfix/virtual
:
@domain1.de [email protected]
@domain2.de [email protected]
@domain3.de [email protected]
Отправка письма на [email protected]
приводит к следующему заголовку:
Delivered-To: [email protected]
Return-Path: <[email protected]>
<[email protected]>
Received: from v2.domain1.de by v2.domain1.de with LMTP id pX7HGJd6ZGcVgBIAGUxxBA (envelope-from <[email protected]>) for <[email protected]>; Thu, 19 Dec 2024 19:57:11 +0000
Received: from mba.domain1.de (home.domain1.de [1.2.3.4]) by v2.domain1.de (Postfix) with ESMTP id 5CF148A278 for <[email protected]>; Thu, 19 Dec 2024 19:57:11 +0000 (UTC)
Received: by mba.domain1.de (Postfix, from userid 501) id 29B953B98524; Thu, 19 Dec 2024 20:57:11 +0100 (CET)
Адрес для сбора упоминается дважды. Как я могу этого избежать, предпочтительно заменив [email protected]
на фактического получателя [email protected]
?
postconf -M :
smtp inet n - y - - smtpd
submission inet n - y - - smtpd -o syslog_name=postfix/submission -o smtpd_tls_security_level=encrypt -o smtpd_sasl_auth_enable=yes -o smtpd_relay_restrictions=permit_sasl_authenticated,reject -o smtpd_recipient_restrictions=permit_sasl_authenticated,reject -o smtpd_sasl_type=dovecot -o smtpd_sasl_path=private/auth
pickup unix n - y 60 1 pickup
cleanup unix n - y - 0 cleanup
qmgr unix n - n 300 1 qmgr
tlsmgr unix - - y 1000? 1 tlsmgr
rewrite unix - - y - - trivial-rewrite
bounce unix - - y - 0 bounce
defer unix - - y - 0 bounce
trace unix - - y - 0 bounce
verify unix - - y - 1 verify
flush unix n - y 1000? 0 flush
proxymap unix - - n - - proxymap
proxywrite unix - - n - 1 proxymap
smtp unix - - y - - smtp
relay unix - - y - - smtp -o syslog_name=postfix/$service_name
showq unix n - y - - showq
error unix - - y - - error
retry unix - - y - - error
discard unix - - y - - discard
local unix - n n - - local
virtual unix - n n - - virtual
lmtp unix - - y - - lmtp
anvil unix - - y - 1 anvil
scache unix - - y - 1 scache
postlog unix-dgram n - n - 1 postlogd
maildrop unix - n n - - pipe flags=DRXhu user=vmail argv=/usr/bin/maildrop -d ${recipient}
uucp unix - n n - - pipe flags=Fqhu user=uucp argv=uux -r -n -z -a$sender - $nexthop!rmail ($recipient)
ifmail unix - n n - - pipe flags=F user=ftn argv=/usr/lib/ifmail/ifmail -r $nexthop ($recipient)
bsmtp unix - n n - - pipe flags=Fq. user=bsmtp argv=/usr/lib/bsmtp/bsmtp -t$nexthop -f$sender $recipient
scalemail-backend unix - n n - 2 pipe flags=R user=scalemail argv=/usr/lib/scalemail/bin/scalemail-store ${nexthop} ${user} ${extension}
mailman unix - n n - - pipe flags=FRX user=list argv=/usr/lib/mailman/bin/postfix-to-mailman.py ${nexthop} ${user}
postconf -n :
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
compatibility_level = 3.6
inet_interfaces = all
inet_protocols = all
mailbox_command =
mailbox_size_limit = 0
mailbox_transport = lmtp:unix:private/dovecot-lmtp
message_size_limit = 52428800
mydestination = domain1.de,domain2.de,domain3.de,localhost
myhostname = v2.domain1.de
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_delimiter =
relayhost =
smtp_tls_CApath = /etc/ssl/certs
smtp_tls_loglevel = 1
smtp_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtp_tls_security_level = may
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Debian/GNU)
smtpd_enforce_tls = yes
smtpd_helo_required = yes
smtpd_helo_restrictions = permit_mynetworks permit_sasl_authenticated reject_invalid_helo_hostname reject_non_fqdn_helo_hostname reject_unknown_helo_hostname
smtpd_recipient_restrictions = reject_invalid_hostname reject_unauth_pipelining reject_unauth_destination permit_mynetworks, permit_sasl_authenticated, check_recipient_access hash:/etc/postfix/rcpt_blacklist
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_sender_restrictions = permit_mynetworks permit_sasl_authenticated reject_unknown_sender_domain reject_unknown_reverse_client_hostname reject_unknown_client_hostname
smtpd_tls_cert_file = /etc/letsencrypt/live/v2.domain1.de-0001/fullchain.pem
smtpd_tls_key_file = /etc/letsencrypt/live/v2.domain1.de-0001/privkey.pem
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_protocols = !SSLv2, !SSLv3, !TLSv1, !TLSv1.1
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes
smtputf8_enable = no
virtual_maps = hash:/etc/postfix/virtual
Это нормальное и ожидаемое поведение. Не изменяйте это, если вы не знаете, что делаете, и судя по тому, что вы даже спрашиваете об этом, похоже, что вы не знаете, так что просто не изменяйте это. Также это видит только получатель сообщения, однако, если вы не доверяете своим получателям в такой степени, у меня плохие новости для вас.
Это необходимо для подавления дублирующей доставки. Если почта содержит адрес в заголовке Delivered-To, она не будет доставлена еще раз на этот адрес. Это функция local
агента доставки, смотрите man 8 local
.
Вы можете подавить это, используя пустое prepend_delivered_header
в main.cf
:
prepend_delivered_header =
RTFM:
Отключение заголовка Delivered-To: при пересылке почты не рекомендуется.
Вместо этого может быть лучше изменить frozen_delivered_to
на no
в main.cf
:
frozen_delivered_to = no
Тогда он не должен обновляться при разложении по псевдонимам. Однако я не уверен, как это работает, никогда этого не использовал.
Второй экземпляр находится в заголовке Received. Опять же, вините себя, когда будете отлаживать свою почту, если будете вмешиваться в это. Часто это достаточно сложно, даже если у вас есть вся информация. Вы можете изменить это с помощью header_checks
, смотрите этот вопрос.
Ответ или решение
Постфикс/Довекот: Как избежать раскрытия адреса для общей почты
Вопрос о раскрытии адреса в заголовках почтовых сообщений, когда используется универсальный (catchall) адрес, является достаточно актуальным для систем с высокой степенью конфиденциальности. Этот вопрос часто возникает при настройках почтовых серверов, таких как Postfix и Dovecot, когда почта с нескольких доменов объединяется в один общий ящик. В данном ответе мы рассмотрим, как можно управлять раскрытием адреса и какие меры предосторожности следует применять, чтобы минимизировать риски.
Проблема
При отправке сообщения на общий адрес почты, как показано в заголовках, вы можете заметить, что указанный адрес несколько раз упоминается, например:
- В заголовке
Delivered-To
- В заголовке
Received
Эти заголовки могут содержать адреса, которые потенциально могут быть видны получателю сообщения, что может не соответствовать вашим требованиям к конфиденциальности.
Решение для заголовка Delivered-To
В Postfix заголовок Delivered-To
служит для предотвращения дублирования доставки писем. Подробно описано в документации Postfix. Однако, если вы хотите убрать этот заголовок или изменить его, есть несколько опций:
-
Отключение заголовка
Delivered-To
: Вы можете установить пустое значение для параметраprepend_delivered_header
в файлеmain.cf
:prepend_delivered_header =
Однако, настоятельно рекомендуется быть осторожным с этой настройкой, поскольку отключение этого заголовка может привести к сложностям в отслеживании доставки писем и потенциальному разрыву почтового процесса.
-
Изменение параметра
frozen_delivered_to
: Этот параметр можно установить в значениеno
:frozen_delivered_to = no
Эта опция предотвращает обновление заголовка при расширении алиасов, однако ее работа может потребовать тестирования в вашей конкретной ситуации.
Решение для заголовка Received
Заголовок Received
отображает информацию о том, как проходило сообщение между серверами. Этот заголовок управляется самим Postfix и, к сожалению, сильно изменять его содержание без потери именной информации и возможности отладки проблемы довольно затруднительно. Тем не менее, можно использовать header_checks
, чтобы отфильтровать или изменить эти заголовки:
-
Создайте файл правил для проверки заголовков, например
/etc/postfix/header_checks
и добавьте в него правило:/^Received:/ IGNORE
-
После этого настройте Postfix использовать файл правил, добавив в файл
main.cf
следующую строку:header_checks = regexp:/etc/postfix/header_checks
Заключение
Работа с почтовыми системами, такими как Postfix и Dovecot, требует внимания к деталям, особенно когда речь идет о конфиденциальности данных. Хотя существуют способы минимизировать визуализацию адреса в заголовках, сохранение стандартного поведения, как правило, служит лучшим интересам управления почтой. Всегда проводите тестирование изменений в конфигурации в безопасной среде, прежде чем применять их в производственной. Не забывайте, что любой шаг к улучшению конфиденциальности и безопасности требует дальнейшего анализа на предмет влияния на рабочие процессы.
Если у вас возникают дополнительные вопросы или потребуется помощь в настройке, не стесняйтесь обращаться за профессиональной поддержкой.