Mails bearbeiten mit procmail

Der Meister der Rezepte

Auf den ersten Blick erschrecken viele Anwender vor der scheinbar kryptischen Syntax der Filterregeln, mit denen Procmail Mails bearbeitet und sortiert. Auf den zweiten Blick hingegen zeigt sich das Programm als wahrer Alleskönner.

Mit einer einprägsamen aber vielfältigen Konfigurationssprache, die leicht zu handhaben, und mit der fast alles möglich ist, erweist sich Procmail als mächtiges Werkzeug: Vom simplen Verteilen der Mails auf einzelne Ordner bis zur Weiterleitung der Nachrichten via SMS ist alles möglich.

Schreck lass nach: Das Rezept

Doch wie funktioniert dieses Programm eigentlich? In der Datei /etc/procmailrc definieren Sie die systemweiten Filterregeln für Procmail. Wenn Sie einen Einzelplatz-Rechner benutzen, erstellen Sie jedoch am sinnvollsten in Ihrem Home-Verzeichnis die Datei ~/.procmailrc, denn dort findet Procmail die lokalen Regeln, die es auf die eingetroffene Post anwendet. Diese Regeln heißen in den umfangreichen Manualseiten von Procmail Rezepte (Recipes).

Ein Rezept sagt Procmail beispielsweise, nach welchen Zeichenketten es in den Mails schauen, und welche Aktion ausgeführt werden soll, wenn es dieses Muster erkannt hat. Vielleicht mag das für den Anfang recht abstrakt klingen, und deshalb sehen wir uns so ein Rezept einmal aus der Nähe an:

:0
* ^From:.*@tuxnordpol\.de
tux

Als erstes Zeichen des obigen Rezeptes finden Sie den Doppelpunkt, an dem Procmail erkennt, dass nun ein neues Rezept beginnt. Auf den Doppelpunkt folgt immer eine Null und optional weitere Zeichen, mit denen wir uns im Abschnitt Flags noch beschäftigen werden.

Ein weiterer Doppelpunkt nach der Null bedeutet, dass für das Rezept ein Lockfile benutzt werden soll. Da dies jedoch nur selten im Alltagsgebrauch nötig ist, wird das Thema Lockfile an dieser Stelle nicht angeschnitten. Bei Bedarf erhalten Sie eine ausführliche Hilfestellung in den Manualseiten von Procmail, die Sie in der Konsole einsehen können mit den Befehlen man procmail, man procmailex, man procmailsc und man procmailrc.

Die zweite Zeile wird mit dem Sternchen * eingeleitet und Bedingung (Condition) genannt. Dieses Sternchen hat eine völlig andere Lesart für Procmail als das Zeichen * in .*@tuxnordpol\.de. Dazu finden Sie die Details im weiteren Textverlauf.

An unserem Beispiel-Rezept sehen Sie, dass lediglich eine Bedingung definiert wurde: ^From:.*@tuxnordpol\.de. Sie können jedoch auch mehrere oder gar keine Bedingung festlegen, wenn Sie möchten. Und was bedingt diese Bedingung? Die Antwort lautet: Die Aktion, die Sie hier in der dritten und letzten Zeile sehen.

Die Aktions-Zeile legt fest, was mit der Nachricht, die die Bedingung erfüllt, passieren soll. In unserem Falle wird jede Nachricht, die im From-Header den Absender @tuxnordpol.de trägt, in den Mail-Ordner tux sortiert: sowohl tux@tuxnordpol.de als auch igloo@tuxnordpol.de oder hering@tuxnordpol.de finden dort Eingang.

Die Rezepte der Datei ~/.procmailrc werden von oben nach unten auf ihre Bedingung hin geprüft. Trifft die Bedingung zu, wird die dafür definierte Aktion ausgeführt. Trifft die Bedingung nicht zu, wird die Mail an das nächste Rezept gereicht oder landet im Default-Ordner. Hinweise, wie Sie den Default-Ordner und andere Umgebungsvariablen für Procmail festlegen, finden Sie im Abschnitt Variablen.

Reguläre Ausdrücke

Um es Procmail zu ermöglichen, die Nachrichten genau nach Ihren Wünschen zu ordnen, müssen Sie sich regulärer Ausdrücke bedienen. Wenn Sie sich die Bedingungs-Zeile des Beispiels noch einmal ansehen, dann stoßen Sie auf das Caret ^, den Punkt . und den Asterisk * . Diese Zeichen stehen als Stellvertreter für Buchstaben- und Zahlengruppen oder halten die Lage einer Zeichengruppe in einer Zeile fest. Auch das klingt schwieriger als es ist, wie Sie in Tabelle 1 sehen können.

Tabelle 1: Reguläre Ausdrücke

