# 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`: ```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. ```powershell 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: ```text 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: ```powershell Stop-ScheduledTask -TaskName "SMTPGraphRelay" ``` V1.3 sichern und V1.4 als `SMTPGraphRelay.ps1` ablegen, dann: ```powershell Start-ScheduledTask -TaskName "SMTPGraphRelay" ``` Die `config.json` muss nicht geändert werden. Im Log erscheint bei einem gesunden Zertifikat beim Start beispielsweise: ```text Graph-Zertifikat gültig bis 2028-08-13 23:00:00 (729 Tage verbleibend). ```