2011-05-04 14 views
6

una pregunta simple: Quiero mover los correos electrónicos con un tema determinado a una carpeta y marcarlos como leídos después. Trabajos en movimiento para mí conProcmail: mover a la carpeta y marcar como leído

:0: H 
* ^Subject:.*(ThisIsMySubject) 
$HOME/mail/ThisIsMyFolder 

¿Pero cómo marcar los correos como leídos?

+0

Depende de su MUA. Algunos marcan como leídos agregando un encabezado, algunos lo codifican en el nombre del archivo (si está usando maildir, intente agregar un "," al final del nombre del archivo ... creo que era una coma), otros tienen un secreto índice en algún lugar al que sea difícil acceder desde fuera del MUA. – tripleee

Respuesta

11

Nota: desc. Actualizado. 16a solución Procmail 2011

La siguiente receta funciona para mí. .Junk es la carpeta de correo no deseado:

solución
MAILDIR=$HOME/Maildir 
:0 
* ^X-Spam-Flag: YES 
{ 
    # First deliver to maildir so LASTFOLDER gets set 
    :0 c 
    .Junk 

    # Manipulate the filename 
    :0 ai 
    * LASTFOLDER ??()\/[^/]+^^ 
    |mv "$LASTFOLDER" "$MAILDIR/.Junk/cur/$MATCH:2,S" 
} 

Maildrop

Prólogo: Hace poco tuve (no, que quería) a hacer lo mismo con un maildropfilter. Después de leer man maildropfilter, he preparado la siguiente receta. Estoy seguro de que la gente lo encontrará a mano, sé que sí.

El ejemplo siguiente marca los correos electrónicos nuevos como leídos pero también los mensajes antiguos no leídos.

SPAMDIRFULL="$DEFAULT/.Junk" 

if (/^X-Spam-Flag: YES$/ || \ 
    /^X-Spam-Level: \*\*\*/ || \ 
    /^Subject: \*+SPAM\*/) 
{ 
    exception { 
    cc "$SPAMDIRFULL" 
    `for x in ${SPAMDIRFULL}/new/*; do [ -f $x ] && mv $x ${SPAMDIRFULL}/cur/${x##*/}:2,S; done` 
    `for x in ${SPAMDIRFULL}/cur/*:2,; do [ -f $x ] && mv $x ${SPAMDIRFULL}/cur/${x##*/}S; done` 
    to "/dev/null" 
    } 
} 

Tenga en cuenta que el comando exception podría leer contrario a la intuición. El manual indica lo siguiente:

La declaración de excepción atrapa los errores que normalmente causarían que maildrop termine. Si se encuentra un error fatal en cualquier lugar dentro de , el bloque de declaraciones encerrado por la cláusula de excepción, ejecución se reanudará inmediatamente después de la cláusula de excepción.

+0

Estaba buscando un filtro de maildrop cuando encontré su pregunta. Pero para maildrop encontré una explicación elaborada [aquí] (http://blog.sigil.org/2009/11/mark-as-read-with-maildrop.html) – drumfire

Cuestiones relacionadas