# E-Mail über Microsoft 365

Microsoft hat die Anmeldung mit Benutzer und Kennwort für SMTP abgeschaltet. Für Postfächer
in Microsoft 365 führt deshalb einer der beiden folgenden Wege zum Ziel. Beide brauchen
einmalig eine **App-Registrierung** im Azure-Portal.

## Welchen Weg wählen

| | **OAuth** | **App-Only** |
| ------------------- | ------------------------------ | ------------------------------ |
| Versand als | ein angemeldetes Benutzerkonto | die Anwendung selbst |
| Anmeldung | einmalig im Browser | keine |
| Absender | das angemeldete Postfach | ein frei angegebenes Postfach |
| Nötige Rechte | Delegiert: `SMTP.Send`, `offline_access` | Anwendung: `Mail.Send` |

<p class="callout success">Für einen Server, der jahrelang unbeaufsichtigt läuft, ist <strong>App-Only</strong> der robustere Weg: Es hängt kein Benutzerkonto daran, das gesperrt werden oder das Kennwort wechseln könnte.</p>

<p class="callout danger">App-Only mit <code>Mail.Send</code> als Anwendungsberechtigung erlaubt der Registrierung, als <strong>jedes</strong> Postfach der Organisation zu senden. Wer das eng ziehen will, beschränkt die Registrierung in Exchange Online über eine Anwendungszugriffsrichtlinie auf das eine Absenderpostfach. Das gehört mit der Microsoft-365-Administration abgestimmt.</p>

## Weg 1 — OAuth

![Reiter M365-OAuth](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-e933b566-m365-oauth-1-tab.png)

### 1. App registrieren

Im Azure-Portal eine neue App-Registrierung anlegen, mit einem eindeutigen Namen. Als
**Umleitungs-URI** wird die Adresse dieser FINN.ghost-Installation eingetragen, endend auf
`/api/mail/oauth/redirect`:

```text
https://finn.kunde.de:8083/api/mail/oauth/redirect
```

![App-Registrierung anlegen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-a925f20d-m365-oauth-2-appregistrierung.png)

<p class="callout danger">Die Umleitungs-URI muss <strong>zeichengenau</strong> mit der Adresse übereinstimmen, unter der FINN.ghost erreichbar ist — samt Port. Weicht sie ab, bricht Microsoft die Anmeldung mit einer Meldung zur Redirect-URI ab. Das ist der häufigste Stolperstein.</p>

<p class="callout warning">In älteren Fassungen dieser Anleitung endete die Adresse auf <code>/api/settings/oauth/redirect</code>. Das gilt nicht mehr — der Pfad lautet <code>/api/mail/oauth/redirect</code>.</p>

### 2. Clientschlüssel erstellen

Unter **Zertifikate & Geheimnisse** einen neuen Clientschlüssel anlegen und den **Wert**
sofort notieren.

![Clientschlüssel erstellen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-72f97cbd-m365-oauth-3-clientschluessel.png)

<p class="callout warning">Der Wert wird nur einmal angezeigt. Wer ihn nicht notiert, muss einen neuen Schlüssel anlegen. Clientschlüssel laufen außerdem ab — das Ablaufdatum gehört notiert, sonst bleibt der Mailversand irgendwann ohne Vorwarnung stehen.</p>

### 3. Berechtigungen setzen

Unter **API-Berechtigungen** zwei delegierte Berechtigungen von **Microsoft Graph**
hinzufügen und die Zustimmung erteilen:

| Berechtigung | Wofür |
| ---------------- | -------------------------------------------- |
| `SMTP.Send` | Mails über SMTP AUTH senden |
| `offline_access` | Zugriff behalten, ohne erneute Anmeldung |

![API-Berechtigungen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-3bed4cd7-m365-oauth-4-berechtigungen.png)

<p class="callout info"><code>User.Read</code> steht dort in der Regel schon — es wird beim Anlegen der Registrierung mitgegeben und kann bleiben. Wichtig ist der grüne Haken bei <em>Status</em>: ohne erteilte Zustimmung greifen die Berechtigungen nicht.</p>

