57 lines
2.6 KiB
Markdown
57 lines
2.6 KiB
Markdown
# 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.
|