Puesto que es una pregunta recurrente en la bulmailing,
a sugerencia de Ricardo,
he decidido escribir este mini truco para filtrar el correo de la
lista con procmail y guardarlo separado
del resto de nuestro correo en un buzón aparte.
Actualización: añadidas, a petición popular, algunas reglas típicas.
Primero de todo, esto no es ni pretende ser un tutorial de procmail ni nada que se le aproxime
mínimamente, para éso estan las excelentes y completísimas páginas man que no
debería dejar de leer ningún usuario de procmail:
man procmail
man procmailrc
man procmailex
Ojo: Los enlaces anteriores son konqueror pagüered 😉
Procmail soporta tanto mbox como maildir, pero los ejemplos están puestos todos con mbox; como comentaba tcb más abajo, para maildir hay que poner un / al final del nombre del buzón, pero ojo que tambien hay que quitar el : de después del 0 (porque con maildir ya no hay que manejar lockfiles).
La regla de filtrado:
Para que los mensajes de la bulmailing vayan a parar al buzón
IN.bulma pondremos la siguiente regla en nuestro ~/.procmailrc:
:0:
* ^X-BeenThere:.*bulmailing@bulma\.net
IN.bulma
o bien la siguiente (una de las dos):
:0:
* ^List-Id:.*<bulmailing\.bulma\.net>
IN.bulma
Todo esto son cabeceras smtp que añade el gestor de la lista (mailman en este caso) a todos los mensajes que
pasan por ella.
¿Y no es más sencillo filtrar por el tag [bulma] del asunto?
No es mas sencillo, y además está mal. Porque si alguien nos contesta en privado a un mensaje de la lista, lo más probable es que lleve el tag ése en el asunto; y entonces lo filtraremos al buzón de la lista sin darnos cuenta de que realmente no lo es.
¿Y para probarla?
Si coincide que ponemos la susodicha regla un dia de poco tráfico (o nuestra
impaciencia para testearla es superior al tráfico de la lista en ese momento);
la tentación inicial seria mandar un mensaje con asunto prueba no
leer para ver si se ejecuta correctamente. Si hacemos una prueba,
probablemente nadie se enfadará, pero a la segunda o tercera, la probabilidad de
molestar a alguien crece significativamente. Y tampoco es plan andar
incordiando a cientos de personas con nuestras pruebas.
El truco que yo utilizo es el siguiente:
Generar un fichero mbox con un mensaje cualquiera de la lista (esto es
importante: sólo uno). Llamémosle p.mbox.
Entonces tenemos varias opciones (2 de ellas sugeridas por
thibaut):
a) cat p.mbox | /usr/sbin/sendmail -oi miusuario@localhost
b) cat p.mbox | formail -ds procmail
c) cat p.mbox | procmail
A tener en cuenta:
1.- a) sólo funcionará si tenemos un smtp correctamente
configurado en nuestro sistema
2.- a) y c) sólo funcionaran si en p.mbox hay un y
sólo un mensaje. b) sirve si hay más (aunque mejor probar de uno en uno,
¿no?)
3.- contrariamente a lo que pueda parecer, a) no requiere tener sendmail instalado (cualquier mta suele proporcionar un /usr/sbin/sendmail compatible).
Necesito un mensaje que no venga de la lista y nadie me quiere! :’-(
Tranquilo!, Calimero. Manda un mensaje a [email protected] y un señor que
tienen contratado y que sólo hace éso, responder a esos mensajes, te contestará
enseguida (es bastante rápido). Pero, no te pases, me han dicho que
tiene una paciencia limitada y si abusas del servicio a lo mejor se enfada
contigo.
Anexo 1 para nota (para los suscritos a cientos de listas):
Si estás suscrito a muchas (pero muchas) listas y no quieres poner una regla para cada una de ellas, puedes
usar la siguiente (propuesta por thibaut) que es genérica:
:0:
* ^List-Id:[^<]*<\/[^>]+
$LISTAS/ALL/$MATCH
Anexo 2 (algunas reglas típicas):
Muchas de ellas aparecen tal cual en el man procmailex, pero bueno, aquí van:
Mover el correo que spamassassin ha marcado como spam al buzón in.spam:
:0:
* ^X-Spam-Flag: YES
in.spam
Para más información sobre las reglas completas para el spamassassin, ver el fichero de Debian /usr/share/doc/spamassassin/procmailrc.example (para otras distros, YMMV).
Separar los correos provenientes de algunos remitentes concretos:
:0:
* ^From:.*(webmaster.*@barrapunto.com|schneier@counterpane\.com|webmaster@daviscup\.com)
IN.newsletters
Borrar los mensajes del gusanito swen (esto es más indicado para nuestro servidor de correo, en el caso de que dispongamos de procmail en él):
:0 B
* > 65536
* ^TVqQAAMAAAAEAAAA//8AALgAAAAAAAAAQAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAAA$
* ^AAAA2AAAAA4fug4AtAnNIbgBTM0hVGhpcyBwcm9ncmFtIGNhbm5vdCBiZSBydW4gaW4gRE9TIG1v$
/dev/null
Separar los mensajes duplicados por Message-ID (si estamos suscritos a varias listas y la gente hace crossposting entre ellas recibiremos varias copias de un mismo mensaje, así se separan los repes):
:0 Whc: .msgid.lock
| formail -D 16384 .msgid.cache
:0 a:
IN.duplicates
Separar los mensajes dirigidos a una dirección determinada (esto sólo funcionara si la dirección destinataria aparece en las cabeceras del mensaje, cosa que no sucede siempre):
:0:
* ^TO_.*spamtrap@midominio\.net
in.spamtrap
Separar los mensajes con tamaño mayor de 256 KBytes (otra regla apropiada para el servidor y menos útil en el pc donde leemos el correo):
:0:
* > 262144
IN.muygrandes
Filtrar los mensajes de remitentes no deseados (aka. trolls):
:0:
* ? formail -x”From:” -x”From” -x”Sender:” | egrep -is -f $HOME/.blacklist.txt
in.trolls
y en $HOME/.blacklist.txt pondríamos las direcciones de correo de dichos trolls. OJO: una por linea y sin lineas en blanco (o lo filtrará absolutamente todo).
Bueno, de momento esto es todo. Si se me ocurre algo interesante más (o si
alguien lo sugiere) ya lo pondré.
Este post ha sido traido de forma automatica desde https://web.archive.org/web/20140625063149/http:/bulma.net/body.phtml?nIdNoticia=1965 por un robot nigromante, si crees que puede mejorarse, por favor, contactanos.