[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