使用postfix转发时保留收件人地址

我正在设置postfix将发送到域的电子邮件转发到外部电子邮件地址。 即当我在[email protected]上收到一封电子邮件时,它会自动发送到[email protected]。 这是工作,除了当我收到的电子邮件显示[email protected]而不是[email protected]收件人。

我知道这样做是有可能的,因为当我使用一个廉价的托pipe公司的一些Web面板转发电子邮件时,它运行的很好。 那么如何让后缀保留收件人地址,即使它被转发到另一个地址?

我的configuration:

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 

要清楚的是,当我收到转发地址的电子邮件时,我仍然希望它将To:地址显示为具有原始收件人(@ mydomain.com)。

看起来像你使用这个参数

 recipient_canonical_maps = hash:/etc/postfix/recipient_canonical 

提供邮件转发。 默认情况下, 规范地址映射将重写头和信封地址。 所以,禁用头重写,你有两个select在这里

  1. configurationrecipient_canonical_classes这样recipient_canonical_maps只影响信封地址。

     recipient_canonical_classes = envelope_recipient 
  2. 使用为信封地址映射而devise的virtual_alias_maps ,而不用接触标题。

在这种情况下, virtual_alias_maps选项是首选 ,因为您可以使用它来执行一对多映射。 参数recipient_canonical_maps只支持一对一映射。