Files
nexarch/mail/docs/IMP-07-PRUEFPROTOKOLL.md
T
sysopsandClaude Sonnet 5 5dcfa36f99 IMP-07: mehrfach-postfach-verwaltung-pro-tenant
Verwaltung mehrerer Postfächer je Mandant: Anlage, getrennte
Abrufkonfiguration pro Postfach.

- store.go: Postgres-Store, beliebig viele unabhängige Postfächer je
  Mandant, eigene Abrufparameter (Intervall, Host/Port/Benutzername,
  Ordnerauswahl) je Postfach. Passwort nie im Klartext gespeichert —
  Wiederverwendung von mail/internal/crypto (ARC-02, unverändert) für
  Envelope-Encryption. List filtert strikt nach tenant_slug,
  Update/Delete streng auf tenant_slug+id beschränkt.

Prüfungen (alle real durchgeführt, siehe mail/docs/IMP-07-PRUEFPROTOKOLL.md):
1. TestList_TwoTenantsWithMultipleMailboxesSeeOnlyOwn: zwei Mandanten
   sehen real ausschließlich eigene Postfächer.
2. TestDelete_DoesNotAffectSiblingMailboxes: Löschen real ohne
   Auswirkung auf Geschwister-Postfächer.
3. TestUpdate_ConfigChangeDoesNotAffectOtherMailboxes: Änderung real
   isoliert auf ein Postfach beschränkt.

Kein Umbau: mail/internal/crypto unverändert wiederverwendet.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01HhgFcLS8tYMhDJpP74C6AQ
2026-09-01 00:31:18 +02:00

2.5 KiB
Raw Blame History

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.goStore (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.