我使用 postfix 和 amavis 以及 spamassassin 过滤垃圾邮件,然后再将所有内容转发到 Exchange 服务器。我经常收到 spamassassin 无法捕获的邮件,更糟糕的是,它们被自动识别为普通邮件。
所以我开始收集它们并以纯文本形式导出它们,并想重新训练这些邮件,将它们标记为垃圾邮件。
从我目前所读到的内容来看,您不必指定任何要“重新”训练邮件的内容。您只需运行它,--spam
它就会忘记该邮件是正常邮件,并将其训练为垃圾邮件。
但观察sa-learn --dump magic
表明,它保留了自动学习的火腿条目并将其添加到垃圾邮件中。
我的想法是,Exchange 以某种方式编辑了邮件,因此,当导出并将其放回 postfix 服务器时,它与之前的邮件不同。可能是这样吗?如果是这样,有没有办法做我计划要做的事情,例如删除一些标题?
答案1
当您重新让 SpamAssassin 知道某封邮件应该是垃圾邮件时,它应该将这封邮件从正常邮件转换为垃圾邮件或从垃圾邮件转换为正常邮件。问题是 SpamAssassin 在您的中继主机上了解了该邮件,但是当它被转发到您的 Exchange 服务器时,由于添加了附加的 Received 行,因此标头发生了变化。您可以通过将以下内容添加到您的 SpamAssassin 配置中来尝试一下:
bayes_ignore_header Received
这将使 SpamAssassin 在使用贝叶斯过滤时忽略已接收的标头。我个人并不赞成这样做,因为它会限制贝叶斯过滤器所看到的内容以及我可以使用哪些内容来确定某封邮件是正常邮件还是垃圾邮件。
您可能需要重新考虑是否要启用自动学习。在大多数情况下,它会污染您的数据库,因为更多的正常和垃圾邮件将被错误标记。如果您想用最新的正常和垃圾邮件训练您的数据库,最好同时设置一个正常和垃圾邮件帐户,接收可标记为正常或垃圾邮件的可信邮件,并每隔 X 小时/分钟学习一次。但这是一个更困难的设置,需要一些时间才能正常工作。