13.3. Wie kann ich E-Mails sortieren?

13.3.1

Unter Linux können E-Mails z.B. mit procmail sortiert werden. Andere Programme, die analoge Aufgaben erledigen, sind z. B. sieve, maildrop, Mail::Audit, wobei es auch vom MTA abhängt, wie sinnvoll diese Programme eingesetzt werden können.

procmail ist ein sehr mächtiges Programm, daher aber auch nicht unbedingt leicht zu erlernen. Aber es lohnt sich. Für's erste gibt es Hilfestellungen, die Dir weiter helfen können, um ohne eigenes Wissen Mailinglisten zu sortieren zu. Auf http://procmail.livingit.de/ finden sich für unterschiedliche Mailinglisten Beispielrezepte.

Die Rezepte werden in eine Konfigurationsdatei ~/.procmailrc in Deinem Heimatverzeichnis eingetragen. Eine ganz einfache Regel würde zum Beispiel alle Mails in die Mailbox ~/Mail/inbox verschieben:

:0:
~/Mail/inbox

Als kurze Erläuterung: Der Doppelpunkt am Begin der ersten Zeile markiert den Beginn eines Rezeptes. Es folgt immer die Null. Nach der Null können optionale Flags folgen. Der zweite Doppelpunkt besagt, dass der Locking Mechanismus greifen soll. Die nächste Zeile ist in diesem Fall eine Mailbox, in welche die Mail einsortiert werden soll.

Das generelle Format ist (aus man procmailrc):

:0 [flags] [: [locallockfile]]
<zero or more conditions (one per line)>
<exactly one action line> 

Die in '[]' stehenden Teile sind hier (wie üblich) optional. Auf deutsch: Nach der Zeile mit dem :0 und ggfs. den "flags" (wie z. B. "B" oder "f", siehe man procmailrc) folgen optional Zeilen mit Bedingungen (stets durch ein '* ' begonnen) die "verundet" werden, sowie genau einer "Action" Zeile, in der spezifiziert wird, was zu tun ist, wenn alle Bedingungen erfüllt sind. ("Keine Bedingung" ist immer erfüllt)

Alle zu einer Regel gehörenden Bedingungen werden "verundet", d.h. die zugehörige "Action" wird nur ausgeführt, wenn alle Bedingungen ("conditions") erfüllt wurden.

Eine "Action" kann auch ein Block mit weiteren Regeln sein, so dass sich auch komplexe Regeln meist leicht realisieren lassen.

Die Beispiele in der manpage zu procmail's Konfigurationsdatei (man procmailrc), besonders aber die in man procmailex sind ausführlich genug, so dass ich mir hier weitere Beispiele ersparen kann. Falls man dann doch einmal nicht weiterkommt ("Wald", "Bäume" und so ;-) dann ist eine Frage in der Liste meist in Ordnung und angebracht.

Zum "verodern" von Regeln (wonach gern gefragt wird) sei hier zuerst gesagt, daß man dies meist gut per "|" in der "Extendend Regular Expression" der Bedingung realisieren kann.

Dennoch soll die Variante erwähnt werden, auf die man auch nach ausführlichem Studium der manpages von procmail nicht ohne weiteres kommt: das "ODER durch scoring" (siehe man procmailsc).

:0
* 1^0 ^From.*foo@bar.tld
* 1^0 ^From.*spammer@wespamyou.tld
# ... mehr "oder"-Bedingungen...
### and action:
/dev/null

Der Leser möge bitte obiges anhand von man procmailsc selber zur Übung nachvollziehen.

(andres, dhaller)