Procmail: muévase a la carpeta y marque como lee
-
28-10-2019 - |
Pregunta
Una pregunta simple: quiero mover correos electrónicos con un cierto sujeto a una carpeta y marcarlos como leída después. Mover funciona para mí con
:0: H
* ^Subject:.*(ThisIsMySubject)
$HOME/mail/ThisIsMyFolder
¿Pero cómo marcar los correos como leídos?
Solución
Nota: Dic. 16 de 2011
Solución de procmail
La siguiente receta funciona para mí. .Junk
es la carpeta de spam:
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"
}
Solución de maildrop
Prefacio: Recientemente tenía (no, quería) hacer lo mismo con un maildropfilter. Despues de leer man maildropfilter
Incubié la siguiente receta. Estoy seguro de que la gente encontrará esto a mano, sé que sí.
El ejemplo a continuación marca nuevos correos electrónicos como leídos, pero también no lee mensajes antiguos.
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 exception
El comando puede leer contraintuitive. El manual establece lo siguiente:
La declaración de excepción atrapa errores que normalmente harían que Maildrop finalice. Si se encuentra un error fatal en cualquier lugar dentro del bloque de declaraciones encerradas por la cláusula de excepción, la ejecución se reanudará inmediatamente después de la cláusula de excepción.