Benutzer-Werkzeuge

Webseiten-Werkzeuge


linux:procmail_emails_filtern

Mail-Filterung

Zur Filterung von E-Mails kann der MDA procmail eingesetzt werden. Dies gibt euch unter anderem die Möglichkeit E-Mails direkt bei eintreffen auf dem Server in verschiedene IMAP-Boxen zu verschieben oder auf andere Mailadressen weiterleiten zu lassen. Neben vorgegeben Aktionen auf eine Bedingung kann procmail Mails auch an Scripte übergeben, womit sich weitere Einsatzgebiete ergeben.

Variablen

Filterregeln für procmail werden im Home-Verzeichnis in der Datei .procmailrc definiert. Dabei sind in den ersten Zeilen der Datei zuerst die Variablen $MAILDIR und $DEFAULT zu setzen.

  MAILDIR=$HOME/Maildir                # Wo befindet sich das Maildir
  DEFAULT=$HOME/Maildir/new            # In welches Postfach werden Mails ohne Filterregel gefiltert. Bei mir ist das ganz normal INBOX

Für Testzwecke ist es auch sinnvoll die Variable $LOGFILE zu setzen, damit man sieht ob gefiltert wird:

  LOGFILE=/pfad/logfile

Im produktiven Betrieb ist es jedoch nicht sinnvoll, da Logfiles die Angewohnheit haben nach einer gewissen Zeit besonders groß zu werden ;)

Bedingung

Anschließend können die Regeln zur Filterung definiert werden. Grundsätzlich wird eine Filterregel mit :0 eingeleitet, anschließend folgt in einer neuen Zeile die Bedingung und in einer weiteren neuen Zeile die Aktion. Eine Bedingung soll anhand folgendem Beispiel aufgeschlüsselt werden:

  * ^TO.*@lists.openmoko.org

Grundsätzlich beginnt eine Bedingung die nicht auf alle Mails zutreffen soll mit einem * gefolgt von ^ oder $ für Zeilenanfang bzw. Ende. Anschließend folgt der Filterbegriff bzw. in diesem Fall eine Variable die Empfänger und CC abdeckt („TO“) mit dem Trennzeichen „.“ und die Adresse. Im ganzen besagt diese Filterregel das alle Mails die an *@lists.openmoko.org (* als Wildcard für ein / gar kein / mehrere Zeichen) versendet wurden in der folgenden Aktion verarbeitet werden sollen.

Wieso nun ^TO? Schaut man sich einen Mailheader an so sieht man verschiedene Adressierungen, Begriffe, etc. nach all diesen kann gefiltert werden. TO in dem Fall für „An:“ wird am Zeilenanfang gesucht in dieser Zeile wiederrum nach einer unbestimmten Anzahl von Zeichen (*-Wildcard) nach lists.openmoko.org gesucht wird. TO filtert zudem CC-Adressierungen.

Hiermit ergeben sich dann auch weitere 'Beispielsuchmuster':

  * ^From.*@lists.openmoko.org     # Absender *@lists.openmoko.org 
  * ^Subject.*Test                 # Es wird nach Test im Betreff gesucht 

Aktion

Kommen wir nun zur Aktion. Im allgemeinen gibt es hier fünf Möglichkeiten. Entweder in eine bestimmte Mailbox verschieben, in eine Textdatei speichern, an eine bestimmte Mailadresse weiterleiten, an ein anderes Programm übergeben oder direkt ein Unterprogramm erstellen.

Um in verschiedene Mailboxen unter IMAP zu sortieren muss folgende Aktion definiert werden:

  .INBOX.mailingliste/new (am Beispiel des MTA Dovecot)

Diese Aktion würde innerhalb meines Maildirs alle Mails von der definierten Mailingliste nach .INBOX.mailingliste/new verschieben. Das Verzeichnis „new“ da Dovecot neu eintreffende Mails dort erwartet.

Die weiteren vier Möglichkeiten im Überblick:

  /pfad/datei          # In eine Textdatei speichern
  ! email@adresse.de   # An Mailadresse weiterleiten
  | /usr/bin/programm  # Mittels | und Programmname können die Mails an ein anderes Programm übergeben werden
  {befehle ...}        # Alle Befehle innerhalb der geschweiften Klammern werden ausgeführt.

Dies sollte nur als kleiner Einblick dienen, wie umfangreich und mächtig procmail ist. Darüber hinaus sind folgende Links sehr hilfreich. Im besonderen die Procmail-FAQ unter http://www.butschek.de/procmail-faq/ .

Deutschsprachig

Englischsprachig

linux/procmail_emails_filtern.txt · Zuletzt geändert: 2014/03/16 19:44 von patrickbeck