[[Uebersicht|← Zurück zur Homepage]] # PaperSafe – E-Mail-Postfächer (laufender Abruf, Teil B) > **Rolle dieser Note:** Der **laufende Abruf aus aktiven Postfächern** per IMAP. Ausgegliedert aus [[09-E-Mail-Import]] (dort steht Teil A – der einmalige Import alter PST-Archive), weil beide Vorhaben unterschiedliche Technik und einen eigenen Umfang haben. > > **Stand 21.07.2026:** Konzept steht, **zwei konkrete Postfächer** entschieden (Proton + Outlook, siehe unten). **Noch nicht eingerichtet** – nächster Schritt ist die Proton-Bridge im eigenen LXC. ## Grundentscheidungen (21.07.2026) | Entscheidung | Wahl | |---|---| | **Was wird eingelesen** | **Stufe 3** – Mail als `.eml` *und* Anhänge als eigene Dokumente | | **Auswahl der Mails** | Der Nutzer **verschiebt zu archivierende Mails selbst in spezielle Ordner**. Diese Ordner sind die Importquelle | | **Tag je Ordner** | Ordnername wird zum Tag – über **eine Regel je Ordner** (kein Automatismus, siehe unten) | | **Korrespondent** | **automatisch aus der Absenderadresse** | ## Die zwei Postfächer (entschieden 21.07.2026) | | Postfach 1 – Proton | Postfach 2 – Outlook | |---|---|---| | Kontotyp | Proton Mail, **kostenpflichtiger Plan** | **persönliches** Microsoft-Konto (outlook.com) | | Anbindung | **Proton Bridge** (lokaler IMAP-Proxy) | ~~direkt IMAP~~ **IMAP tot** → Export in Ablegeordner + Cron (siehe Korrektur unten) | | Auth | Bridge-Passwort (von der Bridge erzeugt) | kein Live-Zugriff | | Ablageordner | **mehrere** → je Ordner eine Regel | `Ablage` → Export als `.eml` | | OAuth nötig? | nein (Bridge liefert IMAP) | entfällt (kein Live-IMAP) | > ### ⚠ Korrektur 22.07.2026: Outlook-IMAP funktioniert nicht > > Die obige Annahme („persönliches Konto erlaubt App-Passwort-IMAP") ist **überholt**. Am System getestet (`imaplib` gegen `outlook.office365.com` und `imap-mail.outlook.com`): **`AUTHENTICATE failed`**, auch nach Einschalten des IMAP-Schalters und mit aktiver 2FA. Der Nutzer hat es zusätzlich mit **Thunderbird** geprüft (das OAuth2 nativ kann) – **ebenfalls kein IMAP**. > > **Schlussfolgerung:** IMAP ist für dieses Konto bei Microsoft schlicht **abgeschaltet/blockiert**. Wichtig: Der Paperless-Kontotyp „Outlook OAuth" spricht **trotzdem IMAP** (nur mit Token statt Passwort) – er würde also **auch scheitern**. Eine Azure-App-Registrierung wäre vergeblich. **Live-IMAP ist für dieses Konto vom Tisch.** > > **Gewählter Weg (Nutzer, 22.07.2026): Export in einen Ablegeordner.** Der Nutzer exportiert die Mails aus „Ablage" als `.eml` in einen **eigenen Ablegeordner** auf der Freigabe (nicht direkt Consume – sonst kommen Anhänge nur als Namensliste). Ein **Cron-Job** ruft dort `pst-aufbereiten.py` auf → Stufe 3 bleibt erhalten (Mail + Anhänge getrennt) → Paperless importiert automatisch. Der Export selbst kann manuell erfolgen oder über **Power Automate** (Graph-basiert, umgeht IMAP) weitgehend automatisiert werden. **Noch nicht eingerichtet.** ### Architektur Proton Bridge ``` Proton-Server ──(HTTPS, Login+2FA)──► Proton Bridge [eigener neuer LXC] │ lokaler IMAP 127.0.0.1:1143 (STARTTLS, self-signed) ▼ Erreichbarkeit über LXC-Grenze ⚠ zu lösen ▼ Paperless (CT 110) ── Mail-Konto ──► Regeln je Ordner ``` **Entscheidung: eigener kleiner LXC** nur für die Bridge – getrennt von Paperless und Host. ### Umsetzungsweg gewählt (22.07.2026): Community-Script Statt Handaufbau nutzen wir das fertige **Proxmox-VE-Helper-Script „Proton Mail Bridge"** ([community-scripts.org](https://community-scripts.org/scripts/protonmail-bridge)). Es legt genau den gewünschten eigenen LXC an und nimmt uns `pass`/GPG, Dienst-Setup und den Forwarder ab: | Aspekt | Was das Script macht | |---|---| | **LXC-Default** | Debian **13**, **2 Kerne / 1024 MB RAM / 8 GB Disk** | | **Bridge** | headless als Dienst | | **LAN-Erreichbarkeit** | über `systemd-socket-proxyd`: **IMAP 143 → 127.0.0.1:1143**, SMTP 587 → 127.0.0.1:1025 — d. h. die Bridge ist **von CT 110 aus über die LXC-IP:143 erreichbar** | | **Erstanmeldung** | `protonmailbridge-configure` im Container (CLI-Login inkl. 2FA); Bridge erzeugt das IMAP-Passwort | **Damit ist offener Punkt 1 (Erreichbarkeit über die LXC-Grenze) gelöst** – der Socket-Proxy ersetzt den zuvor geplanten `socat`-Forwarder. Offen bleibt nur das selbstsignierte Zertifikat (Punkt 2). > **⚠ RAM-Timing:** Der Proxmox-Host swappt bereits im Normalbetrieb (16 GB, siehe [[07 Hardware-Ersatzplanung]]). Ein weiterer LXC mit 1 GB verschärft genau diesen Engpass. **Empfehlung: Ausrollen an den Hardwaretausch koppeln** – oder bewusst knapp früher, falls die Proton-Archivierung dringend ist. ### Warum eigener LXC – drei Varianten abgewogen (21.07.2026) Auf die Frage, ob die Bridge nicht einfacher direkt in CT 110 läge, wurden drei Varianten geprüft. **Der Kernpunkt:** Paperless läuft in **Docker** innerhalb CT 110 – „localhost" des Containers ist durch Docker-Netzisolation *nicht* das localhost des Paperless-Containers. „Lokal installiert" bringt deshalb keine automatische Erreichbarkeit. | Variante | Erreichbarkeit | Isolation | Urteil | |---|---|---|---| | **A – eigener LXC** | Bridge auf localhost + `socat` auf die LAN-IP | am saubersten | **gewählt** | | B – nativ in CT 110 | Bridge auf localhost + `socat` zur Docker-Gateway | mischt zwei Dienste | verworfen – Forwarder trotzdem nötig, ohne Isolationsgewinn | | C – Sidecar im Compose | über Docker-Servicename, **kein Forwarder** | Fremd-Image im Archiv-Stack | verworfen – Proton-Sitzung läge im Paperless-Backup, gemeinsamer Lebenszyklus, Fremd-Image zu pinnen | **Begründung für A:** Die Bridge bleibt unabhängig sicher- und wartbar; die Proton-Sitzung wandert **nicht** in den 3×/2× gesicherten Paperless-Stack; kein Fremd-Image im Archiv-Container. Preis ist der `socat`-Forwarder und ein Container mehr – bewusst akzeptiert. **Headless-Voraussetzung (offiziell bestätigt):** Die Bridge braucht einen Secret-Store – auf einem Server ohne Desktop über **`pass` + GPG**. Sie läuft dann als Dienst (`protonmail-bridge --noninteractive`), die Erstanmeldung mit 2FA erfolgt einmalig interaktiv. > ### ⚠ Offene technische Punkte (vor der Umsetzung zu klären) > > 1. ~~**Erreichbarkeit über die LXC-Grenze.**~~ **Gelöst durch das Community-Script** (`systemd-socket-proxyd` macht IMAP auf `LXC-IP:143` verfügbar). Kein eigener `socat`-Forwarder mehr nötig. > 2. **Selbstsigniertes Zertifikat.** Das Bridge-IMAP nutzt ein self-signed Cert. Das Paperless-Mailkonto muss es akzeptieren (Zertifikat importieren oder Prüfung entsprechend einstellen). **Bleibt offen – erfahrungsgemäß der fummeligste Teil, am System zu testen.** ## Der Mechanismus Anders als beim Dateiimport (Datei erscheint in der Freigabe) verbindet sich Paperless per **IMAP direkt mit dem Postfach** – standardmäßig alle 10 Minuten (`PAPERLESS_EMAIL_TASK_CRON`). Aufbau: erst **Konten** (`Einstellungen → E-Mail`), darunter je Konto beliebig viele **Regeln**. Ablauf je Durchlauf: verbinden → passende Mails holen (nach Ordner, Höchstalter, Filtern) → Mail und Anhänge einlesen, Metadaten aus der Regel anwenden → **erst dann** die Regel-Aktion auf die Mail anwenden. ## Der Ordner-Workflow – so setzen wir ihn um Der Nutzer sortiert zu archivierende Mails bereits in eigene Ordner. Das ist die ideale Vorlage: **je Ordner eine Regel.** ``` Postfach ├─ Archiv/Versicherungen → Regel 1: Ordner=Versicherungen, Tag=Versicherungen ├─ Archiv/Steuer → Regel 2: Ordner=Steuer, Tag=Steuer └─ Archiv/Handwerker → Regel 3: Ordner=Handwerker, Tag=Handwerker ``` ### ⚠ Wichtig: kein automatischer Ordner→Tag Am laufenden System geprüft (`MailRule`-Modell, v2.20.15): Die Mail-Regel kennt **`folder`** (genau **ein** Ordner, **keine** Rekursion in Unterordner) und **`assign_tags`** (fest gesetzte Tags). Ein Automatik-Feld „Ordnername als Tag" wie `SUBDIRS_AS_TAGS` beim Consume-Ordner **existiert nicht**. **Folge:** Für jeden Archiv-Ordner wird eine eigene Regel angelegt, deren Tag von Hand auf den Ordnernamen gesetzt wird. Einmalige Einrichtung, danach läuft es automatisch. Bei verschachtelten Ordnern muss **jeder Blatt-Ordner** seine eigene Regel bekommen (keine Rekursion). ## Was Stufe 3 liefert Verifizierte Stufen (`consumption_scope`): | Stufe | Wirkung | |---|---| | 1 | Nur Anhänge | | 2 | Nur die Mail als `.eml` | | **3 (gewählt)** | **Mail als `.eml` + Anhänge als eigene Dokumente** | Damit entsteht dieselbe Trennung wie beim PST-Import: die Mail als Verlauf, der Anhang als eigenes Beleg-Dokument. Ein passendes Tag-Paar (`Verlauf`/`Beleg`) kann je Regel mitgesetzt werden. ## Der Gewinn: Korrespondent automatisch Beim PST-Import hatten 222 von 244 Mails **keinen** Korrespondenten. Bei IMAP leitet Paperless ihn **aus der Absenderadresse** ab (`assign_correspondent_from`): | Option | Wirkung | |---|---| | Adresse verwenden | Korrespondent = `[email protected]` | | Name verwenden | Korrespondent = Anzeigename, sonst Adresse | **Jede Mail ist damit von Anfang an einem Absender zugeordnet** – ohne eine einzige absenderspezifische Regel. Das ist die sauberste Zuordnung im ganzen System. ## Die Mail-Aktion – was nach dem Einlesen mit der Mail passiert Verifizierte Optionen (`MailAction`). Jede verhindert, dass dieselbe Mail zweimal eingelesen wird: | Aktion | Wirkung | Bewertung im Ordner-Workflow | |---|---|---| | **Als gelesen markieren** | gelesene werden übersprungen | Einfach. Haken: Hast du die Mail im Archiv-Ordner schon gelesen, wird sie **nie** eingelesen | | **In Ordner verschieben** | Mail wandert in einen „erledigt"-Unterordner | **Sauberste Wahl hier** – der Archiv-Ordner enthält nur noch Unverarbeitetes | | Markieren (Flag) | markierte werden übersprungen | unauffällig, missbraucht das Flag | | Schlagwort setzen | IMAP-Keyword | **nicht jeder Server unterstützt das** | | Löschen | Mail sofort weg | **nicht empfohlen** – scheitert die Verarbeitung, ist die Mail weg *und* das Dokument fehlt | > **Empfehlung:** „In Ordner verschieben" (z. B. `Versicherungen/erledigt`), weil du die Mails ohnehin selbst einsortierst und beim Lesen nicht aufpassen musst. **Zu entscheiden.** > **Warnung aus der Doku:** Die Aktion wird auf **alle** Mails angewendet, aus denen eingelesen wurde. Scheitert die Verarbeitung danach, kann ein Dokument fehlen, während die Mail bereits als erledigt gilt. ## Privat/Obeco – muss je Regel gesetzt werden Beim Dateiimport kam die Vertraulichkeit aus dem Ordnernamen. **Bei Mail gibt es diesen Automatismus nicht.** Zwei saubere Wege: - **Trennt sich nach Postfach** (ein geschäftliches, ein privates Konto): Speicherpfad je Konto/Regel fest zuweisen – Konto → `Obeco` bzw. `Privat`. - **Gemischtes Postfach:** je Ordner-Regel entscheiden, welcher Speicherpfad gilt. Ohne bewusste Zuweisung kommen Mail-Dokumente **ohne** Kennzeichnung herein. ## Sicherheit **App-Passwörter kommen nicht ins Vault** (Projektregel 6). Gmail und die meisten Anbieter verlangen ein App-Passwort – das normale Kontopasswort funktioniert bei IMAP nicht. Übermittlung separat; in dieser Note steht nur „generiert, separat übermittelt". ## Vorgehen in Schritten | Schritt | Inhalt | Prüfbar an | |---|---|---| | **B-0** | Postfächer benennen: Adressen, Anbieter, App-Passwörter beschaffen | Zugangsdaten liegen vor | | **B-1** | **Ein** Konto anlegen, Verbindung testen | Konto verbindet sich, Ordner werden gelistet | | **B-2** | **Eine** Regel für **einen** Archiv-Ordner, Stufe 3, Tag = Ordnername | Erstes Dokument kommt korrekt an | | **B-3** | Prüfen: Mail *und* Anhang da? Tag? Korrespondent? Speicherpfad? | Ergebnis stimmt | | **B-4** | Weitere Ordner-Regeln nach demselben Muster | je Regel geprüft | | **B-5** | Mail-Aktion final festlegen (Ordner „erledigt" o. Ä.) | keine Mail wird zweimal verarbeitet | | **B-6** | Weitere Postfächer nach demselben Muster | alle Konten aktiv | **Ein Konto, eine Regel, ein Testlauf** – erst danach ausrollen. Anders als beim Dateiimport wirkt hier jede Aktion aufs Postfach zurück. ## Gut zu wissen 1. **Verarbeitete Mails** merkt sich Paperless über die Message-UID (*Mail → Verarbeitete Mails*). Soll eine Mail neu verarbeitet werden, dort den Eintrag löschen. 2. **Ordnertrennzeichen** variieren je Server (`.`, `/`, `|`). Bei Fehlern listet Paperless die gefundenen Ordner ins Log – daran den korrekten Ordnernamen ablesen. 3. **Live-Mails sind wohlgeformt.** Die Kopfzeilen-Reparatur aus dem PST-Import (Teil A) entfällt hier – das Problem betraf nur alte, exportierte Archive. ## Offene Punkte **Postfächer** – entschieden: Proton (Bridge) + Outlook persönlich (App-Passwort). - [ ] **Proton-Bridge-LXC** per Community-Script anlegen (neue Komponente – Provisionierung freigeben), Erstanmeldung `protonmailbridge-configure` mit 2FA — **möglichst nach dem RAM-Upgrade** (Host swappt bereits) - [ ] **Selbstsigniertes Zertifikat** der Bridge in Paperless akzeptieren (Erreichbarkeit selbst ist durch das Script gelöst) - [ ] **Outlook-App-Passwort** erstellen (2FA aktiv?) und separat übermitteln - [ ] **Liste der Proton-Ablageordner** – je Ordner eine Regel mit passendem Tag - [ ] **Name des Outlook-Ablageordners** – eine Regel - [ ] **Mail-Aktion final:** „in Ordner verschieben" (empfohlen) oder „als gelesen"? (B-5) - [ ] **Privat/Obeco:** ordnet sich das je Postfach zu (z. B. Proton = Privat, Outlook = Obeco) oder je Ordner? - [ ] **Eigenes Kennzeichen** für Mail-Dokumente (Tag `aus E-Mail`), um sie von Datei-Importen zu unterscheiden? ## Quellen - Paperless-ngx – `docs/usage.md`, Tag `v2.20.15`, Abschnitt *Incoming Email*: Konten und Regeln, Reihenfolge, Aktionen und ihre Wirkung, verarbeitete Mails, Ordnertrennzeichen, Prüfintervall `PAPERLESS_EMAIL_TASK_CRON` – Zugriff 19.07.2026 - Eigene Prüfung am laufenden System CT 110 (v2.20.15), Modell `paperless_mail.models.MailRule`: `consumption_scope` (1 nur Anhänge / 2 Mail als `.eml` / 3 Mail + Anhänge getrennt), `action` (löschen/verschieben/gelesen/flag/tag), `assign_correspondent_from` (Adresse/Name), **`folder` = genau ein Ordner ohne Rekursion**, **`assign_tags` fest**, kein Automatik-Feld für Ordnername-als-Tag – 21.07.2026 - Eigene Prüfung `paperless_mail.models.MailAccount` (v2.20.15): Felder `imap_security` (keine/SSL/STARTTLS), `username`/`password`, **`is_token`/`refresh_token`/`expiration`** (OAuth vorhanden), `PAPERLESS_OAUTH_CALLBACK_BASE_URL` aktuell **nicht** gesetzt – 21.07.2026 - Proton – *Bridge for Linux*, `proton.me/support/bridge-for-linux`: **Bridge nur mit kostenpflichtigem Plan**, benötigt einen **Secret-Service-Passwortmanager (GNOME Keyring oder `pass`)** – Zugriff 21.07.2026 - Proxmox VE Helper-Scripts – *Proton Mail Bridge*, `community-scripts.org/scripts/protonmail-bridge` (Mirror `proxmox-scripts.com/posts/protonmail-bridge`): LXC-Default **Debian 13, 2 Kerne / 1024 MB / 8 GB**, headless-Bridge mit `systemd-socket-proxyd` (**IMAP 143 → 127.0.0.1:1143**, SMTP 587 → 127.0.0.1:1025), Erstsetup `protonmailbridge-configure` – Zugriff 22.07.2026 --- **Status:** **Konzept** – Proton via Bridge im eigenen LXC (Umsetzungsweg: Community-Script), Outlook persönlich via Export+Cron; noch nicht eingerichtet **Version:** 1.4 **Letzte Aktualisierung:** 22.07.2026, 15:45 Uhr ### Änderungshistorie | Version | Datum | Uhrzeit | Änderung | |---|---|---|---| | 1.0 | 21.07.2026 | 09:15 | Erstfassung – Teil B aus [[09-E-Mail-Import]] ausgegliedert (Note 09 war groß genug). Grundentscheidungen des Nutzers aufgenommen: **Stufe 3** (Mail + Anhänge), **Ordner-Workflow** (der Nutzer verschiebt Mails selbst in Archiv-Ordner), **eine Regel je Ordner** mit Tag = Ordnername. Am laufenden System verifiziert, dass es **keinen** automatischen Ordner→Tag gibt und `folder` nicht rekursiv ist. Korrespondent-Automatik aus der Absenderadresse dokumentiert | | 1.1 | 21.07.2026 | 09:30 | **Zwei konkrete Postfächer entschieden.** Proton (kostenpflichtig) über **Proton Bridge in eigenem LXC**; Outlook **persönlich** über direktes IMAP mit App-Passwort (kein OAuth). Architektur, Ausstattungsvorschlag und Headless-Voraussetzung (`pass`+GPG) dokumentiert. **Zwei offene technische Punkte** festgehalten: Bridge-Erreichbarkeit über die LXC-Grenze (voraussichtlich `socat`) und das selbstsignierte Bridge-Zertifikat. Offene Punkte und Quellen (MailAccount-Felder, Proton-Bridge-Seite) ergänzt | | 1.2 | 21.07.2026 | 09:40 | **Bridge-Architektur begründet festgelegt.** Auf Nachfrage drei Varianten abgewogen (eigener LXC / nativ in CT 110 / Sidecar im Compose). Kernpunkt dokumentiert: Paperless läuft in Docker, daher bringt „lokal in CT 110" keine automatische Erreichbarkeit. **Variante A (eigener LXC) gewählt**, B und C mit Begründung verworfen | | 1.4 | 22.07.2026 | 15:45 | **Umsetzungsweg für die Proton-Bridge festgelegt:** Proxmox-VE-Helper-Script „Proton Mail Bridge". Legt den eigenen LXC an (Debian 13, 2 Kerne/1 GB/8 GB) und macht IMAP per `systemd-socket-proxyd` auf `LXC-IP:143` im LAN verfügbar → **offener Punkt 1 (Erreichbarkeit/`socat`) damit gelöst**. Selbstsigniertes Zertifikat bleibt offen. RAM-Timing-Warnung ergänzt (Host swappt, Ausrollen an Hardwaretausch koppeln). Checkliste und Quelle aktualisiert | | 1.3 | 22.07.2026 | 09:15 | **Outlook-IMAP funktioniert nicht** – am System getestet (`AUTHENTICATE failed` trotz IMAP-Schalter und 2FA), vom Nutzer per Thunderbird bestätigt. IMAP ist für das Konto abgeschaltet; da Paperless-„Outlook OAuth" ebenfalls IMAP spricht, wäre OAuth vergeblich. **Gewählter Weg:** Export der Mails als `.eml` in einen Ablegeordner + Cron mit `pst-aufbereiten.py` (Stufe 3 bleibt), optional per Power Automate automatisiert. Tabelle und Korrekturhinweis ergänzt | --- [[Impressum|Impressum]] | [[Datenschutzerklärung|Datenschutz]]