[postfix-es] Virtual regexp

José Luis Tallón jltallon en adv-solutions.net
Mar Nov 4 08:04:44 CET 2003


At 00:51 04/11/2003, you wrote:
>Te entendí perfectamente, pero ... dime si te parece bien estas lineas:
>
>/^IMCEASMTP\-(.+)\+40([^+]+)\+2E([^+]+)@.+$/ $1@$2.$3
>/^IMCEASMTP\-(.+)\+40([^+]+)\+2E([^+]+)\+2E([^+]+)@.+$/ $1@$2.$3.$4.
>/^IMCEASMTP\-(.+)\+40([^+]+)\+2E([^+]+)\+2E([^+]+)\+2E([^+]+)@.+$/ 
>$1@$2.$3.$4.$5
>/^IMCEASMTP\-(.+)\+40([^+]+)\+2E([^+]+)\+2E([^+]+)\+2E([^+]+)\+2E([^+]+)@.+$/ 
>$1@$2.$3.$4.$5.$6
>/^IMCEASMTP\-(.+)\+40([^+]+)\+2E([^+]+)\+2E([^+]+)\+2E([^+]+)\+2E([^+]+)\+2E([^+]+)@.+$/ 
>$1@$2.$3.$4.$5.$6.$7

Probablemente funcionarían ( dependiendo de donde las "enganches" en tu 
configuración", pero casan más de la cuenta; Yo lo dejaría como:

- El username: [^+]+ ó mejor [[:alnum:]\.+-] , y dejar que sea PCRE quién 
trabaje ;)

- Los subdominios: [[:alnum:]-]

- El gTLD/ccTLD( dominio final ):  [[:alpha:]], caracteres alfabéticos 
solamente

Poner ".+" para el dominio local es peligroso, puesto que casa cualquier 
cosa... no lo hagas.
En cualquier caso, 'postmap' es tu amigo ;)

¿De verdad tienes 6 clientes que envían a destinos con 5 niveles de 
subdominios?

>¿ A propósito, qué es lo que matchea [\a] ?

Caracteres alfabéticos. man pcre_table ; man pcre



>*********** REPLY SEPARATOR  ***********
>
>On 03/11/2003 at 5:32 José Luis Tallón wrote:
>
> >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]+)@cualq 
> uier.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.
>
>
>
>-
>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