[Postfixbuch-users] transport.pcre, Invalid range end

Andreas Winkelmann ml at awinkelmann.de
So Dez 4 11:34:26 CET 2005


Am Monday 28 November 2005 10:59 schrieb Stefan Sabolowitsch:

> ich habe hier folgendes:
>
> transport_maps =
> 	regexp:/etc/postfix/transport.pcre
>
>
> /^dspam-add-([\w\-.%]+\@[\w.-]+)$/		dspamadd:${1}
> /^dspam-del-([\w\-.%]+\@[\w.-]+)$/		dspamdel:${1}
>
> /^spam-add-([\w\-.%]+\@[\w.-]+)$/		dspamadd:${1}
> /^spam-del-([\w\-.%]+\@[\w.-]+)$/		dspamdel:${1}
>
> /^spam-([\w\-.%]+\@[\w.-]+)$/		dspamadd:${1}
> /^nospam-([\w\-.%]+\@[\w.-]+)$/		dspamdel:${1}
> /^notspam-([\w\-.%]+\@[\w.-]+)$/		dspamdel:${1}
>
>
> jedoch beschwert sich postfix über alle Zeilen.
>
> Nov 28 10:39:06 mailmx postfix/trivial-rewrite[10926]: warning: regexp map
> /etc/postfix/transport.pcre, line 4: Invalid range end

Ja, weil der "\" da ein ganz normales Zeichen ist. Dadurch steht da z.B. "\-." 
Also alle Zeichen von "\" bis ".", und das kann er nicht und bringt ne 
"Invalid range...". Um die Sonderbedeutung des "-" wegzubekommen, packe es 
ans Ende.
Das mit dem "\" bedeutet auch "[\w]" steht für eine Zeichenklasse aus zwei 
Zeichen "\" und "w". Und nicht sowas wie "a-z", "A-Z", "0-9" und "_". Also 
nimm da am besten die lange Schreibweise "[[:alnum:]]".

Hmm, ansonsten, das "\" vor dem "@" entfällt natürlich auch. 

So im grossen und ganzen würde ich es so schreiben:

/^dspam-add-([[:alnum:]%.-]+@[[:alnum:].-]+)$/		dspamadd:${1}

> Was ist hier falsch ?

Es gibt verschiedene Implementierungen der RegularExpressions. Die einen 
können mehr, die anderen weniger. Nimm am besten die Sachen, die alle 
unterstützen.

-- 
	Andreas



Mehr Informationen über die Mailingliste Postfixbuch-users