Document review fixes and harden mail actions
This commit is contained in:
parent
4f8a441d51
commit
21aa6e39e1
5 changed files with 101 additions and 3 deletions
57
REVIEW-FIXES.md
Normal file
57
REVIEW-FIXES.md
Normal 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.
|
||||
Loading…
Add table
Add a link
Reference in a new issue