- Methoden: Delivery.getPop3AccountList / addPop3AccountList /
setPop3Account (vorher geraten als Pop3Accounts.set/.create →
Method not found).
- Pop3Account-Felder mit den richtigen Namen: isActive (statt enabled),
mode (statt sslMode), authentication (statt authType), und
leaveOnServer.removeAfterPeriod als OptionalLong-Wrapper.
Falsche Namen wurden von Kerio still ignoriert → Sammler war inaktiv.
- User-Struct: allowPasswordChange=false (statt mayChangePassword,
das es nicht gibt). emailAddresses weggelassen, Kerio leitet die
primäre Adresse aus loginName+domain ab.
- Kerio-Step in 2 Sub-Steps aufgeteilt: User (skip wenn vorhanden) +
POP3 (upsert). Damit wird bei einem zweiten Lauf der Sammler nicht
übersprungen, nur weil der User schon existiert.
- POP3-Sammler ist jetzt UPSERT: existierende werden via setPop3Account
überschrieben → Selbstreparatur kaputter Einträge + Passwort-
Änderungen aus der CSV ziehen sich von selbst nach.
GUI: 👁/🙈-Toggle pro Passwort-Feld (Klartext temporär einsehbar).
Filenames der Sammel-PDFs + Admin-Report ohne Zeitstempel –
erneuter Lauf überschreibt statt anzuhäufen.
README: Ablauf-Sektion + Idempotenz-Tabelle aktualisiert; Kerio-
Caveat ersetzt durch konkrete Methoden-/Feld-Liste mit Doku-Link.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- Eine Karte pro Account mit zwei Zeilen: Person oben (Vorname/Name/Email
+ Lösch-Button), Service-Felder unten in drei Gruppen (Plesk/Kerio/
Nextcloud) mit blauen Überschriften und vertikalen Trennlinien.
- Karten haben Rand, füllen die volle Fensterbreite und sind mit #1, #2, …
durchnummeriert; Pflichtfeld-Fehlermeldungen referenzieren diese Nummern.
- Passwort-Felder maskiert (•••).
- Fenster startet maximiert: -zoomed (Linux/X11) → state(zoomed) (Windows)
→ Fallback Bildschirmgeometrie.
- Neuer Toolbar-Button "CSV speichern …" exportiert die ausgefüllten
Karten im selben Format wie example.csv (Round-Trip-fähig).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Bug: nextcloudhost mit https://-Präfix in CSV/GUI führte zu Doppel-Schema
(https://https://cloud.foo.de) und damit zu DNS-Fehler "host=https".
- models.clean_host() entfernt http(s):// und Trailing-Slash; Account
ruft das im __post_init__ für plesk-/kerio-/nextcloudhost auf.
- NextcloudClient wickelt requests-Connection-Fehler in NextcloudError
ein, damit die Log-Ausgabe lesbar bleibt statt HTTPSConnectionPool-Stacktrace.
- README: Hostname-Eingabe als tolerant dokumentiert; pleskhost-Pflicht
im manual-Modus klarer (POP3-Sammler braucht es trotzdem).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
- PLESK_BACKEND={manual,api,ssh}: manual als Default für Shared Hosts,
api unverändert, ssh ruft `plesk bin mail` per paramiko auf.
- POP3_PORT default 995, POP3_SSL mit Auto-Erkennung anhand Port.
- Kerio: User wird mit mayChangePassword=False angelegt.
- Zusätzliche Minimal-PDF (nur Email + Cloud) pro Konto + Sammel-Variante,
IMAP-Port konfigurierbar.
- CLI-Flag --pdf-only und entsprechender GUI-Button "📄 Nur PDF".
- GUI: Lösch-Button "✕ löschen" sichtbarer, letzte Zeile löschbar.
- PDFs sind kunden-tauglich (kein Status-Block, kein ACHTUNG-Hinweis);
Anlage-Status separat in _admin_report_<ts>.txt.
- README dokumentiert die Skip-Logik pro Dienst und ihre Caveats.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>