Benutzer-Werkzeuge

Webseiten-Werkzeuge


procmail

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
procmail [2021-07-26 17:12:28] – [Einführung:] manfredprocmail [2021-07-26 17:14:16] (aktuell) – [Einführung:] manfred
Zeile 1: Zeile 1:
 +====== Procmail ======
 +
 +  * [[https://wiki.dovecot.org/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>
 +<file bash ~/.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/.
 +  }
 +}
 +</file>
 +</hidden>
 +