Veit Schiele Communications

Veit Schiele Communications

Procmail

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.
erstellt von Veit Schielezuletzt verändert: 19.11.2011 16:26 Uhr © Veit Schiele 2006–2011
Artikelaktionen

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.
Artikelaktionen