Postfix und Office 365: Alle ausgehenden E-Mails (auch lokale) weiterleiten, aber eingehende E-Mails zustellen

Postfix und Office 365: Alle ausgehenden E-Mails (auch lokale) weiterleiten, aber eingehende E-Mails zustellen

Wir migrieren langsam von Postfix/Dovecot zu Office 365, mit dem Ziel, jeweils nur einige Benutzer zu aktivieren. E-Mails für unsere Domäne sollten bei Office 365 eingehen. Wenn in Office 365 keine passende Adresse gefunden wird, sollten sie an Postfix weitergeleitet werden, das sie an ein Dovecot-Postfach liefert (wir verwenden ein virtuelles Benutzer-Setup, bei dem alle Benutzer auf einem separaten LDAP-Server gespeichert werden). Dadurch können wir Office 365 für Benutzer verwenden, die eingerichtet wurden, aber für andere, die dies nicht getan haben, gehen die E-Mails an das vorhandene Postfix/Dovecot-System.

Ich bin gefolgtdiese Anweisungenbeim Erstellen von Konnektoren usw. und es funktioniert – nach dem Whitelisting von EOP-IPs wird Office 365 problemlos an Postfix zugestellt. Das Problem besteht darin, die Dinge in die entgegengesetzte Richtung zu bringen. Alle ausgehenden E-Mails sollten über Office 365 weitergeleitet werden, und wenn ich eine relayhostVariable einstelle und unsere lokale Domäne entferne, mydestinationsfunktioniert dies … aber dann stellt Postfix keine eingehenden E-Mails zu (führt zu einer Bounce-Schleife). Wenn ich unsere Domäne drin lasse, mydestinationswerden die E-Mails lokal zugestellt und gehen nicht durch das Relay, was bedeutet, dass Benutzer, die sich noch im Postfix-System befinden, keine E-Mails an Office 365-Benutzer senden können.

Gibt es eine Möglichkeit, alle ausgehenden E-Mails (einschließlich lokal zugestellter) über das Relay laufen zu lassen und trotzdem eingehende E-Mails für dieselbe Domäne zu akzeptieren? Ich bin gestern den ganzen Tag gegen eine Wand gelaufen und die einzige echte Lösung, die mir einfällt, ist, zwei separate Postfix-Instanzen auszuführen – eine, die alles weiterleitet, und die andere, die nur für eingehende E-Mails verwendet wird. Aber es gibt doch sicher eine Möglichkeit, dies mit nur einer Instanz zu tun? Ich habe gesucht, aber überall scheint einfach davon auszugehen, dass Sie nur E-Mails weiterleiten und sonst nichts tun.

postconf -n sieht so aus (Domäne geändert in example.com). Ich habe alle Änderungen entfernt, die ich beim Versuch, Office 365 zum Weiterleiten zu bringen, vorgenommen habe:

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

Um die Weiterleitung aller E-Mails zu erreichen, könnte ich relayhost = example-com.mail.protection.outlook.comexample.com in die mydestinationsListe aufnehmen und daraus entfernen. Dadurch funktioniert die Zustellung für Office 365, das alte System funktioniert jedoch nicht mehr.

Ich habe versucht, transport_mapsalle E-Mails an bestimmte E-Mail-Adressen (also die, die zu Office 365 verschoben wurden) über das Relay zu senden. Alles andere funktioniert lokal, aber die Werte dort scheinen immer ignoriert zu werden.

Mir gehen die Ideen völlig aus. Wenn also jemand welche hat, wäre ich dankbar.

Antwort1

OK, ich bin damit nicht ganz zufrieden, aber ich habe es zum Laufen gebracht. Ich habe das Gefühl, dass es einen einfacheren Weg gibt, aber ich komme nicht dahinter.

Nach weiteren Recherchen fand ich heraus, dass virtual_alias_mapses läuftVoralles in transport_maps, weshalb ich dachte, es würde ignoriert. Wenn Sie also Adressen umschreiben, muss die Ausgabe der virtuellen Alias-Umschreibungen mit dem übereinstimmen, was Sie in eingeben transport_maps. Dann sieht mein transport_mapsHash folgendermaßen aus:

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

Dies würde dazu führen, dass E-Mails an[email geschützt]an Office 365 weitergeleitet werden, alles andere wird jedoch lokal zugestellt.

Es funktioniert, aber ich bin trotzdem der Meinung, dass es einen besseren Weg gibt, damit umzugehen.

verwandte Informationen