157 lines
3.3 KiB
Markdown
157 lines
3.3 KiB
Markdown
# 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
|
||
```
|