使用 SpamAssassin 和 sa-learn 处理项目

使用 SpamAssassin 和 sa-learn 处理项目

我已经花了一段时间来让 SpamAssassin 运行起来,而且已经快完成了。但是,还有最后一个问题困扰着我,我似乎无法弄清楚。我搜索了一番,但无法找到一个我认为有说服力的答案,所以我只想要一点清晰的答案,这样我晚上就能睡得更好了。

我读到过,SpamAssassin 至少需要 200 条消息,最好是 1000 条消息才能有效地进行贝叶斯过滤。我一直通过发出以下命令向其提供垃圾邮件(至少我认为是这样):

sa-learn --showdots --mbox --spam spamfolder

据我所知,它正在由 SpamAssassin 处理。因此我运行:

sa-learn --dump magic

并得到以下输出:

bruticus@bruticus:~$ sa-learn --dump magic
0.000          0          3          0  non-token data: bayes db version
0.000          0        306          0  non-token data: nspam
0.000          0        210          0  non-token data: nham
0.000          0      68430          0  non-token data: ntokens
0.000          0 1318421928          0  non-token data: oldest atime
0.000          0 1319141693          0  non-token data: newest atime
0.000          0 1319142287          0  non-token data: last journal sync atime
0.000          0 1319142287          0  non-token data: last expiry atime
0.000          0          0          0  non-token data: last expire atime delta
0.000          0          0          0  non-token data: last expire reduction count

nspam 和 nham 列中的项目是否具有指示性SpamAssassin 用于贝叶斯分析的实际学习量和消息量是多少?

我是否需要将这两组数字增加到 1,000 以上让 SpamAssassin 真正开始做它的工作或者我如何知道我何时已经向它提供了足够的垃圾邮件以开始正常工作?

答案1

你总是需要垃圾邮件火腿样本。通过仅提供垃圾邮件,SpamAssassin 拒绝激活贝叶斯垃圾邮件过滤器。

通过发出,spamassassin -D < /path/to/a/complete.mail您可以检查贝叶斯过滤是否被激活(在整个调试消息的某处)。

希望您没有使用旧的垃圾邮件(几个月前的垃圾邮件)来训练 SpamAssassin。只有使用您(个人或公司)过去收到的近期垃圾邮件,它才会工作良好。如果您现在没有非垃圾邮件或垃圾邮件样本,您最好将 SA 设置为自动学习。然后过滤器会随着时间的推移而得到训练。这需要更长的时间,您现在看不到好处,但最终的结果会让您印象深刻。


是的,您的数字显示的是“当前”学习到的消息。如果这些数字大于 200,那么您就完蛋了。以上所有内容只会使其“更安全”,即“更有效”或“更准确”。通过自动学习,这些数字会随着时间的推移而增加,也会随着旧邮件的统计数据随着时间的推移而减少。

相关内容