¿Cómo puedo aplicar mis filtros procmail a mi bandeja de entrada de maildir?

9

Anoche me suscribí a una lista de correo y descubrí esta mañana que mi filtro procmail no se aplicaba a muchos de los mensajes de la lista de correo. Ahora tengo montones de mensajes de listas de correo menos importantes intercalados con mis correos electrónicos de trabajo más importantes en mi bandeja de entrada.

¿Es posible volver a ejecutar todos los correos electrónicos en mi bandeja de entrada a través de mis filtros procmail nuevamente?

Nota: estoy usando el formato maildir

Cory Klein
fuente
1
eche un vistazo a lists.debian.org/debian-user/2006/06/msg00716.html
Ulrich Dangel
Eso presenta una solución parcial. En este caso, algunos correos electrónicos definitivamente se enrutarán de nuevo a la bandeja de entrada. Parece que ya debería haber alguna solución * nux a este problema que no conozco, en lugar de escribir un script para simular el proceso de entrega de correo existente.
Cory Klein
El problema es que procmail solo funciona en mensajes de correo, no funciona en carpetas, mboxes o cualquier otra cosa, esto significa que tendrá que simular la entrega o usar algo como Thunderbird y filtrarlo allí.
Ulrich Dangel

Respuestas:

3

Creo que esto funcionará. Debe ejecutar formailpara formatear el correo y enviarlo nuevamente procmail.

Desde el directorio de Maildir:

cat * | formail -s procmail

George M
fuente
3
¿Esto realmente funciona? ¿No dejaría todos los mensajes antiguos donde estaban?
CNT
2

es posible que pueda hacerlo en su lugar, así:

$ for m in Mail/{cur,new}/*; do echo $m; procmail <$m; rm $m; done

Luego debe eliminar cada correo electrónico original, de lo contrario, procmail lo duplicará.

También registrará todo como nuevo. No estoy seguro de una buena manera de manejar eso.

Jake
fuente
Esto parecería un desperdicio en el disco io: el filtrado de procmail generalmente solo se realiza en función de los encabezados, pero dicha canalización hará que todo el mensaje se lea y se escriba en el disco nuevamente. Además, si Procmail se queda sin memoria o encuentra algún otro problema, aún así elimina incondicionalmente el archivo (¡ay!), Lo que también parece bastante aterrador. Yo diría que esta es una solución completamente inaceptable en lo que respecta a maildir.
CNT
1
Esto podría mejorarse incrementalmente haciendo en procmail < $m && rm $mlugar de procmail < $m ; rm $mhacerlo, al menos el mensaje no se eliminará si falla Procmail.
rrauenza
2

Si está usando mutt, puede canalizar el correo electrónico a través de procmail y también eliminar el original de su bandeja de entrada con un comando de teclado similar a este:

muttrc:

macro index y '<enter-command>unset wait_key<enter><tag-prefix><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><tag-prefix><delete-message><enter-command>set wait_key<enter>'

macro pager y '<enter-command>unset wait_key<enter><pipe-entry>/usr/bin/procmail /home/user/.procmailrc<enter><delete-message><enter-command>set wait_key<enter>'

encontrado en https://mikeburnscoder.wordpress.com/2011/06/12/one-big-mutt-inbox-filtered-after-the-fact-using-procmail/

usuario3630647
fuente
1

Parece que no hay una buena solución para esto: procmail solo parece aceptar entradas de correo stdin, lo que limita las aplicaciones de maildir.

Me enfrenté a una situación similar, y la mejor solución que se ajustaba a mis necesidades era simplemente duplicar lo que quería procmailhacer, pero lo que definitivamente no puede hacer, con mi propio pequeño script, que debería ser suficiente si solo tienes una o dos reglas simples que debes cuidar:

cd ~/Maildir/
sh -c 'for i in `egrep -l "^Delivered-To: [email protected]" cur/*`; \
    do mv $i .FreeBSD.perforce/$i; done'

Esto tampoco es óptimo, pero al menos no debería sufrir IO innecesarios y posibles problemas de pérdida de datos.

cnst
fuente