Mail-Graveyard/REVIEW-FIXES.md
2026-07-14 05:37:49 +02:00

2.6 KiB

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.
    • Detailbrief: go-imap-migration.md.
  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.