Skip to main content

Lösung für Legacy Geräte ohne SMTP oAuth ab September 2025

Microsoft wird ab September 2025 die Möglichkeit Basic Auth für SMTP zu nutzen, deaktivieren. Dadurch können viele alte Geräte ohne oAuth Unterstützung keine E-Mails mehr versenden. Davon betroffen sind viele ältere Drucker oder Systeme die Status E-Mails versenden.

Wie bereits in unserem Blog Artikel Microsoft 365 ab September 2025 kein SMTP Auth mehr geschrieben, müssen wir eine Lösung für Legacy Geräte ohne oAuth Unterstützung finden. Dazu haben wir uns verschiedene Lösungsansätze angeschaut und möchten einen davon hier vorstellen.

High Volume Mails für Microsoft 365 (HVE)

Microsoft bietet lustiger weise eine eigene Lösung für das selbst geschaffene Problem an unter dem Namen High-Volume-E-Mail. Aktuell ist dieser Dienst in der Public Preview und kann konstenlos genutzt werden. In der Public Preview Phase kann Microsoft ohne Vorankündigung jederzeit Änderungen vornehmen oder den Dienst aussetzen.

Zusätzlich gibt Microsoft den Hinweis, das ab Juni 2025 die Möglichkeit zum versenden von E-Mails an externe Empfänger entfernt wird.

Damit eignet sich HVE nur bedingt als SMTP Basic Auth Ersatz, da man E-Mails nur an interne Empfänger versenden kann.

In der Praxis möchte man hin und wieder auch mal Schriftsätze einscannen und direkt an eine externe E-Mail Adresse versenden können, ohne Umweg über ein internes Postfach. Zum anderen werden die Status E-Mails von verschiedenen Systemen an externe Dienstleister versendet. Beispiel hierfür wären USV, Server, NAS-Systeme oder Firewall.

Natürlich kann man sich dafür noch mal zusätzlich ein internes Postfach erstellen und von dort die E-Mails an externe Weiterleiten. Aber schön finde ich diese Lösung nicht.

Größtes Problem ist jedoch, das Microsoft kein konkreten Termin für das Ende der Public Preview Phase nennt und es noch keine Preise für den HVE Dienst gibt.

Externes IMAP-Postfach bei einem Webhoster

Eine weitere Lösung wäre das anmieten eines IMAP-Postfachs bei einem anderen Anbieter wie z.B. Netcup. Hierfür würde sich der günstigste Tarif für das Webhosting 1000 NUE anbieten. Eine DE-Domain ist da bereits inklusive.

Demnach würde man eine zusätzliche DE-Domain mieten und die E-Mails per SMTP darüber versenden.

Unschön finde ich hierbei, das die E-Mails von einer anderen Absenderdomaine als der eigentlichen Unternehmensdomaine versendet werden.

SMTP OAuth Relay

Auf github sind wir auf das Projekt SMTP OAuth Relay von Justin Iven Müller aufmerksam geworden. Dabei handelt es sich um einen Docker Container mit SMTP Server, der die eingehenden SMTP Verbindungen und damit übermittelten Zugangsdaten nutzt, um E-Mails über die Microsoft Graph Schnittstelle zu versenden.

Dabei ist es möglich, einen Docker Container für mehrere Microsoft Tenants zu nutzen. Als SMTP User und Passwort werden die Tenant ID, Client Application ID und das Client Secret der Application genutzt.

Die SMTP Verbindung ist über ein SSL Zertifikat abgesichert.

Einziger Nachteil, alle 2 Jahre läuft das Client Secret ab. Dann muss im Microsoft Tenant für diese Application ein neues Secret generiert werden und in jedem Gerät das neue Passwort hinterlegt werden. Sonst funktioniert der E-Mail versand nicht mehr. Dabei stellen 2 Jahre die maximale Passwort Laufzeit dar. Diese Limitierung kommt von Microsoft.

Zusammenfassung

Es gibt verschiedene Lösungen für das Ende von Basic Auth SMTP von Microsoft. Alle Lösungen haben Vor- und Nachteile. Letztlich haben wir uns für die SMTP OAuth Relay Lösung entschieden und müssen alle 2 Jahre das Client Secret austauschen. Aber wer weiß, vielleicht kann das in 2 Jahren die KI übernehmen.

Anbei unsere Installationsanleitung für die SMTP OAuth Relay Lösung.

Installation von Docker sowie dem Docker Container

Als Basis brauchen wir einen Debian oder Ubuntu Server und das Paket curl (apt-get install curl). Anschließend installieren wir Docker über das apt-Repository.

apt update
apt install ca-certificates curl gnupg lsb-release
mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
chmod a+r /etc/apt/keyrings/docker.gpg

echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt update
apt install docker-ce docker-ce-cli containerd.io

Nun wechseln wir in das Verzeichnis /opt und erstellen ein Unterverzeichnis smtp-relay und darin den Unterordner /certs:

cd /opt && mkdir smtp-relay && cd /smtp-relay
mkdir certs && cd certs

Wir sollten uns nun im Ordner /opt/smtp-relay/certs befinden und können nun das SSL-Zertifikat erzeugen:

openssl req -x509 -newkey rsa:4096 -keyout key.pem -out cert.pem -days 3650 -nodes -subj '/CN=localhost'

In Github wird zwar angegeben das die Zertifikate in /usr/src/smtp-relay/certs hinterlegt werden sollen. Bei uns hat der Docker Container diese jedoch im Unterordner /certs erwartet.

Wir wechseln zurück zu /opt/smtp-relay und erstellen den Docker Container:

cd /opt/smtp-relay

docker run --name smtp-relay -p 8025:8025 \
  -v $(pwd)/certs:/usr/src/smtp-relay/certs \
  -e LOG_LEVEL=INFO \
  -e USE_TLS=True \
  -e REQUIRE_TLS=True \
  ghcr.io/justiniven/smtp-oauth-relay:latest

Damit der Docker Container nach einem Reboot automatisch startet, fügen wir noch folgende Zeile in crontab -e hinzu:

@reboot sleep 30 && cd /opt/smtprelay && docker start smtp-relay

Installation der Application in Microsoft Entra ID

Hierfür findet sich auf der github Seite von SMTP OAuth Relay ein Powershell Script: https://github.com/JustinIven/smtp-oauth-relay unter dem Punkt Usage und Create and restrict Application with PowerShell.

Das manuelle Anlegen der Application in Microsoft Entra ID hat bei unserer Installation nicht funktioniert. Sofern man sich noch nicht per PowerShell mit Microsoft 365 verbunden hat, muss man folgende Module installieren:

Install-Module ExchangeOnlineManagement
Install-Module Microsoft.Graph -Force
Set-ExecutionPolicy RemoteSigned
Import-Module ExchangeOnlineManagement
Import-Module Microsoft.Graph -Force

und man kann die Verbindung wie folgt starten:

Connect-ExchangeOnline -ShowProgress $true

Dabei öffnet sich ein Login Fenster von Microsoft 365 und anschließend lässt sich das Script in der PowerShell ausführen.

Application Secret, Tenant ID und Application Client ID werden vom Script am Ende angezeigt und werden für den SMTP Client benötigt.


© TECH-SUPPORT.KOELN