Document review fixes and harden mail actions

This commit is contained in:
DonVoo 2026-07-14 05:22:26 +02:00
parent 4f8a441d51
commit 21aa6e39e1
5 changed files with 101 additions and 3 deletions

57
REVIEW-FIXES.md Normal file
View file

@ -0,0 +1,57 @@
# Mail-Graveyard Review-Fixes
Stand: 2026-07-14
## Richtung
Der Migrationskern soll auf `emersion/go-imap/v2` umgestellt werden. Der aktuell handgeschriebene `simpleIMAP`-Parser ist zwar schlank, aber fuer ein Beweis-Archiv zu riskant: Ordnernamen, Flags, INTERNALDATE und FETCH-Varianten muessen korrekt und serverunabhaengig verarbeitet werden.
## P0 - Migrationsintegritaet
1. `simpleIMAP` durch `emersion/go-imap/v2` ersetzen.
- Betrifft `backend/04-imap-source.go` und `backend/05-imap-target.go`.
- Ziel: IMAP UTF-7 korrekt dekodieren, `FETCH` robust parsen, Flags korrekt normalisieren, APPEND RFC-konform senden.
2. IMAP UTF-7 Ordnernamen korrekt behandeln.
- Aktuelles Risiko: Rollen-Erkennung fuer Papierkorb/Geloescht/Gesendet scheitert bei Alt-Providern.
- Folge: Zielordner werden doppelt angelegt.
3. `\Recent` niemals per APPEND setzen.
- `\Recent` ist serververwaltet und darf nicht vom Client appended werden.
4. INTERNALDATE robust parsen.
- Ein- und zweistellige Tage muessen funktionieren.
- Bei Parse-Fehlern nicht still auf `time.Now()` fallen, sondern melden oder kontrolliert degradieren.
5. FETCH-Reihenfolge unabhaengig parsen.
- FLAGS, INTERNALDATE und BODY koennen serverseitig in anderer Reihenfolge kommen.
6. Ordnerweise Streaming statt kompletter Ordner im RAM.
- Ziel: grosse Postfaecher nicht in den Speicher laden.
7. POP3-Fallback verdrahten.
- `src_proto=pop3` darf nicht weiter in IMAP laufen.
## P1 - Sicherheit und Rollen
1. SMTP-Header-Injection verhindern.
- Erledigt: Betreff, From-Header und To-Header werden auf CR/LF geprueft.
2. Schreibende Viewer-Aktionen rollenbegrenzen.
- Erledigt: `/mail/send` und `/view/manual-copy` sind vorerst nur fuer Verwalter/Admins erreichbar.
- Offene Produktentscheidung: Wenn normale Benutzer weiterhin eingeschraenkt weiterleiten duerfen, braucht es einen separaten, begrenzten Forward-Endpunkt statt freiem Compose-SMTP.
## P2 - Lose Enden
1. `/view/forward` und `ForwardMessage()` entfernen oder sauber in den neuen Forward-Flow integrieren.
2. Sync-Dropdowns entweder implementieren oder sichtbar als "noch nicht aktiv" kennzeichnen.
3. Stale `TODO Codex`-Kommentare an fertigen Handlern bereinigen.
4. Tote Render-/Helper-Funktionen entfernen, sobald die Transfer-Workbench stabil ist.
## Verifikation pro Fix-Serie
- `go test ./...`
- Live-Test gegen einen kleinen IMAP-Account mit Umlautordnern.
- Live-Test gegen ein Alt-Provider-Postfach ohne SPECIAL-USE.
- Grossordner-Test mit Speicherbeobachtung.
- Rollen-Test: User darf nur Archiv lesen; Verwalter/Admin duerfen senden, kopieren und verwalten.