Mailversand über Exchange Online bei Office365 / Microsoft365 mit Postfix

Mit einem lokalen Exchange war es ein Leichtes, den Exchange-Server als Relayhost anzugeben und so E-Mails über den eigenen Mailserver zu versenden. Mit zunehmender Nutzung von Office365 bzw. Microsoft365 oder Exchange Online ist dies aber nicht mehr ohne Weiteres möglich und es müssen einige Dinge beachtet werden. Auf diese Stolpersteine möchte ich hier eingehen.

Dieses Problem kann mit allen Systemen auftreten, die die Modern Authentication von Microsoft nicht unterstützen. Also z.B. WordPress, Nextcloud, Firewalls, Monitoring-Systeme etc.

Inhaltsverzeichnis

Voraussetzungen

Sie benötigen folgende Informationen, um mit der Konfiguration beginnen zu können:

  • Den Benutzernamen und das Kennwort des Users, über welchen E-Mails versendet werden sollen
  • Zugriff auf die Exchange Online Management Shell
  • Zugang auf den lokalen Postfix

Wenn Sie diese Voraussetzungen erfüllt haben, können wir mit der Konfiguration beginnen.

App-Kennwort anlegen

Hierzu melden Sie sich mit dem User für den Mailversand bei Microsoft365 an und klicken rechts oben auf das Profil-Icon, um die Kontoeinstellungen zu öffnen. Alternativ können Sie auch den folgenden Link anklicken: https://mysignins.microsoft.com/security-info
Hiermit gelangen Sie direkt auf die entsprechende Kontoseite bei Microsoft365. Achten Sie hierbei allerdings darauf, mit dem korrekten Account eingeloggt zu sein bzw. sich mit dem korrekten Account anzumelden.

Sie sollten hier nun das folgende Fenster sehen. Wenn ja, klicken Sie hier auf den Button Anmeldemethode hinzufügen:

Anmeldemethode hinzufügen

Wählen Sie nun den Punkt App-Kennwort aus und geben Sie dem Kennwort einen entsprechenden Namen:

App-Kennwort auswählen

Zu guter Letzt wird Ihnen das Kennwort angezeigt. Sie sehen das Kennwort an dieser Stelle nur einmal. Deshalb sollten Sie das Kennwort kopieren und in einem Passwort-Safe ablegen. Mit einem Klick auf „Fertig“ verschwindet das Fenster und das App-Kennwort ist erfolgreich bei Microsoft365 in Ihrem Konto hinterlegt.

App-Kennwort kopieren

SMTP-Authentifizierung aktivieren

Der Versand über Microsoft365 bzw. Exchange Online ist im Standard per SMTP nicht möglich. Dies können Sie aber mit einem einfachen Powershell-Befehl in der Exchange Online Management Shell aktiveren.

Starten Sie die Exchange Online Management Shell und geben Sie dort den folgenden Befehl ein:

Set-CASMailbox -Identity [E-Mail-Adresse] -SmtpClientAuthenticationDisabled $false

Ersetzen Sie den Block [E-Mail-Adresse] mit der Adresse des Microsoft365-Kontos, über das später die E-Mails versendet werden sollen. Fertig.

Weiterführende Informationen zu den Powershell-Befehlen finden sich auf der Hilfe-Seite von Microsoft.

Postfix konfigurieren

Damit Sie nun Nachrichten über den Postfix versenden können, muss dieser noch für Microsoft365 angepasst werden.

Legen Sie dazu 2 zusätzliche Dateien mit dem folgenden Befehl an:

sudo touch /etc/postix/sasl_passwd; sudo touch /etc/postfix/sender_canonical

In die Datei /etc/postfix/sasl_passwd fügen Sie nun folgenden Inhalt ein. Wie oben gilt auch hier, dass Sie die Werte entsprechend Ihrer Umgebung anpassen:

[smtp.office365.com]:587 [E-Mail-Adresse]:[App-Kennwort]

Die [E-Mail-Adresse] ist wieder die Adresse des Microsoft365-Kontos, über welches die E-Mails versendet werden sollen. Das [App-Kennwort] haben Sie ebenfalls in Schritt 1 erstellt.

In die Datei /etc/postfix/sasl_passwd fügen Sie folgenden Inhalt ein:

user1 [E-Mail-Adresse]
user2 [E-Mail-Adresse]

Die [E-Mail-Adresse] ist wieder die Adresse des Microsoft365-Kontos, über welches die E-Mails versendet werden sollen.
user1 bzw. user2 sind die lokalen Benutzer des Linux-Systems. An dieser Stelle wird den Usern erlaubt, dass diese mit diesem Absender E-Mails versenden dürfen.

Aktivieren Sie nun die beiden Daten mit den folgenden Befehlen:

sudo postmap /etc/postfix/sasl_passwd
sudo postmap /etc/postfix/sender_canonical

Passen Sie zum Schluss noch die Datei /etc/postfix/main.cf an.
Hier definieren Sie nun den Relay-Host und ein paar andere Einstellungen, damit der Versand über Microsoft365 möglich wird.
Fügen Sie die Zeilen am Ender der Datei ein bzw. passen Sie die Zeilen entsprechend an, sofern diese schon bestehen:

relayhost = [smtp.office365.com]:587
smtp_sasl_auth_enable = yes
smtp_sasl_password_maps =  hash:/etc/postfix/sasl_passwd
sender_canonical_maps = hash:/etc/postfix/sender_canonical
smtp_tls_security_level = may
smtp_sasl_security_options = noanonymous

Wenn alles korrekt ist können Sie eine Testmail senden und anschließend im Logfile folgende Einträge sehen:

echo "blabla" | mail -s Test [E-Mail-Empfänger];tail -f /var/log/mail.log

Sep 14 15:41:29 server postfix/pickup[7169]: 7DD831C1214: uid=0 from=<Sender>
Sep 14 15:41:29 server postfix/cleanup[20286]: 7DD831C1214: message-id=<xxxx>
Sep 14 15:41:29 server postfix/qmgr[20462]: 7DD831C1214: from=<sender>, size=324, nrcpt=1 (queue active)
Sep 14 15:41:30 server postfix/smtp[20289]: 7DD831C1214: to=<receipient>, relay=smtp.office365.com[52.98.171.242]:587, delay=1.1, delays=0.02/0.01/0.58/0.45, dsn=2.0.0, status=sent (250 2.0.0 OK <xxxx> [Hostname=yyyy.eurprd01.prod.exchangelabs.com])
Sep 14 15:41:30 server postfix/qmgr[20462]: 7DD831C1214: removed

Sie haben nun erfolgreich den Mailversand über Exchange Online bei Microsoft365 mit einem lokalen Postfix Mailserver realisiert.

Sollten Sie Fragen zur Konfiguration haben, können Sie uns gerne jederzeit kontaktieren oder wir erstellen Ihnen ein unverbindliches Angebot.

Sascha Jelinek