Files
SMTPGraphRelay/README.md
T

3.3 KiB
Raw Blame History

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:

$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:

[10] Failed Queue verwalten

Untermenü:

[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:

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:

C:\Program Files\SMTPGraphRelay\shutdown.request

Der Relay erkennt das Signal kurzfristig und führt diesen Ablauf aus:

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:

"Smtp": {
  "GracefulShutdownSeconds": 30
}

Zulässiger Bereich:

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

[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