Kürzlich spammte ein via Cron alle fünf Minuten laufendes imapfilter-Script meine INBOX mit der folgenden Meldung voll:
imapfilter: IMAP (3): 1014 BAD Could not parse command
Wie debuggen? Gar nicht so kompliziert. Man führt das „Rezept“ einfach manuell auf der Kommandozeile aus.
$ imapfilter -l /tmp/log.txt -d /tmp/debug.txt -c recipe.lua
Anschliessend schaut man sich debug.txt an, sucht nach der Nummer des Befehls (hier: 1014) und schaut einige Zeilen davor an, um den Filterbefehl zu isolieren, der zur Fehlermeldung geführt hat. Das kann einige Zeilen vorher gewesen sein, weil imapfilter im Debug-Modus jede Aktion gegen den Mailserver aufführt. Das Gute: Jeder Befehl wird fortlaufend nummeriert. Beispiel:
1013 OK SEARCH completed (Success) ... sending command (5): 1014 UID COPY ... getting response (5): 1014 OK [COPYUID 100 ... sending command (5): 1015 UID STORE ... getting response (5): 1015 BAD Could not parse command
In meinem Fall schienen alte Emails von Batmaid das Problem auszulösen. Ich passte den Filterbefehl an (indem ich jetzt neu gegen das Subject filtere, anstelle gegen den From-Header), und danach verschob ich die Emails auch noch manuell in den Unterordner.
Seither tritt die Fehlermeldung nicht mehr auf.
Vermutung: Irgendein nicht konformer Header im Email.