Mealie v0.5 auf v3 upgraden: kein direktes Upgrade, dafür drei Fallstricke

Mealie v0.5.x lässt sich nicht direkt auf v3 upgraden — ein Export und Neustart ist der einzig sinnvolle Weg. Dabei warten drei nicht-offensichtliche Fallstricke: falscher Import-Dialog, fehlende OIDC-Rechte und ein nginx-Klassiker.

22.02.2026 · 3 Minuten · 554 Wörter · root_cause

gromox-mt2exm: Das -c Flag verschluckt RPC-Fehler und hinterlässt verwaiste Nachrichten

Bei der Migration von Kopano nach Grommunio mit gromox-mt2exm sorgt das -c Flag dafür, dass RPC-Timeouts stillschweigend ignoriert werden. Das Ergebnis: Tausende Mails landen ohne Ordnerzuordnung in der Datenbank — der Import meldet trotzdem Erfolg.

22.02.2026 · 4 Minuten · 785 Wörter · root_cause

grommunio: ldap.yaml geändert — und trotzdem kein LDAP

Du änderst die LDAP-Konfiguration in grommunio und nichts passiert. Der Grund: grommunio hat zwei LDAP-Config-Dateien mit verschiedenen Zuständigkeiten, und die meisten ändern die falsche.

22.02.2026 · 2 Minuten · 359 Wörter · root_cause

UCS DC-Demote: Member Server zeigen nach dem Demote weiterhin auf den alten DC

Nach einem UCS DC-Demote zeigen alle Member Server weiterhin auf den toten DC. ucr set ldap/server/name hilft nicht — ‘overridden by scope ldap’. Der echte Täter: Das UDM-Objekt des alten DC behält univentionServerRole=master im OpenLDAP, und der Listener-Mechanismus setzt ldap/server/name daraus.

21.02.2026 · 4 Minuten · 718 Wörter · root_cause

pfSense: WireGuard als Default-Gateway – wenn dpinger sich selbst belügt

Alle Clients offline nach WireGuard-Reconnect, aber pfSense meldet ‘online’. Ursache: dpinger pingt bei WireGuard-Gateways ohne Monitor-Target die eigene Interface-IP – und die antwortet immer, auch wenn der Tunnel tot ist.

20.02.2026 · 4 Minuten · 735 Wörter · root_cause

Zammad: Mails nach Import archivieren statt löschen — ohne Elasticsearch

Zammad löscht Mails nach dem IMAP-Import. Wer ein Backup im Postfach behalten will, stößt auf ein nicht-offensichtliches Problem: Die Zammad-API findet Message-IDs ohne Elasticsearch nicht. Die Lösung ist ein Python-Cron-Job mit einem direkten Rails-Query via docker exec.

19.02.2026 · 6 Minuten · 1153 Wörter · root_cause

Zammad SMTP direkt über Proxmox Mail Gateway — kein Auth nötig

Wer PMG im Homelab oder als internes Mail-Relay betreibt, braucht für Zammad keinen externen SMTP-Account. PMG akzeptiert Verbindungen aus dem internen Netz per mynetworks ohne Auth und übernimmt DKIM-Signierung. So stellt du Zammads Outbound-SMTP auf PMG um — inklusive DKIM-Aktivierung per pmgsh.

19.02.2026 · 4 Minuten · 646 Wörter · root_cause

Python: {{ }} außerhalb von f-Strings generiert keinen Escape — ein stiller Code-Bug

Ein Python-Script generiert Ruby-Code mit Blöcken. Manche Strings sind f-Strings, manche nicht. {{ }} sollte zu { } werden — tut es aber nur in f-Strings. In normalen Strings bleiben {{ }} literal. Das erzeugt ungültiges Ruby, Python wirft keinen Fehler, und das Programm schlägt still fehl.

19.02.2026 · 4 Minuten · 671 Wörter · root_cause

PHPMailer SMTP auth schlägt fehl, curl geht — der `!`-Passwort-Trick

PHPMailer kann sich nicht per SMTP authentifizieren, obwohl curl mit denselben Credentials funktioniert. Die überraschende Ursache: Bash-History-Expansion verwandelt ! heimlich in \! — und PHP kennt diesen Trick nicht.

19.02.2026 · 5 Minuten · 981 Wörter · root_cause

JavaScript Smooth-Scroll: Die offsetTop-Falle bei verschachtelten Elementen

Du baust einen eigenen Smooth-Scroll-Handler und er funktioniert perfekt – bis er es nicht tut. Anker-Links auf tief verschachtelte Elemente scrollen nach ganz oben statt zum Ziel. Die Ursache: offsetTop lügt dich an.

19.02.2026 · 4 Minuten · 847 Wörter · root_cause