2011-05-04 3 views
6

простой вопрос: Я хочу переместить электронные письма с определенным предметом в папку и пометить их как прочитанные впоследствии. Перемещение работает для меня сProcmail: Перейдите в папку и отметьте как

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

Но как пометить письма как прочитанные?

+0

В зависимости от вашего MUA. Некоторые отмечают как чтение путем добавления заголовка, некоторые кодируют его в имени файла (если вы используете maildir, попробуйте добавить «,» в конец имени файла ... Я думаю, что это была запятая), у других есть секрет индекс где-то трудно получить доступ извне MUA. – tripleee

ответ

11

Примечание: Обновлено решение. Шестнадцатый 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 для завершения. Если фатальная ошибка встречается где угодно в пределах блока операторов, заключенных в предложении исключения, выполнение будет немедленно возобновляться после предложения исключения.

+0

Я искал фильтр maildrop, когда нашел ваш вопрос. Но для maildrop я нашел подробное объяснение [здесь] (http://blog.sigil.org/2009/11/mark-as-read-with-maildrop.html) – drumfire