Files
SMTPGraphRelay/README.md
T

157 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# SMTPGraphRelay 1.8.0
V1.8 ergänzt zwei Betriebsfunktionen:
- Failed-Queue-Verwaltung im Setup-/Manager
- kooperativer Graceful Shutdown für Update, Repair und manuelles Stoppen über den Manager
Alle Funktionen aus V1.7 bleiben erhalten, insbesondere SMTP AUTH LOGIN/PLAIN,
Queue-ID, Retry/Backpressure, Zertifikatsrotation, Health Check und Online-Update.
## Installation
**Windows PowerShell 5.1 als Administrator**:
```powershell
$u='https://me-gitea.maieredv.cloud/MAIEREDV/SMTPGraphRelay/raw/branch/main/Setup-SMTPGraphRelay.ps1';$f="$env:TEMP\Setup-SMTPGraphRelay.ps1";Invoke-WebRequest $u -UseBasicParsing -OutFile $f;& $f
```
## Failed Queue verwalten
Im Manager:
```text
[10] Failed Queue verwalten
```
Untermenü:
```text
[1] Failed Queue anzeigen
[2] Details einer Mail anzeigen
[3] Eine Mail erneut zustellen
[4] Alle Mails erneut zustellen
[5] Eine Mail endgültig löschen
[6] Alle Failed-Mails endgültig löschen
[0] Zurück
```
Die Übersicht zeigt u. a.:
- Queue-ID
- Zeitpunkt
- RetryCount
- Envelope-From
- Empfänger
- letzten HTTP-/Graph-Status
- Größe
In den Details steht zusätzlich die letzte Fehlermeldung und falls vorhanden
der SMTP-AUTH-Benutzer.
### Requeue
Beim erneuten Zustellen wird die `.eml` samt Metadaten von `failed` nach
`queue\pending` verschoben.
Dabei werden:
```text
RetryCount = 0
NextAttemptUtc = jetzt
RequeuedUtc = jetzt
```
gesetzt. Die alte Fehlerbeschreibung bleibt in den Metadaten erhalten, bis ein
neuer Versandversuch sie aktualisiert.
Der laufende Queue-Worker nimmt die Mail anschließend automatisch wieder auf.
## Graceful Shutdown
Update und Repair verwenden nicht mehr zuerst `Stop-ScheduledTask`.
Stattdessen erstellt der Manager:
```text
C:\Program Files\SMTPGraphRelay\shutdown.request
```
Der Relay erkennt das Signal kurzfristig und führt diesen Ablauf aus:
```text
Shutdown angefordert
|
v
SMTP-Listener schließen
|
+--> keine neuen Verbindungen mehr
|
v
laufende SMTP-Sessions auslaufen lassen
|
v
Queue-/Graph-Worker beendet aktuellen Versand
|
+--> startet keine weitere Queue-Mail
|
v
Runspaces schließen
|
v
Graph-Verbindung trennen
|
v
Relay beendet sich selbst
```
Standard-Timeout:
```json
"Smtp": {
"GracefulShutdownSeconds": 30
}
```
Zulässiger Bereich:
```text
5 bis 300 Sekunden
```
Wenn der Relay innerhalb dieses Zeitraums nicht selbst beendet ist, verwendet
der Manager als Fallback einen harten `Stop-ScheduledTask`.
Beim nächsten Start wird ein eventuell altes `shutdown.request` vorsorglich
entfernt.
## Warum das für Updates wichtig ist
Ein Update/Repair kann damit nicht mehr unnötig mitten in:
- einer SMTP-DATA-Übertragung
- einer aktiven SMTP-Session
- oder einem laufenden Graph-sendMail-Aufruf
den Prozess beenden.
Wenn ein Client oder Graph länger als das konfigurierte Grace-Timeout hängt,
wird nach Ablauf des Timeouts kontrolliert auf den bisherigen harten Stop
zurückgefallen.
## Manager
```text
[1] Neuinstallation aus Gitea
[2] Installation aus Gitea reparieren
[3] Nach Online-Updates suchen
[4] Entra / Exchange RBAC prüfen
[5] Zertifikat erneuern
[6] Health Check ausführen
[7] Deinstallieren
[8] Status anzeigen
[9] SMTP-AUTH verwalten
[10] Failed Queue verwalten
[0] Beenden
```