
Я пытаюсь добиться того, чтобы все электронные письма, приходящие на адрес , [email protected]
переписывались [email protected]
и доставлялись на адрес [email protected]
.
Оба canonical_maps
и virtual_alias_maps
работают для доставки альтернативному получателю. Когда я прочиталдокон мне говорит, что с canonical_maps
, cleanup
делает полную переписывание.
Однако на практике электронное письмо все еще имеет to
адрес исходного получателя. Поэтому при просмотре электронного письма в почтовом ящике Боба отображается электронное письмо Джо.
Мне почему-то кажется, что я что-то упускаю.
Конфигурация:
alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
bounce_queue_lifetime = 2d
canonical_maps = hash:/etc/postfix/canonical
config_directory = /etc/postfix
header_checks = pcre:/etc/postfix/header_checks
home_mailbox = Maildir/
html_directory = /usr/share/doc/postfix/html
inet_interfaces = all
mailbox_size_limit = 0
maximal_queue_lifetime = 4d
milter_default_action = accept
milter_protocol = 2
mydestination = ...
myhostname = ...
mynetworks = ...
myorigin = /etc/mailname
non_smtpd_milters = inet:localhost:8891
readme_directory = /usr/share/doc/postfix
recipient_delimiter = +
relayhost =
smtp_fallback_relay = ...
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name
smtpd_milters = inet:localhost:8891
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access permit_mynetworks reject_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
transport_maps = hash:/etc/postfix/transport
virtual_alias_maps = hash:/etc/postfix/virtual
Журналы:
Sep 25 09:40:30 server1 postfix/smtpd[28285]: connect from mail-la0-f66.google.com[209.85.215.66]
Sep 25 09:40:31 server1 postfix/smtpd[28285]: 7CA784EDB6: client=mail-la0-f66.google.com[209.85.215.66]
Sep 25 09:40:31 server1 postfix/cleanup[28339]: 7CA784EDB6: message-id=<CAJjncucnGM532xhcn37VAwmwQoYEwOUfE_A33-oyJJH5PqPUcA@mail.gmail.com>
Sep 25 09:40:31 server1 postfix/qmgr[7593]: 7CA784EDB6: from=<[email protected]>, size=1813, nrcpt=1 (queue active)
Sep 25 09:40:32 server1 postfix/smtpd[28285]: disconnect from mail-la0-f66.google.com[209.85.215.66]
Sep 25 09:40:32 server1 postfix/smtp[28593]: 7CA784EDB6: enabling PIX workarounds: disable_esmtp delay_dotcrlf for ...[...]]:25
Sep 25 09:40:33 server1 postfix/smtp[28593]: 7CA784EDB6: to=<[email protected]>, orig_to=<[email protected]>, relay=...[...]:25, delay=1.6, delays=0.45/0/0.42/0.73, dsn=2.0.0, status=sent (250 2.0.0 Ok: queued as 98F729600E)
Sep 25 09:40:33 server1 postfix/qmgr[7593]: 7CA784EDB6: removed
решение1
Из mail.log видно, что вы хотите переписать письмо с удаленного клиента. Настройки postfix rewrite по умолчанию предотвращают это.
Выдержка изPostfix Переписывание README
Postfix версии 2.2 дает вам возможность либо вообще не перезаписывать заголовки сообщений от удаленных SMTP-клиентов, либо помечать неполные адреса в таких заголовках сообщений как недействительные. Вот как это работает:
Postfix всегда перезаписывает заголовки сообщений от локальных SMTP-клиентов и от команды Postfix sendmail, а также добавляет собственный домен к неполным адресам. Параметр
local_header_rewrite_clients
управляет тем, какие SMTP-клиенты Postfix считает локальными (по умолчанию только адреса локальных сетевых интерфейсов).Postfix никогда не перезаписывает адреса заголовков сообщений от удаленных SMTP-клиентов, если
remote_header_rewrite_domain
значение параметра пустое (настройка по умолчанию).В противном случае Postfix перезаписывает заголовки сообщений от удаленных SMTP-клиентов и добавляет
remote_header_rewrite_domain
значение к неполным адресам. Эту функцию можно использовать для добавления зарезервированного домена, например "domain.invalid", чтобы неполные адреса нельзя было спутать с локальными адресами.
Итак, самое простое решение — не оставлять параметр remote_header_rewrite_domain
с пустым значением. Вам нужно предоставить этому параметру значение, например
remote_header_rewrite_domain = domain.invalid
Или вы можете использовать static:all
параметр on local_header_rewrite_clients
, тогда postfix будет считать всех удаленных клиентов локальными.
local_header_rewrite_clients = static:all