sieve Blutdruck

wall < "openXchange6: Did not specify legal script data length"

Broadcast message from spillerm@unixe.de (pts/1) (Di Mrz 17 18:53:55 2009):
4
Diesen Beitrag schrieb ich vor 10 Jahren. Behalte das beim Lesen bitte im Hinterkopf.

Sporadisch tritt das auf der openXchange6-Installation auf: die User wollen im Webfrontend einen neuen Mailfilter einrichten und erhalten die folgende Fehlermeldung:

Error while communicating with the sieve server: Error for user spillerm: "Did not specify legal script data length" (MAIL_FILTER-0015,1476884817-5260)

Wie ich inzwischen herausfinden konnte passiert dies in erster Linie dann, wenn ein User seine Vacation-Nachricht auf »inaktiv« setzt; im sieve-Script bleibt diese dann (auskommentiert) stehen, und das Filter-File wird neu generiert.

Jedoch verhunzt der OX da offenbar etwas; die Script-Datei wird vergleichsweise gross (> 20KB) und ist mit binärem Kram aufgefüllt. Wie man das verhindern kann weiss ich leider aktuell nicht, aber zumindest wie man es behebt:

Im ersten Schritt nachschauen, wo die sieve-Dateien abgelegt werden; definiert wird das über den Eintrag sievedir: in der /etc/imapd.conf, bei mir heisst der Pfad /data/spool/sieve. Gehen wir also davon aus, dass der User spillerm oben genanntes Problem mit seinen Mailfiltern hat, so bewegst du dich nach /data/spool/sieve/s/spillerm. Hier liegen einige Files:

lrwxrwxrwx 1 cyrus mail 2008-11-25 12:28 defaultbc -> Open-Xchange.bc
-rw------- 1 cyrus mail 2009-02-02 11:09 Open-Xchange.bc
-rw------- 1 cyrus mail 2009-02-02 11:09 Open-Xchange.script

Bearbeiten wirst Du hier lediglich die Datei Open-Xchange.script! defaultbc ist ein Symlink auf Open-Xchange.bc, und Open-Xchange.bc wiederum wird aus Open-Xchange.script generiert. Als User cyrus bearbeitest Du nun also die Datei Open-Xchange.script und löschst die fehlerhaften Einträge — in meinem Fall musste ich die auskommentierte Vacation-Nachricht komplett löschen.

Arbeite ggf. sinnvollerweise auf einer Kopie der Datei für den Fall, dass Dir ein Fehler unterläuft; nachdem Du sie gespeichert hast, musst Du sie nach Open-Xchange.bc übersetzen, das passiert mit dem Befehl sievec; auf meinem Debian-System findet sich dieses Kommando in /usr/lib/cyrus/bin, so dass der vollständige Aufruf aussieht wie folgt:

$ /usr/lib/cyrus/bin/sievec \
  /data/spool/sieve/s/spillerm/Open-Xchange.script \
  /data/spool/sieve/s/spillerm/Open-Xchange.bc

Und das war’s dann auch schon — der betreffende User sollte sich unbedingt im Webinterface ab- und erneut anmelden, ehe er seine Filter erneut bearbeitet.

4