Benutzer-Werkzeuge

Webseiten-Werkzeuge


procmail

Procmail

Installation:

# cd /usr/ports/mail/procmail && make install && make clean

oder

# portupgrade -RN `cd /usr/ports/mail/procmail && make clean | tail -n1 | awk '{print $4}'`

Einführung:

https://www.manitu.de/service/howtos/procmailrc-Dateien.pdf

Wenn "procmail" ohne Parameter aufgerufen wird, dann wird die Konfigurationsdatei im Homeverzeichnis ausgewertet ($HOME/.procmailrc) und das Systempostfach des Users ($MAIL z.B.: /var/mail/fritz) gelesen.

Will man "procmail" mit einer rc-Datei starten, die an einer anderen Stelle im Dateisystem liegt, muss diese als Parameter uebergeben werden.

# vi /etc/mail/aliases

# fritz: "| procmail /usr/local/etc/procmailrc"
# newaliases

zum konvertieren einer Mailbox:

# formail -ds < old_mailbox >> new_mailbox

und wenn es von Procmail gleich weiter verarbeitet werden soll:

# cat old_mailbox | formail -ds procmail -Y /usr/local/etc/procmailrc

Für Procmail ist eine E-Mail erst zu Ende, wenn der Datenstrom abreißt. Mit anderen Worten, das Dateiende erreicht wurde.

Da ich "procmail" nur als Filter verwende (um die E-Mails in eine Datenbank einzupflegen) und nicht komplett studiere, ist auf dieser Seite auch nichts weiter zu finden.

Weitere Beispiele:

# man procmailex

mehrere Beispiele einer ~/.procmailrc mit erklärungen

<hidden ~/.procmailrc>

~/.procmailrc
################################################################################
### unvollstaendige Liste von Filtertypen
### siehe "man procmailrc" fuer die vollstaendige Liste von Filtertypen
# :0                      # Abbruch wenn filter zutrifft
# :0c                     # ... immer weiter machen, auch wenn Filter zutrifft
# :0H                     # nur Header pruefen
# :0h                     # nur Header zur weiteren Pruefung weiterleiten
# :0B                     # nur Message Body pruefen
# :0b                     # nur Message Body zur weiteren Pruefung weiterleiten
# :0D                     # Gross-/Kleinschreibung beachten
################################################################################
 
 
 
###---------->General Setup<----------
SHELL = /bin/sh
PATH    =$HOME/bin:/usr/bin:/usr/ucb:/bin:/usr/local/bin:.
### Das Verzeichnis ($HOME/Mail/) muss existieren!
### hier werden die unten in den Regeln definierten Verzeichnisse angelegt
MAILDIR = $HOME/Mail/
### hier werden die Mails auch nochmal komplett reingeschrieben
#DEFAULT=$MAILDIR/mbox
LOGFILE = $HOME/procmail.log
LOCKFILE=$HOME/.lockmail
 
###----------> maildirs <---------
### Folgendes wird von Procmail ausgefuehrt:
### Die Verzeichnisse "mail/cur/", "mail/new/", "mail/tmp/"
### wird angelegt, wenn es noch nicht existiert,
### dann wird jede einzelne E-Mail
### in eine separate Datei geschrieben.
### 
### $MAILDIR/mail/new/
### "1060434162.57559_0.mail.domain.de", "1060434163.57563_0.mail.domain.de", ...
#:0c
#mail/
 
###----------> E-Mails in separate Dateien <---------
### Das Verzeichnis "mail/"
### muss schon existieren, dann wird jede
### einzelne E-Mail in eine separate
### Datei geschrieben.
### 
### $MAILDIR/mail/
### "msg.Cvi", "msg.Dvi", ...
#:0c
#mail
 
###----------> "MH"-Format <---------
### Das Verzeichnis wird angelegt,
### wenn es noch nicht existiert.
### Die E-Mails werden im "MH"-Format geschrieben
### das bedeutet, jede einzelne E-Mail wird in
### eine separate Datei geschrieben und die
### Namen der Dateien sind fortlaufend
### nummeriert.
###
### $MAILDIR/20030809/
### "1", "2", "3", ...
#:0c
#`date +%Y%m%d`/.
 
###----------> Multi-part messages <---------
###
### Content-Type: multipart/mixed; boundary=ELM965173874-25050-0_
### Content-Type: multipart/mixed; boundary="------------BA45271FBDAA479CECA7E20A"
###
### Write a recipe that inserts into a variable (call it BOUND) the boundary string.
### Note that the potential quotes (") are not to be part of that string.
### Also note that the header might be divided on multiple lines as in
###
### Content-Type: multipart/mixed;
###   boundary=ELM965173874-25050-0_
###
### There are alternative solutions, which not necessarily are quite equivalent.
### The first one is putting high up in your ~/.procmailrc recipe file the line(s)
###
### BOUND1=`formail -z -x"Content-Type:" | awk -F= '{ print $2 }' | sed -e 's/\"//g' | tr -d '\n'`
###
### A second one is:
###
### :0h
### * ^Content-Type:
### { BOUND2=`egrep -i 'boundary=' | awk -F= '{ print $2 }' | sed -e 's/\"//g'` }
###
### This was not in the exercise, but you can then have recipes like
###
### :0:
### * ! BOUND2 ?? ^^^^
### WhateverFolder
###
################################################################################
 
###----------> Zeichenerkennung in der zweiten Zeile <---------
### Write a recipe to detect a "whatever pattern" on exactly the second line of the body of an incom
ing message.
### Ignore case in the pattern.
###
### :0B:
### * ? sed -n 2p | egrep -is 'whatever pattern'
### WhateverPatternMail
 
 
 
### Wenn die Filterzeilen "*^From" weckgelassen werden,
### dann werden die Mails auch in die System-Mailbox
### eingetragen.
 
 
### ganze Mail
:0c
*^From
testmaildir-complete/.
 
 
### Mail-Kopf
:0ch
*^From
testmaildir-head/.
 
 
### Mail-Body
:0cb
*^From
testmaildir-body/.
 
 
### Verschiebt Mails mit dem Wort "Werbung" im Betreff in den Papierkorb
:0H:
* ^Subject:.*Werbung
.trash
 
 
### E-Mails mit binaerem (nicht lesbarem) Anhang werden hier verarbeitet
:0
*^From
* ^Content-Type: multipart/
{
  :0 B
  * ^Content-.*base64
  {
    :0
    { RULE="Email mit binaerem Anhang" }
    :0:
    testmaildir-base64/.
  }
}

</hidden>

/home/http/wiki/data/pages/procmail.txt · Zuletzt geändert: von manfred