[Date Prev][Date Next] [Thread Prev][Thread Next] [Date Index] [Thread Index]

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: