Zum Hauptinhalt springen

SMTP mit OAuth

Diese Anleitung beschreibt die Konfiguration des SMTP-Mailservice für das Versenden von E-Mails über Microsoft 365 / Azure AD mit modernen OAuth2-Authentifizierungsmethoden.

Parameter

Die OAuth-Authentifizierung kann in den systemweiten Einstellungen unter E-Mail aktiviert werden.


1. Grundeinstellungen (immer erforderlich)

SMTP-Server Bereich

Feld

Beschreibung

Beispiel

SMTP-Server

Der Hostname des Mailservers

smtp.office365.com oder outlook.office365.com

Port

Der SMTP-Port

587 (Standard für STARTTLS)

Benutzername

Die E-Mail-Adresse des Absenders

Passwort

Nur bei Basic Auth (ohne OAuth)

(wird nicht empfohlen)

Verschlüsselte Verbindung

Aktivieren für sichere Übertragung

✓ Immer aktivieren

Message-ID Header erzeugen

Automatische Message-ID-Generierung

✓ Optional

Standard CC Adresse

Standard-CC-Empfänger für alle E-Mails

Optional

OAuth Authentifizierung

Moderne, sichere Authentifizierung

✓ Empfohlen


2. OAuth-Konfiguration

2.1 Verfahren: Auswahl zwischen Graph API und Standard SMTP

MS Graph API (empfohlen für Cloud)

  • Vorteile:

    • Kein SMTP-Server erforderlich

    • Moderne REST-API

    • Bessere Integration mit Microsoft 365

    • Unterstützt erweiterte Funktionen (z.B. Shared Mailboxes)

  • Nachteile:

    • Nur für Microsoft 365 / Exchange Online

    • Nicht für On-Premises Exchange Server

Erforderliche Felder:

  • SMTP-Server: wird ignoriert

  • Port: wird ignoriert

  • Benutzername: Erforderlich (E-Mail-Adresse)

  • Scopes: https://graph.microsoft.com/Mail.Send, https://graph.microsoft.com/User.Read

#Standard SMTP

  • Vorteile:

    • Standard SMTP-Protokoll

    • Funktioniert mit Exchange On-Premises und Exchange Online

    • Kompatibel mit anderen SMTP-Servern

  • Nachteile:

    • SMTP-Server muss erreichbar sein

    • Zusätzliche Netzwerkkonfiguration erforderlich

Erforderliche Felder:

  • SMTP-Server: Erforderlich (z.B. smtp.office365.com)

  • Port: Erforderlich (z.B. 587)

  • Benutzername: Erforderlich

  • Scopes: https://outlook.office365.com/SMTP.Send, https://outlook.office365.com/User.Read


2.2 Authentifizierung: Auswahl der OAuth-Methode

A) Client Credentials (App-Only)

Wann verwenden:

  • Automatisierte Batch-Jobs ohne Benutzerinteraktion

  • Geplante Aufgaben (z.B. nächtlicher Rechnungsversand)

  • Service-Accounts ohne angemeldeten Benutzer

  • KEINE Multi-Faktor-Authentifizierung (MFA) erforderlich

Erforderliche Felder:

Feld

Erforderlich

Beschreibung

Tenant ID

✓ Ja

Die Azure AD Tenant ID (GUID)

Client ID

✓ Ja

Die Application (Client) ID aus Azure AD

Client Secret

✓ Ja

Das Client Secret aus der App-Registrierung

Scopes

✓ Ja

https://graph.microsoft.com/.default

Authority

Optional

Standard: https://login.microsoftonline.com/

Redirect Url

Nein

nicht verwendet

Azure AD Konfiguration:

  1. App-Registrierung erstellen:

    • Portal: https://portal.azure.com → "Azure Active Directory" → "App-Registrierungen"

    • "Neue Registrierung" → Namen vergeben

    • "Nur Konten in diesem Organisationsverzeichnis" auswählen

  2. Client Secret erstellen:

    • In der App: "Zertifikate & Geheimnisse" → "Neuer geheimer Clientschlüssel"

    • Beschreibung eingeben → Ablaufdatum wählen → "Hinzufügen"

    • Wert sofort kopieren (wird nur einmal angezeigt!)

  3. API-Berechtigungen hinzufügen:

    • "API-Berechtigungen" → "Berechtigung hinzufügen"

    • "Microsoft Graph" → "Anwendungsberechtigungen"

    • Berechtigungen auswählen:

      • Mail.Send (E-Mails im Namen der App senden)

    • "Administratoreinwilligung erteilen" (erforderlich!)

  4. Exchange Online Konfiguration:

    • Da App-Only-Berechtigungen, muss ein Service-Principal in Exchange angelegt werden:

    # Exchange Online PowerShell verbinden Connect-ExchangeOnline  # Service Principal für bestimmtes Postfach autorisieren New-ServicePrincipal -AppId "<Client ID>" -ServiceId "<Object ID der App>" Add-MailboxPermission -Identity "[email protected]" -User "<Client ID>" -AccessRights SendAs

Einschränkungen:

  • ❌ Keine MFA-Unterstützung

  • ❌ Benutzer muss nicht angemeldet sein

  • ⚠ Höhere Sicherheitsanforderungen (Client Secret muss geschützt werden)


B) Device Code Flow (empfohlen für MFA)

Wann verwenden:

  • Benutzer hat Multi-Faktor-Authentifizierung (MFA) aktiviert

  • Anwendung ohne eingebauten Browser

  • Terminalserver / Citrix-Umgebungen

  • Remote-Desktop-Sitzungen

  • Der Benutzer soll sich auf einem anderen Gerät authentifizieren können

Erforderliche Felder:

Feld

Erforderlich

Beschreibung

Tenant ID

✓ Ja

Die Azure AD Tenant ID (GUID)

Client ID

✓ Ja

Die Application (Client) ID aus Azure AD

Client Secret

Nein

nicht verwendet

Scopes

✓ Ja

Graph: https://graph.microsoft.com/Mail.Send, https://graph.microsoft.com/User.Read<br>SMTP: https://outlook.office365.com/SMTP.Send

Authority

Optional

Standard: https://login.microsoftonline.com/

Redirect Url

Nein

nicht verwendet

Azure AD Konfiguration:

  1. App-Registrierung erstellen (wie bei Client Credentials)

  2. Öffentlichen Client aktivieren:

    • "Authentifizierung" → "Erweiterte Einstellungen"

    • "Öffentliche Clientflows zulassen" → JA

  3. API-Berechtigungen hinzufügen:

    • "API-Berechtigungen" → "Berechtigung hinzufügen"

    • "Microsoft Graph" → "Delegierte Berechtigungen"

    • Berechtigungen auswählen:

      • Mail.Send (E-Mails im Namen des Benutzers senden)

      • User.Read (Benutzerprofil lesen)

    • ODER für Standard SMTP:

      • "APIs, die meine Organisation verwendet" → "Office 365 Exchange Online"

      • SMTP.Send

  4. Keine Administratoreinwilligung erforderlich (Benutzer stimmt selbst zu)

Ablauf beim Senden:

  1. Anwendung zeigt einen Code und eine URL an (z.B. https://microsoft.com/devicelogin)

  2. Benutzer öffnet die URL auf einem beliebigen Gerät (PC, Smartphone, Tablet)

  3. Code eingeben → Mit Microsoft-Konto anmelden

  4. MFA durchführen (SMS, Authenticator App, etc.)

  5. Zustimmung erteilen → Anwendung kann E-Mails senden

  6. Token wird für zukünftige Nutzung gespeichert (kein erneuter Login erforderlich)

Vorteile:

  • ✓ Volle MFA-Unterstützung

  • ✓ Benutzerfreundlich bei fehlender Browserintegration

  • ✓ Funktioniert auf Terminalservern

  • ✓ Token-Caching (kein wiederholter Login)


C) Interaktiv (MFA)

Wann verwenden:

  • Benutzer hat Multi-Faktor-Authentifizierung (MFA) aktiviert

  • Desktop-Anwendung mit Browserintegration

  • Beste Benutzererfahrung gewünscht

  • Interaktive Umgebung (kein automatisierter Batch-Job)

Erforderliche Felder:

Feld

Erforderlich

Beschreibung

Tenant ID

✓ Ja

Die Azure AD Tenant ID (GUID)

Client ID

✓ Ja

Die Application (Client) ID aus Azure AD

Client Secret

Nein

nicht verwendet

Scopes

✓ Ja

Graph: https://graph.microsoft.com/Mail.Send, https://graph.microsoft.com/User.Read<br>SMTP: https://outlook.office365.com/SMTP.Send

Authority

Optional

Standard: https://login.microsoftonline.com/

Redirect Url

✓ Ja

Standard: http://localhost

Azure AD Konfiguration:

  1. App-Registrierung erstellen (wie bei Device Code Flow)

  2. Öffentlichen Client aktivieren:

    • "Authentifizierung" → "Erweiterte Einstellungen"

    • "Öffentliche Clientflows zulassen" → JA

  3. Redirect URI konfigurieren:

    • "Authentifizierung" → "Plattformkonfigurationen hinzufügen"

    • "Mobile und Desktopanwendungen" auswählen

    • Redirect URI hinzufügen: http://localhost ODER

    • Empfohlen: https://login.microsoftonline.com/common/oauth2/nativeclient

  4. API-Berechtigungen hinzufügen: (wie bei Device Code Flow)

    • "API-Berechtigungen" → "Microsoft Graph" → "Delegierte Berechtigungen"

    • Mail.Send, User.Read

Ablauf beim Senden:

  1. Anwendung öffnet automatisch einen Browser (eingebettet oder extern)

  2. Benutzer meldet sich mit Microsoft-Konto an

  3. MFA durchführen (falls aktiviert)

  4. Zustimmung erteilen → Browser schließt sich automatisch

  5. Anwendung erhält Token und kann E-Mails senden

  6. Token wird für zukünftige Nutzung gespeichert

Vorteile:

  • ✓ Volle MFA-Unterstützung

  • ✓ Beste Benutzererfahrung (automatischer Browser-Login)

  • ✓ Single Sign-On möglich

  • ✓ Token-Caching

Einschränkungen:

  • ⚠ Erfordert Browser-Zugriff

  • ⚠ Funktioniert nicht in Batch-Jobs / geplanten Aufgaben


3. Schritt-für-Schritt Anleitungen

3.1 Szenario: Automatischer Rechnungsversand (ohne MFA)

Empfohlene Konfiguration:

  • Verfahren: MS Graph API

  • Authentifizierung: Client Credentials

Konfiguration:

  1. ✓ OAuth Authentifizierung aktivieren

  2. Verfahren: MS Graph API

  3. Authentifizierung: Client Credentials

  4. Tenant ID eingeben (aus Azure Portal kopieren)

  5. Client ID eingeben (aus App-Registrierung)

  6. Client Secret eingeben (aus App-Registrierung)

  7. Scopes: https://graph.microsoft.com/.default

  8. Benutzername: E-Mail-Adresse des Absenders

Azure AD Schritte:

  • App-Registrierung mit Anwendungsberechtigungen (Mail.Send)

  • Administratoreinwilligung erteilen

  • Exchange Online Service Principal konfigurieren


3.2 Szenario: Benutzer mit MFA (Desktop-Anwendung)

Empfohlene Konfiguration:

  • Verfahren: MS Graph API

  • Authentifizierung: Interaktiv (MFA)

Konfiguration:

  1. ✓ OAuth Authentifizierung aktivieren

  2. Verfahren: MS Graph API

  3. Authentifizierung: Interaktiv (MFA)

  4. Tenant ID eingeben

  5. Client ID eingeben

  6. Scopes: https://graph.microsoft.com/Mail.Send, https://graph.microsoft.com/User.Read

  7. Redirect Url: http://localhost

  8. Benutzername: E-Mail-Adresse des Benutzers

