package backend // TargetMailbox = das Ziel-Postfach (neuer Host). Der Umzug schreibt hier per // IMAP APPEND hinein -- NICHT per SMTP. APPEND erhaelt Ordner, Flags und // Original-Datum; SMTP wuerde alles als "neu/ungelesen" mit falschem Datum // zustellen und die Ordnerstruktur zerstoeren. type TargetMailbox interface { Folders() ([]TargetFolder, error) // vorhandene Ziel-Ordner (fuer Rollen-Zuordnung) Delim() string // Hierarchie-Trenner des Ziels EnsureFolder(name string) error // anlegen + subscriben, falls fehlt Append(folder string, m RawMessage) error // mit m.Flags und m.InternalDate Close() error } // OpenIMAPTarget verbindet das Ziel per go-imap/v2 (Security wie Quelle, siehe // a.DstSecurity/a.DstInsecure; meist "tls"). func OpenIMAPTarget(a Account) (TargetMailbox, error) { // TODO Codex: nach DstSecurity verbinden + Login. Folders()/Delim() aus // LIST. EnsureFolder = CREATE (Fehler "existiert" schlucken) + SUBSCRIBE, // Name in modified-UTF-7 ueberlaesst go-imap der Lib (Klartext uebergeben!). // Append = APPEND mit FLAGS + INTERNALDATE. Zielordner NIE selbst waehlen — // 07-migrate.go liefert ihn via MapSourceToTarget (11-folders.go). return nil, nil }