Open Source im professionellen Einsatz
Linux-Magazin 01/2002

Mail-Filterung mit Procmail

Die Nadel im Heuhaufen

,

Procmail ist eines jener Programme, die man oft erst auf den zweiten Blick lieben lernt. Wer aber erst mal seine Vorzüge erkannt hat, wird es nicht mehr missen wollen.

824

Vom einfachen automatischen Abspeichern von E-Mails in die Standard-Inbox bis hin zum Filtern und Sortieren aller eingehenden Mails nach vorgegebenen Kriterien - Procmails Anwendungsmöglichkeiten sind schier endlos. Dieses Tutorial soll den Einstieg in das Mail-Filtern mit Procmail erleichtern.

Wer eine der verbreiteten Linux-Distributionen verwendet, greift wahrscheinlich bereits auf die Dienste von Procmail zurück, ohne es zu wissen. Üblicherweise startet der Mail Transfer Agent (MTA) - meist Sendmail - Procmail für jede eingehende E-Mail automatisch und verwendet es zur Abspeicherung von E-Mails in die Standardmailbox des jeweiligen Benutzers. Man bezeichnet es daher auch als Local Delivery Agent (LDA). Procmail kann aber noch sehr viel weiter reichende Dienste leisten.

Befindet sich in Ihrem Heimatverzeichnis eine Datei ».procmailrc«, so wird sie von Procmail für jede eingehende E-Mail nach einer Vorschrift durchsucht, anhand derer eine weitere Verarbeitung dieser Mail erfolgen kann. Das ermöglicht eine automatische Filterung eingehender E-Mails.

Vor dem Schritt in die Praxis ist jedoch noch ein Wort der Warnung angebracht: Testen Sie eine neue Procmail-Konfiguration gründlich, bevor Sie sie zur Verarbeitung Ihrer E-Mails einsetzen. Das kann beispielsweise unter Verwendung eines eigens für diesen Test eingerichteten Benutzer-Accounts geschehen. Procmail ist ein sehr mächtiges Werkzeug und erleichtert die Arbeit erheblich. Umgekehrt kann eine fehlerhafte Verarbeitungsvorschrift aber auch leicht alle eingehenden Mails in eine falsche Mailbox abspeichern oder sogar ins Datennirwana schicken.

Procmail und reguläre Ausdrücke

Procmail umschließt die Funktionalität von Egrep, eines Programms, mit dem das Durchsuchen von Texten nach bestimmten Suchbegriffen, den regulären Ausdrücken, möglich ist (siehe Kasten "Reguläre Ausdrücke"). Eine ».procmailrc« besteht im einfachsten Fall aus einer Reihe von Rezepten. Ein Rezept hat formal den folgenden Aufbau (eine eckige Klammer [] signalisiert einen optionalen Teil):

:0 [flags] [ : [locallockfile] ]
[* ein Suchmuster]
[* ein Suchmuster]
...
eine Handlungsanweisung

Ein Rezept beginnt stets mit »:0«. Optional folgen unterschiedliche Flags (siehe Tabelle 1). Es folgt eine beliebige Anzahl von Suchbegriffen, dargestellt durch reguläre Ausdrücke. Jeder neue Suchbegriff wird durch ein Sternchen (*) eingeleitet und muss in einer eigenen Zeile stehen. Das Sternchen signalisiert nur den Beginn eines neuen Suchbegriffs und wird nicht zu ihm gezählt.

Ein Rezept wird durch eine Handlungsanweisung abgeschlossen. Steht in dieser Zeile nur ein einzelner Name, bewirkt die Handlungsanweisung das Abspeichern der E-Mail in einen Mail-Folder mit diesem Namen. Das ist sicherlich die am häufigsten vorkommende Regel von Procmail.

Fehlen in einem Rezept die Suchbegriffe oder existiert nur ein leerer Ausdruck (signalisiert durch ein einzelnes Sternchen in einer eigenen Zeile), wird die Handlungsanweisung in jedem Fall ausgeführt. Sind in einem Rezept mehrere Suchbegriffe enthalten, wird nacheinander nach allen Begriffen in der E-Mail gesucht. Nur wenn alle gefunden wurden, wird die Handlungsanweisung ausgeführt (UND-Verknüpfung).

Werden ein oder mehrere Suchbegriffe nicht gefunden, springt Procmail zum nächsten Rezept in ».procmailrc«. Wurden alle Suchbegriffe eines Rezepts in einer Mail gefunden, bricht die weitere Abarbeitung der ».procmailrc« normalerweise ab. Eine passende ODER-Variante gibt es nicht, man muss sie nach der booleschen Algebra mit Hilfe negierter UND-Terme darstellen.

