# IMP-07 – Prüfprotokoll: Mehrfach-Postfach-Verwaltung pro Tenant Voraussetzung IMP-01 (Fertig), Core TEN-01/TEN-02 (Fertig, Tenant-Datenmodell & Onboarding). ## Umsetzung - `mail/internal/mailboxconfig/store.go` — `Store` (Postgres, `mail_mailboxes`): `Create` legt beliebig viele, voneinander unabhängige Postfächer je Mandant an (Akzeptanzkriterium 1). Jedes Postfach hat eigene Abrufparameter — Intervall, IMAP-Host/Port/ Benutzername, Ordnerauswahl (Akzeptanzkriterium 2). - Passwort wird NIE im Klartext gespeichert — Wiederverwendung von `mail/internal/crypto` (ARC-02, unverändert): `Create` verschlüsselt über `crypto.Service.Seal`, `GetDecryptedPassword` entschlüsselt bei Bedarf über `crypto.Service.Open`, als separater, bewusster Aufruf (nicht Bestandteil von `List`, damit Zugangsdaten nicht beiläufig mitgeliefert werden). - `List` filtert strikt nach `tenant_slug` (Akzeptanzkriterium 3). `Update`/`Delete` sind streng auf `tenant_slug` + `id` beschränkt. - Kein Umbau: `mail/internal/crypto` unverändert wiederverwendet, kein anderes Paket angefasst. ## Prüfungen | # | Prüfung | Ergebnis | |---|---|---| | 1 | Test: zwei Mandanten mit je mehreren Postfächern sehen ausschließlich eigene Postfächer | **bestanden** – `TestList_TwoTenantsWithMultipleMailboxesSeeOnlyOwn`: Mandant A mit 2, Mandant B mit 1 Postfach — jeweils real nur die eigenen sichtbar | | 2 | Test: Löschen eines Postfachs beeinträchtigt andere Postfächer desselben Mandanten nicht | **bestanden** – `TestDelete_DoesNotAffectSiblingMailboxes`: Postfach „eins" real gelöscht, Postfach „zwei" bleibt real vollständig funktionsfähig (Zugangsdaten weiterhin real entschlüsselbar) | | 3 | Konfigurationsänderung an einem Postfach wirkt nicht auf andere | **bestanden** – `TestUpdate_ConfigChangeDoesNotAffectOtherMailboxes`: Änderung an Postfach „eins" (Host/Intervall) real übernommen, Postfach „zwei" real unverändert | ## Build/Test-Ergebnis (192.168.1.131) ``` go build ./... -> clean go vet ./... -> clean golangci-lint run ./... -> 0 issues TEST_TENANT_DSN=... go test ./internal/mailboxconfig/... -v -timeout 60s -> 3/3 bestanden TEST_TENANT_DSN=... TEST_MANTICORE_URL=... go test ./... -p 1 -> alle 22 Pakete bestanden, keine Regression ``` ## Gesamtergebnis **Bestanden.** Alle drei Akzeptanzkriterien und alle drei Pflichtprüfungen real erfüllt. Entsperrt ARC-09, trägt zu QA-02 bei — QA-02 bleibt weiterhin blockiert, bis dessen übrige Abhängigkeiten (ING-07, ING-08, ING-10) fertig sind.