Примечание: Обновлено решение. Шестнадцатый 2011
решение Procmail
Следующий рецепт работает для меня. .Junk
это спам папка:
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"
}
почтовый адрес для решения
Предисловие: Недавно у меня был (нет, я хотел), чтобы сделать то же самое с maildropfilter. Прочитав man maildropfilter
, я придумал следующий рецепт. Я уверен, что люди найдут это под рукой - я знаю, что знаю.
Приведенный ниже пример отмечает новые сообщения электронной почты как прочитанные, а также непрочитанные старые сообщения.
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"
}
}
Обратите внимание, что команда exception
может прочитать нелогичным. В руководстве указано следующее:
Инструкция исключения содержит ошибки, которые обычно вызывают maildrop для завершения. Если фатальная ошибка встречается где угодно в пределах блока операторов, заключенных в предложении исключения, выполнение будет немедленно возобновляться после предложения исключения.
В зависимости от вашего MUA. Некоторые отмечают как чтение путем добавления заголовка, некоторые кодируют его в имени файла (если вы используете maildir, попробуйте добавить «,» в конец имени файла ... Я думаю, что это была запятая), у других есть секрет индекс где-то трудно получить доступ извне MUA. – tripleee