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

Сохранение адреса получателя при пересылке с использованием постфикса

Я настраиваю postfix для пересылки писем, отправленных в домен, на внешние адреса электронной почты. то есть, когда я получаю электронное письмо на philip@contoso.com, оно автоматически отправляется на philip@example.com. Это работает, за исключением того, что когда я получаю электронное письмо, оно показывает получателя по адресу philip@example.com вместо philip@contoso.com.

Я знаю, что это возможно, потому что, когда мне пересылали электронные письма с помощью какой-нибудь веб-панели в дешевой хостинговой компании, это отлично работало. Итак, как мне заставить postfix сохранять адрес получателя, даже если он пересылается на другой адрес?

Моя конфигурация:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
config_directory = /etc/postfix
home_mailbox = Maildir/
inet_interfaces = all
inet_protocols = all
mailbox_command =
mailbox_size_limit = 0
mydestination = mydomain.com, localhost.localdomain, localhost
myhostname = mx1.mydomain.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128
myorigin = /etc/mailname
readme_directory = no
recipient_canonical_maps = hash:/etc/postfix/recipient_canonical
recipient_delimiter = +
relayhost = [smtp.mandrillapp.com]
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps = hash:/etc/postfix/sasl_passwd
smtp_sasl_security_options = noanonymous
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtp_use_tls = yes
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_relay_restrictions = permit_mynetworks permit_sasl_authenticated defer_unauth_destination
smtpd_tls_cert_file = /etc/ssl/certs/ssl-cert-snakeoil.pem
smtpd_tls_key_file = /etc/ssl/private/ssl-cert-snakeoil.key
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_use_tls = yes

Чтобы было ясно, когда я получаю электронное письмо на переадресованный адрес, я все равно хочу, чтобы в поле «Кому» отображался адрес получателя (@ mydomain.com).

Похоже, вы используете этот параметр

recipient_canonical_maps = hash:/etc/postfix/recipient_canonical

для обеспечения пересылки почты. По умолчанию Каноническое сопоставление адресов перепишет и заголовок, и адрес конверта. Итак, отключите перезапись заголовка, у вас есть два варианта здесь

  1. Настроить recipient_canonical_classes так recipient_canonical_maps влияет только на адрес конверта.

    recipient_canonical_classes = envelope_recipient
    
  2. Использовать virtual_alias_maps который предназначен для отображения адресов конверта, не затрагивая заголовок.

В virtual_alias_maps вариант предпочтительнее в этом случае, поскольку вы можете использовать его для сопоставления «один ко многим». Параметр recipient_canonical_maps поддерживает только однозначное сопоставление.