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

Re: Una regla complicada de procmail



El Dom 30 Jun 2002 19:51, Javier Miguel Rodríguez comentó:
> Buenas...
>
>     Recurro a la lista porque veo que esto no me acaba de salir y
> estoy desesperado. Quiero crear una regla de procmail que haga lo
> siguiente: cuando al usuario le llegue un correo, quiero que se quede
> con una copia en el buzón, y a la vez quiero que si en el CUERPO del
> mensaje aparece la cadena "OPCIÓN A", ejecutar un programa que me
> dará una dirección de correo y hacer que procmail reenvíe el correo a
> esa dirección. Igual con "OPCIÓN B", etc...

Bueno, no me gusta dar las cosas hechas, sobre todo cuando son 
preguntas específicas, pero por ésta vez me lo tomaré como un ejercicio 
teórico (la "free beer" también incentiva :)

# Reseteamos la variable ADDRESS
ADDRESS

# Si ninguna receta termina el proceso, procmail deja el correo en
# el buzón por defecto; sólo es necesario si no se pone el flag c en
# la última
#:0 c:
#mailbox

# B - "egrep" sobre el cuerpo
# D - distingue entre mayúsculas y minúsculas (¿necesario?)
# W - espera hasta que termine el programa
# lo de OPCI.N es para prevenir posibles problemas con los acentos
# (8-bit characters); no sé lo estricto que debe de ser el formato de
# la cadena
:0 BDW
* ()\<OPCI.N +A\>
ADDRESS=| programa-filtro
# Presupongo que el programa toma de la entrada estándar el mensaje de
# correo, si sólo toma cabecera o cuerpo, añadir h ó b a los flags.
# Si no toma nada (?) creo que se puede poner como acción
# ADDRESS=`programa`

# ahora sigue la lista de "else if OPCION X", usando el flag E
:0 BDWE
* ()\<OPCI.N +B\>
ADDRESS=| programa-filtro

:0 BDWE
* ()\<OPCI.N +C\>
ADDRESS=| programa-filtro

# etc.

:0 c
* ADDRESS ?? .+@.+
! ${ADDRESS}

# Aquí continuará el procesamiento del resto de recetas, salvo que se
# elimine el flag 'c' de la anterior (entonces incluir la primera).
# O puede estar incluida dentro de otro bloque... eso ya depende de
# lo que quieras hacer.

Ni que decir tiene que es una receta hecha de cabeza y sin probar, y 
seguramente mejorable para tu caso concreto (sin saber exactamente que 
hace el dichoso programita, no se puede refinar más), y tendrá fallos, 
incluidos los despistes al escribirla. Tú serás el "beta tester". No se 
admiten reclamaciones, pero sí recompensas ;)

> 	A ver si alguien puede echarme una manita... prometo cerveza si
> (es de/visita) Sevilla :-)

Si te he dado una buena idea, a lo mejor te tomo la palabra... no se si 
éste verano me pasaré por ahí... quizá por Córdoba.


-- 
To UNSUBSCRIBE, email to debian-user-spanish-request@lists.debian.org
with a subject of "unsubscribe". Trouble? Contact listmaster@lists.debian.org



Reply to: