Mailanhänge abhängen mit Postfix/procmail/metamail

Ich muss für ein aktuelles Projekt eine EDI über Mailanhänge verarbeiten können.
Jetzt habe ich etwas rumgesucht und rumgerätselt um rauszufinden, wie ich das jetzt am elegantesten hinbekomme.
Normal bevorzuge ich einen Datenaustausch per ftp.

Also war mein Plan, die Mails an den postfix auffm ftp Server schicken zu lassen und da automatisch die Dateianhänge abzuhängen.

Da die Infos wie immer auf 5 Pages verteilt waren, hier die kurze Zusammenfassung:

  • Es werden auf meinem normalen ftp Server hier (über den normal alle EDI geht) Mailuser angelegt.
    Diese haben dann Postfächer an die man ganz normal Mails mit Anhängen schicken kann.
  • Postfix leitet die eingegangenen Mails weiter an Procmail.
  • Procmail sichert die Mails und leitet sie danach weiter an metamail.
  • Metamail detached die Anhänge daraufhin und speichert sie im Homedir des Users.
  • Mein System holt diese Dateien dann wie üblich per ftp ab

Dafür braucht man halt metamail, procmail und postfix.

Postfix muss für Maildirs konfiguriert sein.
Geht ganz einfach mit der Zeile

home_mailbox = Maildir/

In der main.cf

Auf die weitere Postfix Konfiguration gehe ich hier nicht ein.
Procmail und metamail muss man hierfür nicht konfigurieren.

“apt-get install procmail metamail” auffm Debian System reicht.

Ansonsten sind nur zwei kleine Dateien im Homedir des Users notwendig:

.forward

"|IFS=' ' && exec /usr/bin/procmail -f- || exit 75 #username"

Diese Datei sagt postfix, dass eingehende Mails an procmail weitergeleitet werden sollen.

-> Ersetzt hier “username” mit dem aktuellen User um dens geht

Und dann braucht man eine .procmailrc Datei:

DEFAULT=$HOME/Maildir/
MAILDIR=$HOME/Maildir
LOGFILE=/var/log/procmail.log
VERBOSE=on
LOGABSTRACT=yes
DROPPRIVS=no

:0
* ? /usr/bin/test -d $DEFAULT || /usr/bin/maildirmake $DEFAULT
{ }
:0 E
{
 # Bail out if directory could not be created
 EXITCODE=127
 HOST=bail.out
}

:0
*^content-Type:
{
 # backup the complete mail first..
 # you can leave out this part if you don't want a backup of the complete mail
 :0c:
 $HOME/Maildir/.Gesichert/new

 # Now the actual unpacking part
 #
 # this is the place where the attachments will be unpacked to
 METAMAIL_TMPDIR=$HOME/attachments

 # forward to metamail
 :0fw
 | metamail -w -x -y
}

In dieser Datei wird procmail gesagt, das die Mail in ~/Maildir/.Gesichert/new gesichert und danach an metamail weitergegeben werden soll.

Die abgehangenen Attachments liegen später in ~/attachments

Das Sichern der Originalmail ist wichtig, weil metamail die Attachments aus den Mails rauslöscht.

Das wars schon.

Jetzt gehts ans Finetuning.

Metamail entpackt nämlich den ersten Teil der Mails auch, also den Plaintext Teil.

Und der ist für mich uninteressant.

Leave a Reply