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

procmail: $MATCH erst später substituieren



Hallo,

Ich versuche mal das Problem zu erklären. Ich filtere die Mails mit
procmail. Dabei habe ich momentan für jede einzelne abonnierte Liste
eine eigene Regel. Da die procmailrc nun aber recht beachtlche Länge
erreicht hat und procmail leistungsfähiger ist, wollte ich die
Listen-Mail automatisch sortieren:

:0
* ^List-Id: .*debian-.+\.lists\.debian\.org
* ^X-Mailing-List: <debian-\/[^@]+
| /bin/sed 1d | ...
:0 e
{ EXITCODE=75 HOST }

Nun hatte ich bis jetzt am Anfang der procmailrc die Aufrufe von
cyrdeliver definiert. Der Teil sah also bis jetzt so aus:

MAILLIST_DEBIAN_DEVEL   = "$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.ml.debian.devel"
MAILLIST_DEBIAN_DEVEL_A = "$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.ml.debian.devel-announce"

Und wurde dann aufgerufen:

:0
* ^List-Id: .*debian-devel\.lists\.debian\.org
| /bin/sed 1d | $MAILLIST_DEBIAN_DEVEL

Nun dachte ich mir, ich könnte die Regel einfach so umformulieren, dass
statt des Verzeichnisses, in dem die Mails landen sollen, nun die
$MATCH-Variable steht:

MAILLIST_DEBIAN = "$DELIVERMAIL -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 }

Leider scheint $MATCH gleich zu Beginn ersetzt zu werden, wo es ja noch
keinen Wert hat, so dass der Aufruf am Ende nur noch

$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.ml.debian.

lautet und die Mails landen im Nirvana (zumindest finde ich sie nicht
(mehr)). Daher meine Frage: Kann ich meine Idee irgendwie umsetzen? Also
den cyrdeliver-Aufruf nur 1x definieren? Oder muss ich den Aufruf immer
nach der Regex setzen. Also so:

:0
* ^List-Id: .*debian-.+\.lists\.debian\.org
* ^X-Mailing-List: <debian-\/[^@]+
| /bin/sed 1d | $DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.ml.debian.$MATCH
:0 e
{ EXITCODE=75 HOST }

Danke für alle Hinweise. Google half mir leider nicht, ein Beispiel für
das, was ich hier tun will, zu finden. Ich hatte schon darüber
nachgedacht, das "$"-Zeichen mit einem Escape zu versehen, so dass
$MAILLIST_DEBIAN, wenn es in der regel aufgerufen wird, zu

$DELIVERMAIL -e -a $LOGNAME -m user.$LOGNAME.ml.debian.$MATCH

expandiert. Aber das funktioniert dennoch nicht.

x-post an debian-user-german und die lug-dd (fup2 in beide Listen nicht
notwendig - wenn ich eine Lösung habe, poste ich sie in beide Listen)

MfG Daniel



Reply to: