![maildrop重新过滤已经存在的收件箱](https://linux22.com/image/636962/maildrop%E9%87%8D%E6%96%B0%E8%BF%87%E6%BB%A4%E5%B7%B2%E7%BB%8F%E5%AD%98%E5%9C%A8%E7%9A%84%E6%94%B6%E4%BB%B6%E7%AE%B1.png)
我正在使用 .qmail 中的 maildrop 和 spamassassin(在 uberspace.de 主机上),并修改了我的过滤器设置。现在我想“重新过滤”我的收件箱,因为它包含大约 5000 封垃圾邮件,现在这些邮件可以得到正确处理。有没有办法手动运行 maildrop,使用我现有的收件箱(或其副本)作为输入,以便再次过滤所有邮件?
答案1
我不用 Maildrop,但它是一个投递代理。除非 maildrop 在您的设置中负责通过 spamassassin 传递邮件,否则您很可能不应该调用 maildrop,至少不应该直接调用。
您可能想看一下 procmail,它是一种非常灵活的工具,用于在 STDIN 上接收邮件并对其执行各种规则。例如,您可能希望首先将邮件通过 spamassassin 传递以获取新的垃圾邮件标头,然后传递它们。Procmail 本身通常用作传递代理,但如果这很重要,我相信您可以让它将邮件传递给 maildrop 进行传递。例如,maildrop 可能正在做一些索引工作,以使您的 IMAP 系统更高效。
好的,如果 maildrop 进行了过滤,那么您应该能够将您的邮件通过管道传输到 maildrop。
具体如何操作取决于您当前电子邮件的邮箱格式。Maildrop 可以发送到 mbox(每个邮件目录一个文件)或 maildir(每个电子邮件一个文件),但 maildir 是更可能的格式。如果您使用的是 mbox,请告诉我,但目前我假设是 maildir。
在给定的 maildir 目录中,有new
、cur
和 的子目录tmp
。您的邮件可能全部在 中cur
,但如果自邮件送达后您没有访问过邮箱,则邮件可能在 中new
。我会避免尝试处理 中的内容tmp
,因为它应该是空的。
你想在 bash 中做这样的事情:
sudo -i
cd [your Maildir]
find cur new -type f | while read FILENAME ; do
su vmail /usr/bin/maildrop -d [recipient] < "$FILENAME"
done
这是基于对 debian 系统的观察,尽管正如我所说,我不使用 maildrop,而且这未经测试。如果使用 postfix,请查找maildrop
中的条目/etc/postfix/master.cf
,您应该会获得适合您的操作系统发行版的正确用户和路径等。
maildrop 的文档在这里:http://www.courier-mta.org/maildrop.html
但请注意,spamassassin 在这里所能处理的事情比原始投递要少得多。例如,它无法在黑名单中查找发送 IP,无法仔细检查 SMTP 协议的(误)使用等。