Domanda

Una semplice domanda: voglio spostare le e -mail con un certo soggetto a una cartella e contrassegnarle come letto in seguito. Moving funziona per me con

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

Ma come contrassegnare le posta come lette?

È stato utile?

Soluzione

NOTA: aggiornato dec. 16 ° 2011

Soluzione Procmail

La seguente ricetta funziona per me. .Junk è la cartella 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"
}

Soluzione MailDrop

Prefazione: Recentemente avevo (no, volevo) fare la stessa cosa con un MailDropfilter. Dopo aver letto man maildropfilter Ho inventato la seguente ricetta. Sono sicuro che le persone troveranno questo a portata di mano - lo so che lo faccio.

L'esempio seguente segna nuove e -mail come lette ma anche vecchi messaggi non letti.

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"
  }
}

Nota che il exception Il comando potrebbe leggere controintuitivo. Il manuale afferma quanto segue:

L'istruzione eccezionale intrappola errori che normalmente causerebbero la risoluzione di MailDrop. Se si riscontra un errore fatale ovunque all'interno del blocco di istruzioni racchiuse dalla clausola di eccezione, l'esecuzione riprenderà immediatamente in seguito alla clausola di eccezione.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top