[postfix-es] Virtual regexp

José Luis Tallón jltallon en adv-solutions.net
Lun Nov 3 17:32:03 CET 2003


At 14:46 03/11/2003, you wrote:
>Perfecto, justo hasta ahí llegué yo, salvo que no se me ocurrió algo tan 
>sencillo como poner más reglas para los otros niveles, estaba intentando 
>hacerlo todo en una sola línea.

:)

>Ahora veo otro problema. Para matchear los strings haces el matching de 
>los caractéres excepto el "+" pero ... ¿Qué hay de direcciones que 
>contengan el caracter "+" (en la parte de usuario, claro está)?

Pues no pasarían con esta solución, claro :)
Bueno, habrá que "currárselo" un poco más ...


>¿Puedes decirme cómo hacer los matching excluyendo las cadenas "+40" y 
>"+2E" en vez de solo el caracter "+"?

Veamos....

/IMCEASMTP\-([[:alnum:]+-]+)(?:\+40)([[:alnum:]+-]+)(?:\+2E)([\a]+)@cualquier.dominio.com/ 
$1@$2.$3

Por desgracia, con un simple mapa regexp no se puede convertir cada '+40' 
en '@' y cada '+2E' en '.'; Por lo tanto, tendrás que hacer la "chapuza" de 
repetir la PCRE con pequeñas modificaciones.

La solución "buena", que sería algo así como "s/(+2E)/./g" si coincide con 
el patrón esperado, no se puede hacer con un mapa estándar de Postfix ( 
sería demasiado complejo como para ser útil salvo para este caso, además de 
peligroso ). Sin embargo, con una snapshot de Postfix o el próximo 
Postfix-2.1, se podría implementar un 'demonio' en PERL que se comunicara 
con el demonio 'trivial-rewrite' de Postfix via un mapa TCP: e hiciera el 
trabajo ( es trivial implementarlo )

ADVERTENCIA: este tipo de conversiones pueden convertirte en un open-relay. 
Así pues, recomendaría ponerlo en una 'smtpd_restriction_class' separada, y 
por la que sólo se pase una vez sepamos que el cliente es de confianza ( 
via 'check_client_access', por ejemplo )

>Salu2


Un saludo,
         José Luis Tallón


>*********** REPLY SEPARATOR  ***********
>
>On 03/11/2003 at 1:01 José Luis Tallón wrote:
>
> >At 07:39 03/11/2003, you wrote:
> >>Quizás esto sea mas bien una pregunta sobre manejo de expresiones
> >>regulares pero quizás ya alguien ha intentado resolver este mismo
> >problema
> >>y me puede ayudar
> >>
> >>Necesito hacer sustitución de rcpt envelope de estas direcciones:
> >>
> >><mailto:IMCEASMTP-pepito+40hotmail+2Ecom en cualquier.dominio.com>IMCEASMTP 
> -pepito+40hotmail+2Ecom en cualquier.dominio.com
> >>a
> >><mailto:pepito en hotmail.com>pepito en hotmail.com
> >
> >Evidentemente.... (con PCRE)
> >
> >/IMCEASMTP\-([^+]+)\+40([^+]+)\+2E([\a]+)@cualquier.dominio.com/ $1@$2.$3
> >
> >salvo error por mi parte al construir la PCRE, con esto debe funcionar.
> >Pruébalo con postmap antes.
> >
> >Advertencia: esto es un "quick and dirty hack", y sólo funciona para
> >subdominios de primer nivel. Como por suerte son los más comunes, te
> >servirá.
> >Para acomodar los de tercer nivel, habría que añadir esta otra:
> >
> >/IMCEASMTP\-([^+]+)\+40([^+]+)\+2E([^+]+)\+2E([\a]+)@cualquier.dominio.com/
> >$1@$2.$3.$4
> >
> >>
> >>Quienes tengan organizaciones internas con MS Exchange seguramente
> >conocen
> >>estos inventos de microsoft.
> >
> >:-|
> >
> >>Esto es un encapsulamiento que hace MS Exchange y lo que quiero es
> >>precisamente que el mensaje vaya directo a su destino sin tener que pasar
> >>por el servidor que atiende "cualquier.dominio.com".
> >
> >Vaya, así que en M$ han re-inventado el source-routing ... es una
> >característica que se restringió ó eliminó de todos los MTA decentes hace
> >tiempo, porque te convertía instantáneamente en un open-relay ... :-|
> >
> >>
> >>Salu2
> >>
> >
> >Un saludo,
> >         José Luis Tallón
> >
> >-
> >Para ENVIAR mensajes a esta lista tienes que estar SUSCRITO a ella.
> >.
> >Envía la linea "unsubscribe postfix-es" en el cuerpo de un mensaje
> >a majordomo en WL0.org para quitarte de la lista.
>
>
>
>-
>Para ENVIAR mensajes a esta lista tienes que estar SUSCRITO a ella.
>.
>Envía la linea "unsubscribe postfix-es" en el cuerpo de un mensaje
>a majordomo en WL0.org para quitarte de la lista.

-
Para ENVIAR mensajes a esta lista tienes que estar SUSCRITO a ella.
.
Envía la linea "unsubscribe postfix-es" en el cuerpo de un mensaje
a majordomo en WL0.org para quitarte de la lista.



Más información sobre la lista de distribución Postfix-es