1

背景:

我正在下载我的 twitter 提要并将它们保存到文本文件中,我想使用带有 Mail::SpamAssassin 的 perl 脚本检查可能的垃圾邮件引擎盖。所以我关注了这篇关于从文本加载消息的帖子。我的所有邮件在我的 if 语句中都被标记为“非垃圾邮件”,即使是 419 诈骗邮件也是如此。

问题

  • 我究竟做错了什么?
  • 我必须配置 Spamasssasin 文件吗?
  • 我的消息是否需要采用某种格式?
  • 我的项目有更好的选择吗?

细节:

代码:

use Mail::SpamAssassin;
use strict;
use warnings;


open FILE, "<", ~/Messages/twitter_tweet.ema' or die;
my @lines = <FILE>;

my $spamtest = Mail::SpamAssassin->new();
my $mail = $spamtest->parse(\@lines);
my $status = $spamtest->check($mail);
print $status->get_report();

if ($status->is_spam()) {
    print "Totally Spam\n";
} else {
    print "not spam\n";
}

 $status->finish();
 $mail->finish();
 $spamtest->finish();

输出:

(未找到报告模板)

不是垃圾邮件

笔记:

我没有配置 spamAssasin 我只是开始使用 perl 模块

我的主目录中有一个文件~/.spamassassin/user_prefs,但我没有碰它

4

1 回答 1

0

我写了一个回复(如下),没有注意到你是如何开始这个问题的。“我正在下载我的 twitter 提要并将它们保存到文本文件中”部分是关键。很关键。具体来说,SpamAssassin 旨在扫描电子邮件,并包含来自标头的丰富元数据。Twitter 提要没有标题。

我见过的最好的 twitter 反垃圾邮件技术,主要是学术研究,而不是可用的代码,涉及跟踪追随者并为每个用户建立声誉的密集链接图。这几乎是 twitter 中唯一可用的元数据,因此 SpamAssassin 除了推文(“正文”)内容本身之外别无他法。

当然,可以想象贝叶斯机制可以提供帮助,尽管它同样由标题和特定于电子邮件的标记化技术组成。URI DNSBLs 也可以,但其他查找(Razor2、Pyzor、所有 DNSBLs)是无用的,99% 左右的正则表达式规则签名也是如此。(另请注意,许多在线索引针对实时查找进行了调整,因此旧条目会过期,因此如果您扫描几天前的垃圾邮件,即使曾经有过,它也可能不再有条目。)

最好使用一些仅内容的垃圾邮件过滤器。如果您有足够大的消息集合,您可以在一个子集上训练一个基于贝叶斯的过滤器,然后在其余部分上运行它。如果这是一项持续的努力,请在发现错误时纠正错误,并且随着时间的推移,它应该会改进为可用的东西。

如果您真的想使用 SpamAssassin,请阅读此答案的其余部分。请记住,我是在假设您收到真正的rfc5322(最初是 rfc822)电子邮件的情况下编写的。


有两种可能性:你有一个调用问题(SpamAssassin 没有正常运行或者你没有正确提取判决)或者你有一个效率问题(SpamAssassin 运行但没有预期的准确性,在这种情况下,一个假阴性问题)。

这是GTUBE测试字符串:

XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X

要在两者之间进行诊断,请将上述 GTUBE 测试字符串添加到测试消息(复制真实消息并将该字符串包含在正文中),然后再次尝试运行您的代码。

  • 如果它没有标记为垃圾邮件,则您有调用问题
  • 如果您的 419 没有标记为垃圾邮件,则说明您有功效问题

调用问题:尝试启用调试。在此处粘贴您的输出。我需要更多线索来诊断这种问题。

功效问题:您可以通过确保您拥有阻止列表(DNSBLs 和 URI DNSBLs)和联网插件(例如RazorPyzor)以及您正在积极训练贝叶斯(这需要 200 多个垃圾邮件和 200 多个火腿)来从根本上改善 SpamAssassin 的结果。spamtips.org 终极设置指南也有很好的提示。

如果您需要有关特定垃圾邮件示例的进一步帮助,您必须发布该消息,如果可能的话,使用有限的编辑,一些可以使其保持完整的地方,例如Pastebin.com(如果它足够短,您可以将其粘贴到StackOverflow,但大多数垃圾邮件并不短)。

于 2014-01-28T18:15:55.280 回答