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:
- bestehende Config lesen
- neues nicht exportierbares Zertifikat in
LocalMachine\Myerzeugen - Entra-Admin interaktiv anmelden
- bestehende App über ihre ClientId finden
- neues Zertifikat zusätzlich in
keyCredentialshinterlegen - App-only Login mit dem neuen Zertifikat testen
- erst danach
config.jsonatomar auf den neuen Thumbprint umstellen - Relay-Scheduled-Task neu starten
- 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).