^ Die folgende Zeichenkette steht am Zeilenanfang
$ Die vorhergehende Zeichenkette steht am Zeilenende
. Ein beliebiges Zeichen
* Das vorhergehende Zeichen mehrmals, einmal oder gar nicht
+ Das vorhergehende Zeichen mindestens einmal oder mehrmals
? Das vorhergehende Zeichen entweder einmal oder gar nicht
[a-k] Jedes Zeichen von a bis k
[^a-k] Jedes Zeichen außer a bis k
de|com Entweder de oder com
(abcd)* Endweder mehrmals, einmal oder gar nicht die Zeichenkette abcd
! Invertiert die Bedingung
\ Das folgende Zeichen wird maskiert. Dass heißt der Backslash hebt die besondere Bedeutung eines Zeichens auf. Der Punkt steht als regulärer Ausdruck für ein beliebiges Zeichen. Ein \. gibt dem regulären Ausdruck wieder seinen ursprünglichen Sinn als Punkt zurück.

Natürlich können Sie die regulären Ausdrücke miteinander verbinden. So bedeutet die Kombination .* ein beliebiges Zeichen mehrmals, einmal oder gar nicht. Wenn Sie sich näher über die regulären Ausdrücke informieren möchten, bietet sich neben den Manualseiten von Procmail ebenfalls man egrep auf der Konsole an.

LinuxCommunity kaufen

Einzelne Ausgabe
 
Abonnements
 
TABLET & SMARTPHONE APPS
Bald erhältlich
Get it on Google Play

Deutschland

Ähnliche Artikel

  • Procmail als Spam-Filter einsetzen
    Bei über 60 Prozent aller E-Mail-Nachrichten handelt es sich um Spam – Tendenz steigend. Seitens der Provider ist nicht mit Hilfe zu rechnen. Dieser Artikel zeigt, wie Sie mit wenigen Handgriffen einen eigenen, leistungsfähigen Spam-Filter aufsetzen.
  • Filterregeln mit procmail
  • SpamAssassin
    Sie bekommen dauernd Post von Ihnen völlig unbekannten Menschen oder Computern? Angebote, die Sie wirklich nicht interessieren? Wenn die Mailbox ständig mit lästigen Werbe-Mails gefüllt wird, hilft SpamAssassin.
  • Sammeldienst
    Nichts ist so gut, dass es nicht noch besser ginge: Der POP3-Client Mpop besticht durch eine schlanke Architektur und einige Features, die ein flottes Arbeiten versprechen.
  • Fetchmail und Getmail im Vergleich
    Als Standardprogramm fürs Abholen von E-Mail auf der Kommandozeile gilt bislang Fetchmail. Mittlerweile tritt das Tool Getmail als Konkurrent an, der das Original in vielen Punkten schlägt.
Kommentare

Infos zur Publikation

LU 09/2016: Ciao, Windows!

Digitale Ausgabe: Preis € 5,99
(inkl. 19% MwSt.)

LinuxUser erscheint monatlich und kostet 5,95 Euro (mit DVD 8,50 Euro). Weitere Infos zum Heft finden Sie auf der Homepage.

Das Jahresabo kostet ab 86,70 Euro. Details dazu finden Sie im Computec-Shop. Im Probeabo erhalten Sie zudem drei Ausgaben zum reduzierten Preis.

Bei Google Play finden Sie digitale Ausgaben für Tablet & Smartphone.

HINWEIS ZU PAYPAL: Die Zahlung ist ohne eigenes Paypal-Konto ganz einfach per Kreditkarte oder Lastschrift möglich!

Aktuelle Fragen

Scannen nicht möglich
Werner Hahn, 19.08.2016 22:33, 3 Antworten
Laptop DELL Latitude E6510 mit Ubuntu 16,04, Canon Pixma MG5450. Das Drucken funktioniert, Scann...
Wie kann man das berichtigen
Udo Muelle, 17.07.2016 20:39, 1 Antworten
Fehlschlag beim Holen von http://extra.linuxmint.com/dists/rosa/main/binary-i386/Packages Hash-S...
Installation Genimotion
Horst Müller, 15.07.2016 17:00, 1 Antworten
Hallo, ich kann Genimotion nicht installieren. Folgende Fehlermeldung habe ich beim Aufruf erh...
Probleme beim Hochfahren der Terastaion 5400 mit Unix-Distrib
Sheldon Cooper, 10.07.2016 09:32, 0 Antworten
Hallo ihr lieben, habe seit zwei Tagen das Problem, das das NAS (Raid5) nicht mehr sauber hoch...
Mit Firewire Videos improtieren?
Werner Hahn, 09.06.2016 11:06, 5 Antworten
Ich besitze den Camcorder Panasonic NV-GS330, bei dem die Videos in guter Qualität nur über den 4...