Ich hatte die letzten 2 Tage ein merkwürdiges Problem: Ich habe ein Maildir-Postfach auf meinem Server, in dem alle durch SpamAssassin als Spam klassifizierten Mails aller anderen Postfächer des Systems abgelegt werden. Das stammt noch aus der Implementierungsphase von SpamAssassin, da ich mir Anfangs nicht sicher war, ob nicht doch einiges an HAM (Kein Spam) fälschlicherweise als SPAM erkannt werden wird.
Da ich nun mehrere Monate nicht mehr da hineingeschaut habe, haben sich ca. 27.000 Spam-Mails in der INBOX befunden. Egal mit welchem IMAP-Client ich versucht habe diese zu löschen, sie haben sich entweder selbst aufgehängt oder die IMAP-Verbindung wurde vom IMAP-Server zurückgesetzt. Probiert habe ich es mit den Clients KMail, Squirrelmail, RoundCube Webmail, Thunderbird (Windows und Linux). Als Ergebnis hatte ich, das manche Clients in der INBOX nach wie vor etwas um 26.000 Mails anzeigten, andere zeigten nur ca. 27 in der INBOX, dafür aber 26.000 im TRASH (Papierkorb). Ich konnte den Papierkorb nicht leeren, da auch hier diese Timeouts auftraten.
Durch diese uneinigkeit der Clients in welchem Verzeichnis welche Anzahl an Mails liegt, habe ich vermutet, das bei einem der Client-Abstürze die IMAP Datenbank des Courier-IMAPd beschädigt wurde. Ich finde es zwar merkwürdig, das dieser so etwas nicht abfangen kann, da ihm ja quasi nur IMAP Befehle von den Clients übergeben werden, jedoch war es so.

Ich konnte dieses Problem lösen, indem ich einfach die IMAP Datenbanken des Courier-IMAPd neu aufgebaut habe. Dieses geht wie folgt:

  1. Stoppen des courier-imapd durch "/etc/init.d/courier-imap stop"
  2. Anwenden von "for db in `find /home/user/.maildir -name courierimapuiddb` ; do mv -fv "\$db" "\$db"_backup ; done".
    Hierdurch werden alle Dateien namens courierimapuiddb unterhalb von /home/user/.maildir in courierimapuiddb_backup umbenannt (Der Pfad zum richtigen Maildir muss natürlich angepasst werden!). Diese Dateien werden von Courier-IMAP automatisch neu angelegt, wenn auf das jeweilige Verzeichnis zugegriffen wird, also keine Sorge.
  3. Starten des courier-imapd durch "/etc/init.d/courier-imap start"

Wenn man nun wieder auf die jeweiligen IMAP Verzeichnisse zugreift, baut der Courier-IMAPd die Datenbanken neu auf und es werden die richtigen Mails des Ordners angezeigt.

Wenn alles gut gegangen ist, kann man die courierimapuiddb_backup - Dateien aus Schritt 2 getrost löschen: "find /home/user/.maildir -name courierimapuiddb_backup -exec rm -fv {} \;"

Ich hoffe das dieser Tipp dem einen oder anderem helfen kann.
Wie immer freue ich mich sehr über Feedback! :)

Teilen per: TwitterEmail


Comments

comments powered by Disqus