Dezember 16, 2007 Archives

So 16. Dez 18:30:47 CET 2007

procmail + dovecot

Wer einen eigenen Mailserver betreibt, und für das imap-Protokoll Dovecot einsetzt, bekommt unter Umständen Probleme mit dem Einsatz des Mailfilters Procmail.

Die gestartete imap-Session wird nach Löschung einzelner Nachrichten unterbrochen, und man wird aufgefordert, die entsprechende Mailbox neu zu öffnen. In mutt beispielsweise erscheint die Meldung: �Mailbox is in inconsistent state, please relogin�, und auch der Webmailer Squirrelmail muckt herum. In den Dovecot-logs erscheinen Hinweise wie:

dovecot: 2007-12-16 16:10:18 Error: IMAP(user): Maildir /home/user/Maildir sync: UID inserted in the middle of mailbox (787 > 784, file = msg.cA8oG:2,)

dovecot: 2007-12-16 16:10:18 Info: IMAP(user): Disconnected: Mailbox is in inconsistent state, please relogin

Nachdem ich mich schon fast mit dem regelmäßigen re-login abgefunden hatte, gab's heute endlich die Lösung: in der Datei /etc/procmailrc muss einfach nur stehen:

MAILDIR = $HOME/Maildir
DEFAULT = $MAILDIR/

Nichts also mit dem vollständigen Pfad $MAILDIR/new oder $MAILDIR/cur, wie ich zuerst dachte. Das liegt daran, dass Procmail neue Mails - anders als Dovecot - im Format msg.inode_number ablegt. Markiert man nun eine Nachricht als gelöscht, wird die inode-Nummer frei und daraufhin sofort neu vergeben - was zu doppelten Dateinamen führt, und Mail-User-Agents verwirrt. Gibt man allerdings Procmail die Anweisung, in das oberste Maildir-Verzeichnis zu speichern, wird eine andere Nachrichtenbezeichnung gewählt, und das Problem behoben. :-)


Posted by cpunk | Categories: debian