Initial Email-Forwarder scaffold
This commit is contained in:
commit
91e52aecd0
22 changed files with 1007 additions and 0 deletions
34
Codex-Prompt-Durchstich.md
Normal file
34
Codex-Prompt-Durchstich.md
Normal file
|
|
@ -0,0 +1,34 @@
|
|||
# Codex-Prompt — Durchstich
|
||||
|
||||
Kopiervorlage für Codex. Erst `Codex-Briefing.md` + `Projektbeschreibung.md`
|
||||
lesen, dann NUR den Durchstich bauen (nicht mehr).
|
||||
|
||||
---
|
||||
|
||||
Baue den **Durchstich** des Email-Forwarder (Go-Single-Binary, Hausstil steht als
|
||||
Stub-Gerüst). Ziel: **ein Konto, nur den Posteingang, sauber und wiederholbar
|
||||
umziehen.** Lies zuerst `Codex-Briefing.md` und `Projektbeschreibung.md`; die 6
|
||||
harten Regeln sind bindend.
|
||||
|
||||
Umfang des Durchstichs:
|
||||
|
||||
1. `02-database.go`: SQLite-Schema anlegen (accounts, folder_map, copied, jobs),
|
||||
plus `GetAccount`, `ListAccounts`, `SaveAccount`, `AlreadyCopied`, `MarkCopied`.
|
||||
2. `04-imap-source.go`: `OpenIMAPSource` für IMAP mit allen drei Security-Modi
|
||||
(`tls`/`starttls`/`none`) und `SrcInsecure`. `Folders()` (mit SPECIAL-USE +
|
||||
Delim) und `Fetch("INBOX")` (`UID FETCH BODY[] FLAGS INTERNALDATE`, streamend).
|
||||
3. `05-imap-target.go`: `OpenIMAPTarget` (gleiche Security-Logik), `Folders()`,
|
||||
`Delim()`, `EnsureFolder`, `Append` mit Flags + INTERNALDATE.
|
||||
4. `06-mbox.go`: `MboxWriter` + `Append` (korrektes "From "-Trennen, >From-Quoting).
|
||||
5. `07-migrate.go`: `migrateAccount` für nur "INBOX": pro Mail Message-ID gegen
|
||||
`copied` prüfen; sonst `Append` (IMAP) **und** mbox schreiben, dann `MarkCopied`.
|
||||
`RunMigration(name, false)` ruft es für ein Konto auf.
|
||||
6. `main.go --run <konto>` muss durchlaufen.
|
||||
|
||||
Bewusst NOCH NICHT: Web-CRUD, Viewer, Weiterleiten, alle Ordner rekursiv,
|
||||
Rollen-Mapping (11-folders.go), `--watch`, POP3. Nur INBOX, nur CLI.
|
||||
|
||||
**Abnahme:** Konto per SQL/Seed eintragen (Klartext-IMAP-Quelle testen!),
|
||||
`./emailforwarder --run test` zweimal laufen lassen → beim zweiten Mal werden
|
||||
0 Mails kopiert (Idempotenz), Ziel-INBOX und lokale mbox enthalten dieselben
|
||||
Mails mit erhaltenen Flags und Original-Datum.
|
||||
Loading…
Add table
Add a link
Reference in a new issue