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:
Wählen Sie nun den Punkt App-Kennwort aus und geben Sie dem Kennwort einen entsprechenden Namen:
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.
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.
- QuickTip: Alle Benutzer auf einem Windows Server benachrichtigen - 19. Juni 2024
- BookStack: Eine moderne Alternative zu klassischen Wiki-Systemen - 17. Mai 2024
- Windows-Sandbox – die sichere Testumgebung - 7. März 2024