feat(PROJ-49): Verschlüsselungspflicht at-rest sichtbar machen (Healthcheck & Warnung)

storage.loadKey() startet bei fehlendem/unlesbarem/ungültigem Keyfile
weiterhin unverschlüsselt (kein Hard-Fail), aber:
- einmalige WARN-Logzeile beim Start mit konkretem Grund
- neuer Healthcheck-Prüfpunkt "Encryption" in archivmail status
- Dashboard-API liefert encryption.enabled
- README: GoBD-Hinweis zu storage.keyfile

Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
This commit is contained in:
sysops
2026-06-13 20:01:38 +02:00
parent dc9e11fc9f
commit 46096db802
7 changed files with 114 additions and 6 deletions
+9 -1
View File
@@ -214,7 +214,7 @@ database:
storage:
store_path: /var/archivmail/store # Haupt-Mailspeicher (AES-256-GCM)
astore_path: /var/archivmail/astore # Anhang-Speicher
keyfile: /etc/archivmail/keyfile # 32-Byte AES-Schlüsseldatei
keyfile: /etc/archivmail/keyfile # 32-Byte AES-Schlüsseldatei (siehe Hinweis unten)
smtp:
enabled: true
@@ -416,6 +416,14 @@ Alle E-Mails werden verschlüsselt auf dem Dateisystem gespeichert.
- Nonce: 12 Byte, kryptografisch zufällig, pro E-Mail neu generiert
- Dateiformat: `[12-Byte Nonce][verschlüsselte Daten]`
> **Wichtig (GoBD, PROJ-49):** `storage.keyfile` ist technisch optional — fehlt es,
> startet der Dienst weiter, speichert E-Mails dann aber **unverschlüsselt**. Für
> produktive, GoBD-konforme Installationen ist `storage.keyfile` quasi-pflicht und
> sollte immer gesetzt sein. Ist keine (gültige, 32 Byte große) Schlüsseldatei
> konfiguriert, gibt archivmail beim Start eine deutliche WARN-Zeile aus, und
> sowohl `archivmail status` (Eintrag „Encryption") als auch das Admin-Dashboard
> zeigen den Status `disabled` an.
**Datei-ID / Integrität:**
- Jede E-Mail erhält als ID den SHA-256-Hash des Klartexts
- Duplikat-Erkennung: gleicher Hash → gleiche Datei, Speicherung übersprungen