Dienstag, 29. Mai 2007, 12:58 Uhr

Mails serverseitig filtern mit .procmailrc

Auf der Arbeit komme ich in den Genuss eines Unix-Mailservers und eines SSH-Zugangs auf ebendiesen (der mittlerweile etwas veraltete „Big Iron“-Ansatz hat wohl nicht mehr lange Bestand und ich fürchte um meine liebevoll eingepflegten procmail-Filter). Damit sind alle Voraussetzungen erfüllt, um eintreffende E-Mails serverseitig zu filtern.

Der Vorteil gegenüber einer clientseitigen Filterung (mit Apple Mail übrigens ein Kinderspiel) liegt auf der Hand: Greife ich zum Beispiel mit einem Mobiltelefon auf den IMAP-Server zu, liegen weniger Nachrichten in der INBOX, was sich in einer schnelleren Übertragung wiederspiegelt.

Syntax

Ein kleiner Ausschnitt aus meiner .procmailrc:

:0
* ^Subject.*new station eth0.
IMAP/arpwatch-n

:0
* ^From.*arpwatch
IMAP/arpwatch

Der Aufbau ist recht simpel:

  • :0 Der Ursprung dieser Zeichenfolge entzieht sich meiner Kenntnis; die Bedeutung lautet „Es folgt eine Regel“
  • * Signalisiert einen Filter. Nachfolgend werden reguläre Ausdrücke („regular expressions“) angefügt. ^ bedeutet beispielsweise „am Anfang einer Zeile“; das Gegenteil wäre $, was „am Ende einer Zeile“ bedeutet. Ein . (Punkt) ist ein Platzhalter für genau ein Zeichen, ein .* (Punkt mit nachfolgendem Stern) bedeutet „eine beliebig lange Zeichenkette“ usw. usf.
  • IMAP/arpwatch bedeutet den Zielordner; eine grosse Datei im .mbx-Format

Bestimmte E-Mails weiterleiten

Vor einigen Tagen kam der Wunsch auf, bestimmte automatisch generierte Mails an gewisse Leute auf der Arbeit weiterzuleiten. Von Hand wäre das sehr mühsam gewesen, ein Eingriff in den Programmcode (Drupal) stand ebenfalls ausser Diskussion.

Doch wieso in die Ferne schweifen? .procmailrc bringt alles mit, um auch so etwas auf drei Zeilen zu bewerkstelligen:

:0 c
* ^Subject.*Kontodetails f
! user@server.tld
  • :0 cc“ weist procmail an, eine Kopie der Nachricht zu erstellen (damit ich die Nachricht weiterhin in meine INBOX geliefert erhalte)
  • * Signalisiert (immer noch) einen Filter (siehe oben)
  • ! user@server.tld Die Nachricht wird an die Mail-Adresse user@server.tld weitergeleitet

Weiterführendes

5. Mails lokal zustellen

Labels: Linux

Kommentar erfassen