Direkt zum Inhalt Direkt zur Navigation

Veit Schiele Kommunikationsdesign

Mailfilter

Autor: Veit Schiele
Zuletzt verändert: 26.08.2008 22:37

Procmail ist ein mächtiger E-Mail-Filter, der für viele komplexe Aufgaben verwendet werden kann. So sind z.B. variable Weiterleitungen oder Spamfilter möglich.

Zur Nutzung von Procmail wird zunächst im Verzeichnis des Nutzers die Datei .forward mit folgendem Inhalt angelegt:

"|/usr/bin/procmail"

Damit werden die Mails nun über das Programm Procmail ausgeliefert, und die Art der Auslieferung wird über die Datei ~/.procmailrc konfiguriert.

Beispiel

Diese .procmailrc-Datei setzt die Verzeichnisse Spam und Hostsharing in Ihrem Mailverzeichnis voraus:

# Kein Logging als Default
COMSAT=no
LOGABSTRACT=no
VERBOSE=no
LOGFILE=procmail.log

# Systemweiten Spamassassin-Daemon für alle Mails aufrufen...
:0fw
| /usr/bin/spamc -U /var/run/spamd
# ...und Spam in eigenem Folder aussortieren
:0
* ^X-Spam-Flag: YES
Maildir/.Spam/

# Mailinglisten von Hostsharing kommen in eine eigene Mailbox.
:0
* ^TO_(support|technik|website)@hostsharing\.net
Maildir/.Hostsharing/

Alle nicht ausgefilterten Mails landen in der normalen Mailbox.

:0 leitet eine Filterregel ein und fw in der ersten Regel sorgt dafür, dass Procmail wartet, bis das Programm fertig ist.

Abwesenheitsbenachrichtigung (vacation)

Zunächst erstellen Sie in Ihrem Home-Verzeichnis eine Datei vacation.msg, deren Text als Nachricht verschickt werden soll.

In die .procmailrc werden anschließend folgende Zeilen eingefügt:

SHELL=/bin/sh
FORMAIL=/usr/bin/formail
SENDMAIL=/usr/sbin/sendmail

:0 Whc: vacation.lock

# Nur E-Mails, die an meine Adresse adressiert sind
* ^TO_myself@example\.com

# Daemons (Mailinglisten) ausschließen
* !^FROM_DAEMON

# Loop vermeiden: eigene E-Mail ausschließen
* !^X-Loop: myself@example.com

# Adresse des Senders im Cache speichern
| formail -rD 8192 vacation.cache

# e: letztes recipe trifft nicht zu (Adresse noch nicht im Cache vorhanden)
:0 ehc
| ($FORMAIL -rA "Precedence: junk" -A "X-Loop: myself@example.com"; /bin/cat vacation.msg ) | $SENDMAIL -oi -t -f myself@example.com

Eine E-Mail mit dem Inhalt der Datei vacation.msg und dem Absender myself@example.com wird an den Sender geschickt. Allerdings geschieht dies nur, wenn die Adresse noch nicht in der vacation.cache-Datei vorhanden war. Damit wird vermieden, dass ein Absender immer wieder dieselbe Abwesenheitsnachricht erhält.

Mail-Größe limitieren

In folgendem Besipiel wird die maximale Größe von E-Mails auf 16 MB beschränkt um die Mailbox-Größe (Quota) nicht zu schnell anwachsen zu lassen:

:0
* > 16777216
| (formail -brt ; \
  echo "I am sorry, I don't accept mails larger than 16MB." ;\
  echo ""; \
  ) | $SENDMAIL -oi -t

Zum Weiterlesen

pm-tips
A collection of procmail recipes, instructions, howtos.
Timo's procmail tips and recipes
procmail tips and recipes
Spamcheck
Ein Script, mit dem man über ausgefilterte E-Mails unterrichtet wird.