Wenn maildrop
-Filter mit der Zeit wachsen und komplexer werden steigt das Risiko, dass sich irgendwo ein Fehler einschleicht. Da die Debugging und Fehlererkennungsmechanismen von maildrop
eher rudimentär ausfallen – besonders bei verteilten Filtern in mehreren Dateien – kann ein solcher Fehler schnell zum Verlust von E-Mails führen.
Probleme mit den Dateirechten
maildrop
ist sehr empfindlich was die Dateirechte der Hauptfilterdatei (~/.mailfilter
) angeht. Sind diese nicht auf 0600
gesetzt, verweigert maildrop jeglichen Dienst. Da ich meine Filter über git
versioniere und git
Dateirechte schlicht aus der umask generiert (Ausnahme ist das +x
-Flag) kam es hier gelegentlich zu Problemen.
Die Lösung ist so einfach wie wirkungsvoll. Über die .qmail
-Datei rufe ich ein Wrapper-Script auf, welches die Übergabe an maildrop
versucht. Sollte ein Fehler auftreten, wird versucht die Rechte zu korrigieren und anschließend ein weiterer Versuch gestartet.
Der Vollständigkeit halber hier auch die entsprechende .qmail
-Datei:
Fehler im Filter
Um bei Fehlern im Filtercode dennoch zumindest eine Zustellung zu ermöglichen, habe ich eine grundlegende Filterkonfiguration in die ~/.mailfilter
gepackt. Daher sollte es an dieser eigentlich keine Änderungen geben, die Fehler verursachen können.
Der simple aber wirkungsvolle Gedanke dahinter – packe alles was irgendwie kritisch werden könnte in einen exception
-Block, der alle möglichen Fehler auffängt. Wird die E-Mail innerhalb dieses Blocks zugestellt, passiert nichts mehr. Kann jedoch nicht zugestellt werden, wird die E-Mail in (fast) jedem Fall ins Standard-Maildir ~/Maildir
zugestellt.