Re: procmail: $MATCH erst später substituieren
Am Dienstag, den 21.11.2006, 09:13 +0100 schrieb Paul Puschmann:
> On Mon, Nov 20, 2006 at 10:12:56PM +0100, Daniel Leidert wrote:
[..]
> *snip* (da ich da im Moment nicht durchblicke)
Hmm. Dann hätte ich noch besser erklären sollen? In kurz:
/-------------------------------------------------------------------------
Beipiel 1:
:0
* ^List-Id: .*debian-.+\.lists\.debian\.org
* ^X-Mailing-List: <debian-\/[^@]+
| /bin/sed 1d | cyrdeliver -e -a $LOGNAME -m user.$LOGNAME.ml.debian.$MATCH
:0 e
{ EXITCODE=75 HOST }
\-------------------------------------------------------------------------
/-------------------------------------------------------------------------
Beispiel 2:
MAILLIST_DEBIAN = "cyrdeliver -e -a $LOGNAME -m user.$LOGNAME.ml.debian.$MATCH"
:0
* ^List-Id: .*debian-.+\.lists\.debian\.org
* ^X-Mailing-List: <debian-\/[^@]+
| /bin/sed 1d | $MAILLIST_DEBIAN
:0 e
{ EXITCODE=75 HOST }
\-------------------------------------------------------------------------
Die Regel ist die gleiche. Nur in Beispiel 2 definiere ich das
cyrdeliver-Kommando vor der Regel. Das funktioniert aber offenbar nicht,
da procmail zuerst $MAILLIST_DEBIAN auswertet. Dabei werden alle
Variablen ersetzt und da $MATCH noch keinen Wert hat, kommt procmail zu
dem Ergebnis (LOGNAME=dl):
MAILLIST_DEBIAN = "cyrdeliver -e -a dl -m user.dl.ml.debian."
Und wenn die Regel greift, wird dieser Wert für $MAILLIST_DEBIAN
eingesezt, statt
"cyrdeliver -e -a dl -m user.dl.ml.debian.$MATCH"
Nun war nur mein Gedanke, ob ich procmail dazu bringen kann, $MATCH
nicht zu Beginn zu ersetzen, sondern nur $LOGNAME. Wäre ja möglich, dass
MAILLIST_DEBIAN = "cyrdeliver -e -a $LOGNAME -m user.$LOGNAME.ml.debian.\$MATCH"
das macht, was ich will. Nur tut es das hier auch nicht. Wie erwartet
wird zwar $MATCH nicht ersetzt, so dass $MAILLIST_DEBIAN zu
"cyrdeliver -e -a dl -m user.dl.ml.debian.$MATCH"
ausgewertet wird, aber $MATCH wird, wenn die Regel greift, leider dort
nicht mehr ersetzt. Daher die Frage ob jemand weiß, ob das, was ich in
Beispiel 2 tun will, irgendwie funktioniert. Hätte ja sein können, dass
ich $MATCH nur mit dem "richtigen" Fluchtzeichen versehen muss. Aber
vielleicht sollte ich mich damit dann doch mal an eine auf procmail
spezialisierte Liste/Grippe wenden.
> > > [...]
> > > > lautet und die Mails landen im Nirvana (zumindest finde ich sie nicht
> > > > (mehr)).
> > >
> > > Siehe Fehlerbehandlung weiter oben.
> > > Wahrscheinlich landen sie in $DEFAULT, welches auf $ORGMAIL zeigt,
> > > welches wiederum auf /var/mail/$LOGNAME zeigt (weshalb ich beides bei
> > > mir auf "" setze). Hast du in /var/mail/$LOGNAME schon geschaut ob da
> > > was eingeliefert wurde?
> >
> > Ja. Da ist nichts - weder im IMAP-Ordner, noch in $ORGMAIL.
> >
> Welcher IMAP-Server?
cyrus ($DELIVERMAIL ist also cyrdeliver)
> Für meinen Courier muss ich in Procmail noch einen "/" an das Ende
> anfügen (für Maildir).
Naja, der Pfad kam durch besagtes Missverständnis meinerseits zustande.
Nur wo sind die Mails (sind keine wichtigen dabei, aber dennoch wäre es
interessant).
MfG Daniel
Reply to: