Mail-Graveyard/Projektbeschreibung.md
2026-07-05 22:30:32 +02:00

47 lines
2.5 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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).