# Mail-Graveyard Kleines Go-Single-Binary für **Postfach-Umzüge zwischen Hosts**. Holt Mails aus Quell-Konten (IMAP, POP3 nur als Notnagel) und spielt sie **1:1 in Ziel-Konten auf dem neuen Host** ein – Ordnerstruktur, Flags und Original-Datum bleiben erhalten. Gleichzeitig wird jede Mail lokal als **mbox** (Cold Backup) weggeschrieben. Bedienung komplett im Browser im **Outlook-2013-Look**; die lokalen mbox-Postfächer lassen sich dort auch betrachten und bei Bedarf einzeln weiterleiten. ## Wozu Reiner Host-Umzug. Beispiel dr-gold: | Quelle (Intersolute, IMAP) | Ziel (All-Inkl, IMAP) | Fall | |----------------------------|------------------------------------|-------------------| | `hans-peter@dr-gold.de` | `archiv-hans-peter@dr-gold.com` | Ex-Mitarbeiter | | `jane-doe@dr-gold.de` | `temp-jane-doe@dr-gold.com` | aktiv, Übergang | Zieladresse ist **frei gemappt** (eine Zeile pro Konto). Nach dem Umzug wird die Domain portiert; für das Tool ist das egal – es arbeitet nur mit dem Mapping, das zum Umzugszeitpunkt gilt. ## Die harten Regeln (nicht verhandelbar) 1. **Umzug = IMAP `APPEND`, niemals SMTP.** Nur `APPEND` erhält Ordner, Flags (gelesen/beantwortet) und `INTERNALDATE`. SMTP würde alles als neu/ungelesen mit falschem Datum zustellen und die Ordner platt machen. 2. **SMTP nur fürs manuelle Weiterleiten** einzelner Mails aus dem Viewer – sauber getrennt vom Umzug (`09-smtp.go`). 3. **Lokales Format = mbox** (eine Datei pro Ordner). Kein PST – in Go nicht lean schreibbar. mbox öffnet eM Client / Thunderbird direkt. 4. **Idempotenz über Message-ID.** Zweiter Lauf kopiert nur das Delta → erlaubt `--watch` als Cutover-Delta-Sync bis zur Portierung. 5. **Secrets bleiben lokal.** `config.json` und die DB (mit den Postfach- Passwörtern) sind ge-`.gitignore`-t. Erst bei Go-Live rotieren + einlagern. 6. **Alt-Provider-tauglich.** Muss mit **unverschlüsseltem** IMAP/POP3 (Klartext 143/110, STARTTLS, kaputte Zerts) klarkommen. Ordnernamen mit **Sonderzeichen** (modified-UTF-7) sauber übertragen. **Standardordner** (Posteingang/Gesendet/ Entwürfe/Spam/Papierkorb/Archiv/Postausgang) werden per Rolle zusammengeführt, nicht wegen Namensunterschied gedoppelt. Details: `backend/11-folders.go`. ## Bedienung - **Web (Default):** `./mail-graveyard` → Browser auf `127.0.0.1:8087`. - **CLI (Cronjob/Cutover):** `./mail-graveyard --run all` (einmalig) oder `./mail-graveyard --run dr-gold --watch` (Delta-Schleife).