Files
SMTPGraphRelay/README.md
T

2.4 KiB
Raw Blame History

SMTPGraphRelay V1.4 Zertifikats-Lifecycle

V1.4 erweitert V1.3 um Zertifikatsüberwachung und sichere Rotation.

Relay: automatische Zertifikatsüberwachung

Beim Start wird das Zertifikat aus Graph.CertificateThumbprint geprüft:

  • Zertifikat vorhanden
  • privater Schlüssel vorhanden
  • Ablaufdatum

Standardwerte:

  • Warnung ab 60 Tagen Restlaufzeit
  • kritisch ab 14 Tagen
  • erneute Prüfung alle 12 Stunden

Optional in config.json:

"Graph": {
  "TenantId": "...",
  "ClientId": "...",
  "CertificateThumbprint": "...",
  "SenderMailbox": "info@example.com",
  "ForceSender": true,
  "CertificateWarningDays": 60,
  "CertificateCriticalDays": 14,
  "CertificateCheckHours": 12
}

Die zusätzlichen Werte sind optional; bestehende Configs funktionieren unverändert.

Rotation

Renew-SMTPGraphRelayCertificate.ps1 muss als Administrator mit Windows PowerShell 5.1 ausgeführt werden.

cd "C:\Program Files\SMTPGraphRelay"
.\Renew-SMTPGraphRelayCertificate.ps1

Ablauf:

  1. bestehende Config lesen
  2. neues nicht exportierbares Zertifikat in LocalMachine\My erzeugen
  3. Entra-Admin interaktiv anmelden
  4. bestehende App über ihre ClientId finden
  5. neues Zertifikat zusätzlich in keyCredentials hinterlegen
  6. App-only Login mit dem neuen Zertifikat testen
  7. erst danach config.json atomar auf den neuen Thumbprint umstellen
  8. Relay-Scheduled-Task neu starten
  9. optional altes Cloud- und lokales Zertifikat entfernen

Exchange Application RBAC muss nicht neu aufgebaut werden, weil die App/ClientId bei der Rotation unverändert bleibt.

Warum das alte Zertifikat zunächst erhalten bleibt

Die sichere Reihenfolge ist:

OLD funktioniert
    |
NEW erzeugen
    |
OLD + NEW in Entra
    |
NEW Auth testen
    |
Config -> NEW
    |
Relay neu starten
    |
erst dann optional OLD entfernen

So gibt es während der Rotation keinen Zeitpunkt ohne gültiges Credential und ein Rollback bleibt möglich.

Update von V1.3

Task stoppen:

Stop-ScheduledTask -TaskName "SMTPGraphRelay"

V1.3 sichern und V1.4 als SMTPGraphRelay.ps1 ablegen, dann:

Start-ScheduledTask -TaskName "SMTPGraphRelay"

Die config.json muss nicht geändert werden.

Im Log erscheint bei einem gesunden Zertifikat beim Start beispielsweise:

Graph-Zertifikat gültig bis 2028-08-13 23:00:00 (729 Tage verbleibend).