Postfix y Office 365: retransmite todo el correo electrónico saliente (incluido el local) pero entrega el correo electrónico entrante

Postfix y Office 365: retransmite todo el correo electrónico saliente (incluido el local) pero entrega el correo electrónico entrante

Estamos migrando lentamente a Office 365 desde Postfix/Dovecot, con el objetivo de habilitar a algunos usuarios a la vez. El correo de nuestro dominio debe llegar a Office 365 y, si no se encuentra ninguna dirección coincidente en Office 365, debe reenviarse a Postfix, que lo entrega a un buzón de Dovecot (estamos usando una configuración de usuarios virtuales, todos los usuarios se almacenan en un servidor LDAP independiente). Esto nos permite usar Office 365 para los usuarios que han sido configurados, pero para otros que no lo han hecho, el correo va al sistema Postfix/Dovecot existente.

he seguidoestas instruccionessobre la fabricación de conectores, etc., y funciona: después de incluir las IP de EOP en la lista blanca, Office 365 se entregará bien a Postfix. El problema es conseguir que las cosas vayan en la dirección opuesta. Todo el correo electrónico saliente debe transmitirse a través de Office 365, y si configuro una relayhostvariable y elimino nuestro dominio local, mydestinationsentonces esto funciona... pero Postfix no entregará ningún correo entrante (lo que genera un bucle de rebote). Si mantengo nuestro dominio, mydestinationsel correo se entrega localmente y no pasa por el relé, lo que significa que los usuarios que todavía están en el sistema Postfix no pueden enviar correos electrónicos a los usuarios de Office 365.

¿Hay alguna manera de forzar que todos los correos electrónicos salientes (incluidos los entregados localmente) pasen por el relé y aún así aceptar correos electrónicos entrantes para el mismo dominio? Estuve todo el día ayer chocando contra una pared y la única solución real que se me ocurre es ejecutar dos instancias de Postfix separadas: una que transmita todo y la otra que solo se use para el correo entrante. ¿Pero seguramente hay una manera de hacer esto con solo una instancia? He buscado, pero en todas partes parece asumir que solo estás transmitiendo correos electrónicos y no estás haciendo nada más.

postconf -n se ve así (el dominio cambió a ejemplo.com). Eliminé todos los cambios que hice en el intento de lograr la retransmisión de 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

Para obtener toda la retransmisión de correo, podría configurar relayhost = example-com.mail.protection.outlook.comy eliminar example.com de la mydestinationslista, lo que hace que la entrega funcione para Office 365 pero luego daña el sistema anterior.

Busqué transport_mapsintentar enviar todos los correos electrónicos para direcciones de correo electrónico específicas (es decir, las que se trasladaron a Office 365) a través del relé y todo lo demás funciona localmente, pero los valores allí parecen siempre ignorarse.

Estoy totalmente sin ideas, así que si alguien tiene alguna se lo agradecería.

Respuesta1

OK, no estoy totalmente satisfecho con esto, pero lo hice funcionar. Sin embargo, siento que hay una manera más sencilla, pero no puedo entenderla.

Después de investigar más, descubrí que virtual_alias_mapsse ejecutaantesnada en transport_maps, por eso pensé que lo estaban ignorando. Entonces, si tiene direcciones que se están reescribiendo, entonces cualquier resultado de las reescrituras del alias virtual debe coincidir con lo que va a alimentar transport_maps. Entonces mi transport_mapshash se ve así:

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

Esto haría que el correo electrónico enviado a[correo electrónico protegido]se transmitirá a Office 365, pero todo lo demás se entrega localmente.

Funciona, pero todavía siento que hay una mejor manera de manejar esto.

información relacionada