Initial Email-Forwarder scaffold
This commit is contained in:
commit
91e52aecd0
22 changed files with 1007 additions and 0 deletions
47
Projektbeschreibung.md
Normal file
47
Projektbeschreibung.md
Normal file
|
|
@ -0,0 +1,47 @@
|
|||
# Email-Forwarder
|
||||
|
||||
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):** `./emailforwarder` → Browser auf `127.0.0.1:8087`.
|
||||
- **CLI (Cronjob/Cutover):** `./emailforwarder --run all` (einmalig) oder
|
||||
`./emailforwarder --run dr-gold --watch` (Delta-Schleife).
|
||||
Loading…
Add table
Add a link
Reference in a new issue