如何用Procmail过滤器将指定文件夹内所有邮件标记为已读
Procmail配置:自动将指定文件夹的邮件标记为已读
你现有将主题含WJZ4GGZ的邮件存入Instantly Warmup文件夹的Procmail规则如下:
:0 * ^Subject: .*WJZ4GGZ.* "$HOME/.Maildir/.Instantly Warmup/"
要实现自动将该文件夹内的邮件标记为已读,且不影响其他文件夹的未读状态,可以通过修改规则,在投递后调整Maildir邮件的状态标记:
:0 * ^Subject: .*WJZ4GGZ.* { # 将邮件投递到目标文件夹的new子目录(默认未读状态) :0 "$HOME/.Maildir/.Instantly Warmup/" # 构造已读状态的文件路径:替换new为cur,并移除未读标记,N :0 | mv "$LASTFOLDER" "$(echo "$LASTFOLDER" | sed -e 's/new/cur/' -e 's/:2,N/:2,/')" }
说明:
- Maildir格式中,
new/目录存放未读新邮件,文件名末尾带有:2,N标记;cur/目录存放已读/已处理邮件,文件名标记为:2,(无N)。 $LASTFOLDER是Procmail内置变量,记录刚投递完成的邮件文件路径。- 通过
sed替换目录和状态标记,再用mv移动文件,直接将邮件转为已读状态,不会影响其他文件夹的邮件。
内容的提问来源于stack exchange,提问作者Digital Joe George
相关产品推荐
相关产品推荐

