Postfix и Office 365: ретранслировать всю исходящую электронную почту (включая локальную), но доставлять входящую почту

Мы медленно переходим на Office 365 от Postfix / Dovecot, с целью задействовать несколько пользователей одновременно. Почта для нашего домена должна поступать в Office 365, а затем, если в Office 365 не найдено совпадений адреса, она должна быть перенаправлена ​​в Postfix, который доставляет ее в почтовый ящик Dovecot (мы используем настройку виртуальных пользователей, все пользователи хранятся в отдельный сервер LDAP). Это позволяет нам использовать Office 365 для пользователей, которые были настроены, но для тех, кто еще не настроен, почта отправляется в существующую систему Postfix / Dovecot.

Я выполнил эти инструкции по созданию соединителей. и т.д., и это работает - после внесения IP-адресов EOP в белый список Office 365 доставит Postfix в порядке. Проблема в том, чтобы заставить все пойти в обратном направлении. Вся исходящая электронная почта должна ретранслироваться через Office 365, и если я установлю переменную relayhost и удалю наш локальный домен из mydestinations , тогда это сработает ... но тогда Postfix не будет доставлять входящую почту (в результате возникает цикл отказов). Если я сохраню наш домен в mydestinations , тогда почта будет доставляться локально и не проходит через ретранслятор, а это означает, что пользователи, все еще использующие систему Postfix, не могут отправлять электронную почту пользователям Office 365.

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

postconf -n выглядит так (домен изменен на example.com). Я удалил все изменения, которые внес в попытке получить ретрансляцию Office 365:

alias_database = hash:/etc/aliases
alias_maps = hash:/etc/aliases
append_dot_mydomain = no
biff = no
content_filter = smtp-amavis:[127.0.0.1]:10024
dovecot_destination_recipient_limit = 1
inet_interfaces = all
inet_protocols = all
mailbox_command = /usr/lib/dovecot/deliver
mailbox_size_limit = 0
mailbox_transport = dovecot
message_size_limit = 20480000
mydestination = $myhostname, silver.example.com, localhost.example.com, localhost, example.com
myhostname = smtp.example.com
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.0.0/24 192.168.10.0/24
myorigin = /etc/mailname
readme_directory = no
receive_override_options = no_address_mappings
recipient_bcc_maps = hash:/etc/postfix/recipient_bcc
recipient_delimiter = +
relayhost =
smtp_tls_note_starttls_offer = yes
smtp_tls_session_cache_database = btree:${data_directory}/smtp_scache
smtpd_banner = $myhostname ESMTP $mail_name (Ubuntu)
smtpd_recipient_restrictions = check_recipient_access hash:/etc/postfix/recipient_access, check_sender_access hash:/etc/postfix/sender_access, check_sender_access cidr:/etc/postfix/o365, reject_authenticated_sender_login_mismatch, permit_sasl_authenticated, permit_mynetworks, reject_invalid_hostname, reject_non_fqdn_hostname, reject_non_fqdn_sender, reject_non_fqdn_recipient, reject_unknown_sender_domain, reject_unknown_recipient_domain, reject_unauth_pipelining, reject_unauth_destination, reject_rbl_client bl.spamcop.net, reject_rbl_client b.barracudacentral.org, reject_rbl_client zen.spamhaus.org, reject_rbl_client cbl.abuseat.org
smtpd_relay_restrictions = permit_mynetworks, permit_sasl_authenticated, defer_unauth_destination
smtpd_sasl_auth_enable = yes
smtpd_sasl_path = private/auth
smtpd_sasl_type = dovecot
smtpd_sender_login_maps = hash:/etc/postfix/local_senders, ldap:/etc/postfix/ldap_senders.cf
smtpd_tls_CAfile = /etc/ssl/certs/example.com.cabundle
smtpd_tls_cert_file = /etc/ssl/certs/example.com.crt
smtpd_tls_key_file = /etc/ssl/private/example.com.key
smtpd_tls_loglevel = 1
smtpd_tls_mandatory_protocols = !SSLv2,!SSLv3
smtpd_tls_received_header = yes
smtpd_tls_security_level = may
smtpd_tls_session_cache_database = btree:${data_directory}/smtpd_scache
smtpd_tls_session_cache_timeout = 3600s
smtpd_use_tls = yes
tls_random_source = dev:/dev/urandom
virtual_alias_domains = events.example.com
virtual_alias_maps = hash:/etc/postfix/redirect, ldap:/etc/postfix/ldap_virtual_users.cf, ldap:/etc/postfix/ldap_virtual_groups.cf
virtual_transport = dovecot

Чтобы получить всю ретрансляцию почты, я мог бы установить relayhost = example-com.mail.protection.outlook.com и удалите example.com из списка mydestinations , в результате чего доставка будет работать для Office 365, но затем сломается старая система.

Я изучил использование transport_maps , чтобы попытаться отправить все электронные письма для конкретные адреса электронной почты (например, те, которые были перенесены в Office 365) через ретранслятор, а все остальное работает локально, но значения там, кажется, всегда игнорируются.

У меня совершенно нет идей, поэтому, если у кого-то есть какие-то, я Буду признателен.

1
задан 12 December 2017 в 01:23
1 ответ

Хорошо, я не совсем доволен этим, но у меня все заработало. Мне кажется, что есть более простой способ, но я не могу его понять.

После дальнейшего исследования я обнаружил, что virtual_alias_maps запускается до чего-либо в transport_maps , поэтому я подумал, что его игнорируют. Так что, если у вас есть перезаписываемые адреса, то все, что выводит перезапись виртуального псевдонима, должно соответствовать тому, что вы собираетесь передать в transport_maps . Тогда мой хэш transport_maps будет выглядеть так:

email@example.com        smtp:example-com.mail.protection.outlook.com
@example.com  :
*       :

Это приведет к тому, что электронная почта, отправленная (скрытая), будет ретранслирована в Office 365, но все остальное будет доставлено локально.

Это работает, но я все еще чувствую как будто есть лучший способ справиться с этим.

0
ответ дан 4 December 2019 в 04:21

Теги

Похожие вопросы