### 4. Werte übertragen

Aus dem Reiter **Übersicht** der Registrierung:

| Feld in Azure | Feld in FINN.ghost |
| ------------------------------- | ------------------ |
| Anwendungs-ID (Client) | **Client ID** |
| Verzeichnis-ID (Mandant) | **Tenant ID** |
| beim Anlegen hinterlegte Umleitungs-URI | **Redirect URI** |
| notierter Wert des Clientschlüssels | **Client Secret** |

![Werte in FINN.ghost eintragen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-0737a4b9-m365-oauth-5-felder.png)

### 5. Verbinden

Nach dem Klick auf **Verbinden** fragt Microsoft nach der Anmeldung. Danach steht die
Verbindung, und in der Karte erscheint die Adresse des verbundenen Kontos.

<p class="callout info">Angemeldet wird das Postfach, aus dem gesendet wird. Es muss ein Postfach in derselben Organisation sein.</p>

## Weg 2 — App-Only

![Reiter M365-App-Only](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-07385ff4-m365-apponly-1-tab.png)

### 1. App registrieren

Wie oben eine neue App-Registrierung mit eindeutigem Namen. Eine Umleitungs-URI wird hier
**nicht** gebraucht.

![App-Registrierung anlegen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-2e774cfd-m365-apponly-2-appregistrierung.png)

### 2. Clientschlüssel erstellen

Unter **Zertifikate & Geheimnisse**, Wert notieren.

![Clientschlüssel erstellen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-97ff022d-m365-apponly-3-clientschluessel.png)

### 3. Berechtigung setzen

Unter **API-Berechtigungen** eine **Anwendungsberechtigung** von Microsoft Graph hinzufügen
und die Zustimmung erteilen:

| Berechtigung | Typ |
| ------------ | ------------------------ |
| `Mail.Send` | Anwendung |

![API-Berechtigung Mail.Send](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-eef69e85-m365-apponly-4-berechtigungen.png)

<p class="callout warning">Anwendungsberechtigungen brauchen immer die <strong>Administratorzustimmung</strong>. Ohne sie schlägt der Versand mit einer Rechtemeldung fehl, obwohl alle Werte richtig eingetragen sind.</p>

### 4. Werte übertragen

| Feld in Azure | Feld in FINN.ghost |
| ------------------------ | ------------------- |
| Anwendungs-ID (Client) | **Client ID** |
| Verzeichnis-ID (Mandant) | **Tenant ID** |
| Wert des Clientschlüssels | **Client Secret** |
| — | **Absender-E-Mail** |

![Werte in FINN.ghost eintragen](https://wiki.dako-it.com/uploads/images/gallery/2026-09/ghostdocs-finnghost-systemhandbuch-sys-m365-65dfcf5d-m365-apponly-5-felder.png)

Die **Absender-E-Mail** ist das Postfach, aus dem gesendet wird.

<p class="callout info">Nach dem Speichern verschickt FINN.ghost eine Testmail an die eingetragenen Empfänger und bestätigt das in der Karte. Kommt sie nicht an, fehlt meist die Administratorzustimmung.</p>

Über **Trennen** wird die Verbindung wieder gelöst.

## Wenn der Versand nicht geht

| Meldung oder Symptom | Ursache |
| -------------------------------------------- | ----------------------------------- |
| Fehler zur Redirect-URI beim Verbinden | Umleitungs-URI weicht ab |
| Anmeldung geht, Versand scheitert | Berechtigung fehlt oder ohne Zustimmung |
| lief monatelang, jetzt nicht mehr | Clientschlüssel abgelaufen |
| App-Only meldet fehlende Rechte | Administratorzustimmung nicht erteilt |
| Absender wird abgelehnt | Postfach gehört nicht zur Organisation |

Die Antwort von Microsoft steht im Protokoll. Siehe [Log Informationen](https://wiki.dako-it.com/books/finnghost-systemhandbuch/page/log-informationen).

## Nächster Schritt

[EU-Auslands-Kontengruppen](https://wiki.dako-it.com/books/finnghost-systemhandbuch/page/eu-auslands-kontengruppen)