qmail zusätzlicher Header / Delivered-To


DeeZwoo

New Member
Hallo,
bei meinem eingesetzten qmail auf einem Root-Server mit PLESK 9.2.3 wird bei Catch-All-Postfächern für Domains der SMTP-Envelope nicht einfach verworfen, sondern als "Delivered-To:"-Header in die Mail eingefügt.

Dabei wird die Mailboxnummer voran gestellt, das sieht dann entsprechend z.B. so aus:
Delivered-To: [email protected]

Nun versuche ich zweierlei zu erreichen.
1. Dieser Header soll immer eingefügt werden (nicht nur bei Catchall-Postfächern)
2. Die voran gestellte Mailboxnummer sollte nicht eingefügt werden.

Es wäre genauso okay, wenn nicht der Delivered-To-Header manipuliert wird, sondern ein zusätzlicher Header (z.B. Envelope-To o.ä.) eingefügt wird, der die entsprechende Information enthält.

Wenn mir da jmd. helfen könnte wäre das super.

Gruß DeeZwoo
 
Falls Du procmail für die Auslieferung ins Postfach einsetzen würdest, könntest Du die Header beliebig mit "formail" extrahieren und manipulieren.
Das scheint mir die einfachste Lösung zu sein.
 
Was ich jetzt hinsichtlich dieser Lösung gefunden habe ist das ich procmail dann per preline aufrufen müsste, aber preline ist wohl nicht bei mir auf dem System.
Oder kann ich das auch direkt über procmail?
So oder so müssen die Informationen aus dem Mail-Envelope da aber noch erhalten sein, bewahrt qmail diese auf und übergibt sie in die Umgebungsvariablen?

Wen qmail selbst diese Info ja benutzt, um bei Catchall-Adressen den Header hinzuzufügen, war meine Hoffnung, das ich da direkt was drehen kann....
 
Okay, ich bin jetzt soweit, dass ich in der .qmail über preline procmail aufrufe und dort als Rezept formail aufrufe und formail den Zusatzheader einfügt. Soweit, sogut.

Aber wie setze ich dort die korrekte Info rein??
qmail speichert wohl die Info in der Variablen DTLINE, aber wie kann ich diese jetzt abgreifen??

Konfiguration .qmail:
Code:
| true
| preline /usr/bin/procmail -m .procmailrc
#| /usr/bin/deliverquota ./Maildir

Konfiguration .procmailrc
Code:
SHELL=/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
HOME=/var/qmail/mailnames/[I]DOMAIN[/I]/[I]MAILBOX[/I]
MAILDIR=$HOME/Maildir
LOGFILE=/var/log/procmail.log
#VERBOSE=off
VERBOSE="on"
DEFAULT=${MAILDIR}/
:0 wf
| formail -I "X-Envelope-To: "

DOMAIN und MAILBOX sind natürlich mit echten Werten belegt...
 
Last edited by a moderator:
Wieder weiter..

Konfiguration .qmail:
Code:
| true
| preline /usr/bin/procmail  -m .procmailrc $LOCAL $HOST $HOME
#| /usr/bin/deliverquota ./Maildir

Alternativ kann man auch andere qmail Variablen übergeben als LOCAL und HOST übergeben, HOME wir übergeben, damit die .procmailrc universell eingesetzt werden kann (wird dann evtl. noch auf /etc/procmailrc geändert)

Konfiguration .procmailrc:
Code:
SHELL=/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
LOGFILE=/var/log/procmail.log
VERBOSE=off
HOME=$3
MAILDIR=$HOME/Maildir
DEFAULT=${MAILDIR}/
:0 wf
| formail -I "X-Envelope-To: "$1"@"$2

Schönheitsfehler: Die Mailboxnummer ist immer noch voran gestellt.....kann ich das evtl. mit nem regulären Ausdruck wegzaubern??
 
Wenn es nur darum geht, die "15-" weg zu bekommen und sonst keine "-" im Namen vorkommen, könnte eine einfache Lösung so aussehen:
Code:
SHELL=/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
LOGFILE=/var/log/procmail.log
VERBOSE=off
HOME=$3
MAILDIR=$HOME/Maildir
DEFAULT=${MAILDIR}/
ADDR=`echo $1 | awk -F "-" '{print $2}'`
:0 wf
| formail -I "X-Envelope-To: "$ADDR"@"$2
 
So, das hat mich jetzt zumindest auf die richtige Spur gebracht, nämlich den Mailboxnamen hinterher zu löschen, statt seine Erzeugung zu manipulieren.
Das sollte jetzt auch für Mailadressen funktionieren, die mehrere Bindestriche haben.

Dabei habe ich nochmal die Aufrufe verändert. Das funktionierende Resultat, falls es jmd. verwenden will:

.qmail:

Code:
| true
| preline /usr/bin/procmail  -m .procmailrc $HOME $DTLINE
#| /usr/bin/deliverquota ./Maildir

.procmailrc
Code:
SHELL=/bin/sh
PATH=/var/qmail/bin:/bin:/usr/bin:/usr/local/bin
LOGFILE=/var/log/procmail.log
VERBOSE=off
HOME=$1
MAILDIR=$HOME/Maildir
DEFAULT=${MAILDIR}/
LOCALFROM=$3
ADDR=`echo "$LOCALFROM" | sed -e 's/^[0-9]\+-\(.*\)/\1/'`
:0 wf
| formail -I "X-Envelope-To: "$ADDR"

Wenn man die .procmailrc anlegt sollte man drauf achten, dass sie wie alle anderen Dateien im Verzeichnis dem User und der Gruppe popuser gehören....

Was habe ich mir jetzt eigentlich damit ausgeschaltet, dass "/usr/bin/deliverquota" nicht mehr aufgerufen wird?
 
Last edited by a moderator:

Back
Top