47 lines
2.5 KiB
Markdown
47 lines
2.5 KiB
Markdown
# 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).
|