openXchange6: Did not specify legal script data length

Diesen Beitrag schrieb ich 13 Jahre und 2 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 1 Minute

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 groß (> 20KB) und ist mit binärem Kram aufgefüllt. Wie man das verhindern kann weiß 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 heißt 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.