收到电子邮件后,使用 SpamAssassin 自动重新扫描电子邮件

收到电子邮件后,使用 SpamAssassin 自动重新扫描电子邮件

在过去的几个月里,我收到的垃圾邮件数量让我抓狂。尽管运行垃圾邮件杀手(经过 RBL 检查)Exim4邮件服务器,很多邮件已经进入我们的邮箱。

我注意到,绝大多数违法者最终都会被关进 RBL,但只有它已经被扫描过并且被发现是无害的。通常,当我收到这些邮件时,它们的垃圾邮件分数是 0.0 - 1.1,而一段时间后,分数会是很多更高。

我搜索了一下,但没找到任何有用的东西,于是我编写了一个小程序,可以查看邮箱中最近的邮件,然后让 SpamAssassin 重新分析它们。结果令人震惊:几乎每封进入我邮箱的邮件在投递后 5 到 10 分钟内就超过了 5.0 的门槛有时会花费更长的时间,但到目前为止,它最终总会跨过门槛。

现在,当您实际上正在主动阅读邮箱时,这并不是那么有用,但它可以大大减少我们早上第一次检查电子邮件时手动删除这些邮件所花费的时间。

现在,问题是我编写的程序单独运行,它使用 IMAP 连接到特定邮箱并进行更改。这使我很难将此解决方案用于其他用户,因为我必须知道他们的密码。

是否有任何现有工具允许我重新处理已收到的邮件?我正在使用邮箱目录如果这很重要,请格式化磁盘。如果没有这样的工具,那么直接访问和修改 Maildir 邮箱的库也可以解决问题。

我不想延迟电子邮件递送(通过灰名单或其他方式),因为这种延迟至少需要 10 分钟才能有效,而这在工作时间内是不可接受的。

答案1

这确实是一种非常好的技术,特别是对于打击雪鞋垃圾邮件来说,雪鞋垃圾邮件是一种垃圾邮件,所有电子邮件在几分钟内就会被发送出去。这是因为反垃圾邮件服务器需要大约这么长的时间来处理到达的所有邮件,然后输出垃圾邮件定义。

我不知道有什么现成的软件可以做到这一点本地, 但IMAP 垃圾邮件可能适合您的需求。它通过 IMAP(标准邮件客户端的方式)连接到您的邮箱服务器,并运行 SpamAssassin 为您清理垃圾邮件。


如果您想要在本地运行某个程序,那么您可以编写一个围绕 SpamAssassin 的简单包装器来实现这一点。Maildir 将每条消息存储在其自己的文件中,因此类似这样的程序应该不错:

sa-bootstrap.sh的内容:

#!/bin/sh
for email in "$@"; do
  if ! spamassassin -e < "$email" > /dev/null 2>&1; then
    mv "$email" /full/path/to/spam/folder
  fi
done

现在你可以运行:

find /path/to/maildir -type f -print0 |xargs -0 sa-bootstrap.sh

在删除垃圾邮件之前,不要忘记验证您的垃圾邮件和普通邮件sa-learn

spamassassin -e当给定的消息被判定为垃圾邮件时,将以非零错误代码退出。)

答案2

您是否考虑过打开/关闭灰名单(也按邮箱计算)?

例如,在工作时间关闭灰名单,并在工作时间以外将其打开(对于没有活动 IMAP 会话的用户)。

相关内容