Procmail

Procmail ist ein Mail Delivery Agent (MDA), der zur serverseitigen Filterung von E-Mail-Nachrichten verwendet wird.

Procmail
Basisdaten
Entwickler Procmail Foundation
Erscheinungsjahr 7. Dezember 1990
Aktuelle Version 3.24
(2. März 2022)
Betriebssystem Linux, Unix
Programmiersprache C
Kategorie Mailfilter
Lizenz GPL und AL
deutschsprachig nein
www.procmail.org

Ursprünglich entwickelt von Stephen R. van den Berg[1], dann weiterentwickelt von Philip Guenther um die Jahrtausendwende, wurde Anfang der 2000er Jahre die Weiterentwicklung eingestellt. 2014 rief der vormalige Entwickler dazu auf, die Paketierung einzustellen.[2] Seit etwa 2015 funktioniert auch die Webseite des Projektes nicht mehr.[3] Über die Zeit wurden auch eine Sicherheitslücke entdeckt[4], die wohl aber mittlerweile behoben seien sollen, nachdem 2020 der ursprüngliche Entwickler die Arbeit wieder aufnahm und nochmals zwei neue Versionen mit Fehlerbehebungen veröffentlichte. Ob grundsätzlichen Probleme des Quellcodes behoben werden, ist unklar.[5][3]

Für gewöhnlich wird Procmail von einem Mail Transfer Agent (MTA) wie zum Beispiel Sendmail oder Postfix aufgerufen. Durch Procmail kann dann eine Vorsortierung eingehender E-Mail-Nachrichten in Ordner realisiert werden. Dabei können E-Mails anhand diverser Eigenschaften gefiltert werden, wie zum Beispiel:

Zu diesem Zweck bedient sich Procmail unter anderem regulärer Ausdrücke. Procmail verfügt des Weiteren über die Fähigkeit, externe Programme aufzurufen oder aber automatisiert auf E-Mails zu antworten; so lassen sich beliebte Features wie E-Mail-Weiterleitungen, Autoresponder oder Urlaubsschaltungen implementieren.

Um E-Mails in bereits bestehende Mailboxen zu filtern, liefert Procmail das Hilfsprogramm formail mit.

Beispiel

Das folgende Beispiel einer Procmail-Steuerdatei (meist .procmailrc) scannt eingehende Mails mit SpamAssassin und filtert sie anschließend.

SHELL=/bin/bash
MAILDIR=$HOME/mail
DEFAULT=$MAILDIR/inbox
LOCKFILE=$HOME/.lockmail

:0fw
| /usr/bin/spamassassin

:0H
* ^X-Spam-Level: \*\*\*\*\*\*\*\*\*\*
/dev/null

:0H:
* ^X-Spam-Status: Yes
./Spam

# Anything that has not been delivered by now will go to $DEFAULT
# using LOCKFILE=$DEFAULT$LOCKEXT

:0 leitet eine Filterregel ein. Das angefügte fw der ersten Regel sorgt dafür, dass Procmail wartet, bis das Programm fertig ist. Das angefügte H der beiden folgenden Regeln sorgt dafür, dass nur die Header der E-Mail durchsucht werden. Ein abschließender Doppelpunkt weist Procmail an, File-Locking zu verwenden. Das ist immer dann notwendig, wenn nicht sichergestellt ist, dass die Regel mehrfach parallel ausgeführt werden kann. Zum Beispiel wenn eine Mail in eine bestimmte mbox-Datei einsortiert werden soll, bei der durch gleichzeitige Zugriffe ein Datenverlust entstehen würde.

Zur Erklärung: Zuerst wird die E-Mail mittels einer Pipe an das Programm spamassassin gesendet und gewartet, bis das Programm fertig ist. Die nun gescannte Mail durchläuft die nächsten Filterregeln. SpamAssassin fügt gesichteten E-Mails den Header X-Spam-Status hinzu, der je nach eingestellter Schwelle Yes (für erkannten Spam) oder No (für nicht als Spam erkannte Nachrichten) lautet. Des Weiteren fügt SpamAssassin einen Header hinzu, der aus *-Zeichen besteht. Die Anzahl der Zeichen steht dabei für den abgerundeten Score (d. h. Wahrscheinlichkeit, dass die Nachricht Spam ist) der E-Mail. Der Score, nach dem eine Nachricht als Spam bewertet wird, liegt standardmäßig bei 5.

Das Beispiel filtert nach der Anzahl der Zeichen. Findet Procmail zehn oder mehr *-Zeichen, so wird die E-Mail im Nulldevice abgespeichert und somit verworfen. Wird eine Nachricht generell als Spam erkannt, so wird die Nachricht im Verzeichnis Spam abgespeichert. Alle anderen E-Mails werden in der normalen Inbox abgeliefert.

Literatur

  • The Procmail Companion, Martin McCarthy, Addison-Wesley, S. 256, November 2001, ISBN 0-201-73790-6
  • Procmail, Chris Lindsey, S. 325, April 2001, ISBN 1-56592-540-8
  • Procmail QuickStart
  • Procmail Mini FAQ
  • Deutsche Procmail FAQ
  • GitHub - BuGlessRB/procmail: The mail sorting program. (englisch). – derzeitiger Quellcode
  • Procmail Homepage. Archiviert vom Original am 13. Oktober 2015; (englisch). – Archivierte Procmail Webseite

Einzelnachweise

  1. README. 2. März 2022, abgerufen am 17. November 2022 (englisch): „Copyright (c) 1990-2022, S.R. van den Berg, The Netherlands. Copyright (c) 1997-2005, Philip Guenther, The United States of America.“
  2. Philip Gunther: please remove the procmail port. ports@ (Mailing list) OpenBSD, 18. November 2014, abgerufen am 17. November 2022 (englisch).
  3. Stephen R. van den Berg: #1006633: procmail is unmaintained upstream. 2. März 2022, abgerufen am 17. November 2022 (englisch): „As of May 2020, the dormant state of procmail upstream maintenance has been changed back to active. As Santiago Vila can attest to, I have taken up active maintenance of procmail again since the past two years ...“
  4. CVEdetails: Procmail Vulnerabilities. CVEdetails.com, 3. Februar 2018, abgerufen am 17. November 2022 (englisch).
  5. procmail considered harmful - anarcat. Abgerufen am 17. November 2022.
This article is issued from Wikipedia. The text is licensed under Creative Commons - Attribution - Sharealike. Additional terms may apply for the media files.