Uwaga: Zaktualizowano dec. 16-te 2011
rozwiązanie Procmail
Poniższy przepis działa na mnie. .Junk
to folder spam:
rozwiązanie
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
Wstęp: Ostatnio miałem (nie chciałem), aby zrobić to samo z maildropfilter. Po przeczytaniu man maildropfilter
wymyśliłem następujący przepis. Jestem pewna, że ludzie to przydadzą - wiem, że to robię.
Poniższy przykład oznacza nowe wiadomości e-mail jako przeczytane, ale także nieprzeczytane stare wiadomości.
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"
}
}
Należy zauważyć, że polecenie exception
może być niezgodne z intuicją. Instrukcja zawiera następujące informacje:
W instrukcji wyjątku są wychwytywane błędy, które normalnie powodują, że mailowanie zostanie zakończone na . Jeśli w dowolnym miejscu w ciągu zostanie napotkany błąd krytyczny, blok instrukcji dołączony do klauzuli wyjątku, wykonanie zostanie wznowione natychmiast po klauzuli wyjątku.
Zależy od MUA. Niektóre oznacz jako przeczytane przez dodanie nagłówka, niektóre kodują je w nazwie pliku (jeśli używasz maildir, spróbuj dodać "," na końcu nazwy pliku ... Myślę, że to było przecinek), inni mają sekret indeks gdzieś, co jest trudno dostępne spoza MUA. – tripleee