Procmail:移动到文件夹并标记为已读

时间:2011-05-04 11:47:13

标签: procmail

一个简单的问题: 我想将具有特定主题的电子邮件移动到文件夹,然后将其标记为已读。移动为我工作

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

但是如何将邮件标记为已读?

1 个答案:

答案 0 :(得分:13)

注意:更新了dec。 2011年第16期

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

Maildrop解决方案

前言:最近我(不,我想)用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终止。如果在任何地方遇到致命错误   由exception子句包含的语句块,执行   将在例外条款之后立即恢复。