Neben Rezepten können in einer ».procmailrc« noch Environment- und Steuervariablen sowie Kommentare vorkommen. Ein Kommentar wird durch eine Raute (#) eingeleitet.

Tabelle 1: Flags für Procmail-Regeln

Eine einfache ».procmailrc«

Nachdem wir den theoretischen Aufbau einer ».procmailrc« kennen, lässt sich eine einfache Version dieser Datei erstellen. Stellen Sie zunächst sicher, dass diese Datei nicht bereits in Ihrem Heimatverzeichnis existiert, und fertigen falls erforderlich ein Backup an.

Da es sich um eine reine Ascii-Datei handelt, kann man jeden beliebigen Texteditor benutzen. Eine sehr einfache ».procmailrc« kann so aussehen:

VERBOSE=yes
LOGABSTRACT=all
MAILDIR=$HOME/Mail
PROCMAILDIR=$HOME/.Procmail
LOGFILE=$PROCMAILDIR/log

:0
*
.incoming

Die im Beispiel angegebenen Verzeichnisse »$HOME/Mail« und »$HOME/ .Procmail« müssen vorher bereits existieren; Procmail legt sie nicht selbsttätig an. Befindet sich eine ».procmailrc« mit diesem Inhalt in Ihrem Heimatverzeichnis, werden alle eingehenden E-Mails automatisch in die Datei »$HOME/Mail/ .incoming« abgespeichert.

Die Werte der Variablen »VERBOSE« und »LOGABSTRACT« sorgen dafür, dass bei jeder Abarbeitung der ».procmailrc« ausführliche Informationen über den Verlauf der Abarbeitung in der »$HOME/ .Procmail/log«-Datei (angegeben durch die Variable »LOGFILE«) abgespeichert werden. Wollen Sie die Generierung dieser Informationen unterbinden, setzen Sie »VERBOSE« auf »no« und kommentieren »LOGABSTRACT« aus (mit Hilfe der Raute). MAILDIR gibt das Verzeichnis an, in dem Mails abgespeichert werden sollen.

Alle bisher besprochenen Variablen sind interne Steuervariablen von Procmail. Im Gegensatz dazu ist »PROCMAILDIR« eine von uns definierte freie Variable, die wir der Übersichtlichkeit und einfacheren Wartbarkeit der ».procmailrc« halber verwenden. In unserem Beispiel gibt diese Variable einfach ein Verzeichnis an, das wir zum Sammeln von im Zusammenhang mit Procmail relevanten Dateien verwenden.

Die Handlungsanweisung besteht in unserem einfachen Beispiel also nur aus einem einzelnen Namen. Der wird von Procmail als Name der Mailbox interpretiert, in die Mails abgespeichert werden sollen. Ist die Variable »MAILDIR« wie in unserem Beispiel definiert, ist keine Angabe eines Verzeichnisses für die Abspeicherung der Mail respektive die Erstellung eines Mail-Folders durch Procmail mehr notwendig.

Linux-Magazin kaufen

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

Deutschland

Ähnliche Artikel

  • Procmail
  • Mail Guidance verwaltet Mail-Weiterleitungen

    Mail Guidance, eine Weboberfläche zum Anlegen von Procmail-Regeln, ist in Version 1.0 verfügbar.

  • Keine Wissenslücke

    Wissen ist Macht, nichts wissen macht auch nichts? Auf einem vernetzen Computer ist das sträflich. Angreifer, egal ob Mensch oder Wurm, würden ihn mit Freude entern. Zu einer wirksamen Abwehrstrategie gehören tagesaktuelle Information. Gute Admins nutzen dazu mehrere Quellen.

  • Von Würmern, Mainboards, Tastaturen und PDFs

    In den letzten Wochen hielten uns vor allem zwei Würmer in Atem, die Sicherheitslöcher in Microsoft-Produkten - wo sonst? - ausnutzen, aber auch Remote Clients spielen diesmal eine Rolle.

  • Gezähmtes Monster

    Sendmail gilt zu Unrecht als nicht beherrschbares Ungetüm - dieser Workshop beweist es. Etwas strukturierte Arbeitsweise vorausgesetzt können Sie mit dem Oldie unter den MTAs flexible und wirksame Antispam- und Antivirenlösungen aufbauen.

comments powered by Disqus

Ausgabe 10/2016

Artikelserien und interessante Workshops aus dem Magazin können Sie hier als Bundle erwerben.