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?

¿Fue útil?

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.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top