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.
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