Azure AD Schritte:

  • App-Registrierung mit delegierten Berechtigungen

  • Öffentliche Clientflows aktivieren

  • Redirect URI konfigurieren (http://localhost)

Beim ersten E-Mail-Versand:

  • Browser öffnet sich automatisch

  • Benutzer meldet sich an und führt MFA durch

  • Token wird gespeichert (kein erneuter Login erforderlich)


3.3 Szenario: Terminalserver / Citrix mit MFA

Empfohlene Konfiguration:

  • Verfahren: MS Graph API

  • Authentifizierung: Device Code

Konfiguration:

  1. ✓ OAuth Authentifizierung aktivieren

  2. Verfahren: MS Graph API

  3. Authentifizierung: Device Code

  4. Tenant ID eingeben

  5. Client ID eingeben

  6. Scopes: https://graph.microsoft.com/Mail.Send, https://graph.microsoft.com/User.Read

  7. Benutzername: E-Mail-Adresse des Benutzers

Azure AD Schritte:

  • App-Registrierung mit delegierten Berechtigungen

  • Öffentliche Clientflows aktivieren

Beim ersten E-Mail-Versand:

  • Anwendung zeigt Code und URL an (z.B. https://microsoft.com/devicelogin)

  • Benutzer öffnet URL auf Smartphone oder anderem Gerät

  • Code eingeben → Anmelden mit MFA

  • Token wird gespeichert


3.4 Szenario: Exchange On-Premises mit OAuth

Empfohlene Konfiguration:

  • Verfahren: Standard SMTP

  • Authentifizierung: Device Code oder Interaktiv (MFA)

Konfiguration:

  1. ✓ OAuth Authentifizierung aktivieren

  2. Verfahren: Standard SMTP

  3. Authentifizierung: Device Code oder Interaktiv (MFA)

  4. SMTP-Server: mail.firma.local (On-Premises Server)

  5. Port: 587

  6. Tenant ID eingeben

  7. Client ID eingeben

  8. Scopes: https://outlook.office365.com/SMTP.Send

  9. Benutzername: E-Mail-Adresse

Wichtig: On-Premises Exchange Server muss OAuth2 unterstützen (Exchange 2019+ mit Hybrid-Konfiguration)


4. Felder-Referenz

Tenant ID

  • Wo finden: Azure Portal → "Azure Active Directory" → "Übersicht" → "Mandanten-ID"

  • Format: GUID (z.B. f71c2e5d-XXXX-XXXX-XXXX-51ed6de7e531)

  • Erforderlich für: Alle OAuth-Methoden

Client ID

  • Wo finden: Azure Portal → "App-Registrierungen" → Ihre App → "Übersicht" → "Anwendungs-ID (Client)"

  • Format: GUID (z.B. fa0c330b-XXXX-XXXX-XXXX-a246841b23a4)

  • Erforderlich für: Alle OAuth-Methoden

Client Secret

  • Wo erstellen: Azure Portal → Ihre App → "Zertifikate & Geheimnisse" → "Neuer geheimer Clientschlüssel"

  • Wichtig: Wert sofort kopieren (wird nur einmal angezeigt!)

  • Ablaufdatum: Maximal 24 Monate (muss dann erneuert werden)

  • Erforderlich für: Nur Client Credentials

Scopes

  • Graph API Mail senden:

    • Anwendungsberechtigungen: https://graph.microsoft.com/.default

    • Delegierte Berechtigungen: https://graph.microsoft.com/Mail.Send, https://graph.microsoft.com/User.Read

  • Standard SMTP:

    • Delegierte Berechtigungen: https://outlook.office365.com/SMTP.Send, https://outlook.office365.com/User.Read

  • Mehrere Scopes: Mit Komma trennen

Authority

  • Standard: https://login.microsoftonline.com/

  • Multi-Tenant: https://login.microsoftonline.com/common

  • Nur Organisationen: https://login.microsoftonline.com/organizations

  • In 99% der Fälle: Standard-Wert beibehalten

Redirect Url

  • Standard: http://localhost

  • Alternativ: https://login.microsoftonline.com/common/oauth2/nativeclient

  • Wichtig: Muss exakt mit Azure AD Konfiguration übereinstimmen

  • Erforderlich für: Nur Interactive Flow


5. Häufige Fehler und Lösungen

"AADSTS700016: Application not found in directory"

  • Ursache: Client ID ist falsch oder App wurde gelöscht

  • Lösung: Client ID aus Azure Portal überprüfen

"AADSTS65001: The user or administrator has not consented"

  • Ursache: Berechtigungen wurden nicht erteilt

  • Lösung:

    • Bei Client Credentials: Administratoreinwilligung erteilen

    • Bei delegierten Berechtigungen: Benutzer muss zustimmen (passiert automatisch beim ersten Login)

"AADSTS50076: Application password required"

  • Ursache: MFA ist aktiviert, aber Client Credentials Flow wird verwendet

  • Lösung: Wechsel zu Device Code oder Interactive Flow

"Fehler beim Senden der E-Mail über Graph API. Status: Forbidden"

  • Ursache: App hat keine Berechtigung für das Postfach

  • Lösung:

    • Exchange Online Berechtigungen prüfen

    • Bei Client Credentials: Service Principal konfigurieren

    • Bei delegierten Berechtigungen: Benutzer muss Postfachbesitzer sein

"AADSTS7000218: The request body must contain the following parameter: 'client_assertion'"

  • Ursache: Client Secret fehlt bei Client Credentials Flow

  • Lösung: Client Secret korrekt eingeben

#Token läuft ab / "AADSTS70011: The provided value for the input parameter 'scope' is not valid"

  • Ursache: Falsche Scopes für gewähltes Verfahren

  • Lösung:

    • Graph API: https://graph.microsoft.com/...

    • Standard SMTP: https://outlook.office365.com/...


6. Sicherheitshinweise

Client Secret Schutz

  • ⚠ Client Secret niemals in Quellcode speichern

  • ✓ Verwenden Sie sichere Konfigurationsdateien mit eingeschränkten Berechtigungen

  • ✓ Regelmäßig erneuern (vor Ablauf)

  • ✓ Bei Kompromittierung sofort in Azure AD widerrufen und neu erstellen

Token-Caching

  • ✓ Tokens werden verschlüsselt gespeichert (Windows DPAPI)

  • ✓ Speicherort: %LocalAppData%\eurosoft\esMail\TokenCache.bin

  • ✓ Pro Benutzerkonto isoliert

  • ℹ Bei Device Code / Interactive Flow: Token ist ~1 Stunde gültig, Refresh Token bis zu 90 Tage

MFA Empfehlung

  • ✓ Aktivieren Sie MFA für alle Benutzerkonten

  • ✓ Verwenden Sie Device Code oder Interactive Flow statt Client Credentials

  • ✓ Nur für automatisierte Dienste: Client Credentials mit besonders geschütztem Client Secret


7. Checkliste für die Einrichtung

Vor der Konfiguration

  • Azure AD Tenant ID notiert

  • Entscheidung: Graph API oder Standard SMTP?

  • Entscheidung: Welcher OAuth Flow? (MFA vorhanden?)

  • E-Mail-Adresse des Absenders bekannt

Azure AD App-Registrierung

  • App-Registrierung erstellt

  • Client ID notiert

  • Nur für Client Credentials:

    • Client Secret erstellt und sofort kopiert

    • Anwendungsberechtigungen (Mail.Send) hinzugefügt

    • Administratoreinwilligung erteilt

    • Exchange Online Service Principal konfiguriert

  • Nur für Device Code / Interactive:

    • Öffentliche Clientflows aktiviert

    • Delegierte Berechtigungen (Mail.Send) hinzugefügt

    • Nur für Interactive: Redirect URI konfiguriert

In der Anwendung

  • OAuth Authentifizierung aktiviert

  • Verfahren gewählt (Graph API / Standard SMTP)

  • Authentifizierung gewählt (Client Credentials / Device Code / Interactive)

  • Tenant ID eingegeben

  • Client ID eingegeben

  • Client Secret eingegeben (nur Client Credentials)

  • Scopes korrekt eingegeben (passend zu Verfahren)

  • Redirect Url eingegeben (nur Interactive)

  • Benutzername (E-Mail-Adresse) eingegeben

Test

  • Test-E-Mail versendet

  • Bei Device Code / Interactive: Login erfolgreich durchgeführt

  • E-Mail wurde erfolgreich zugestellt


8. Support und weitere Informationen

Microsoft Dokumentation

Bei Problemen

  1. Azure Portal → "App-Registrierungen" → Ihre App → "Anmeldeprotokolle" (zeigt Fehler bei der Authentifizierung)

  2. Überprüfen Sie die Berechtigungen: "API-Berechtigungen" → Status muss "Erteilt" sein

  3. Bei Exchange-Fehlern: Exchange Online Admin Center → "Postfächer" → Berechtigungen prüfen

Hat dies deine Frage beantwortet?