背景:
我正在下载我的twitter提要并将它们保存到文本文件中,我想使用perl脚本和Mail::SpamAssassin检查垃圾邮件的可能隐藏。因此,我跟踪这个职位关于从文本加载消息。在我的if语句中,我的所有消息都被标记为“非垃圾邮件”,即使是419个骗局。
问题
详细信息:
代码:
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的文件,但我没有碰它
发布于 2014-01-28 18:15:55
我写了一个答复(下面)没有注意到你是如何开始这个问题的。“我正在下载我的推特提要并将它们保存到文本文件中”是关键。非常关键。具体来说,SpamAssassin用于扫描email,其中包含来自标头的丰富元数据。Twitter提要没有标题。
我在twitter上看到的最好的垃圾邮件对抗技术,大多是学术研究,而不是可用的代码,涉及到密切的链接图,跟踪追随者并为每个用户建立声誉。这几乎是推特中唯一可用的元数据,所以SpamAssassin除了推特("body")内容本身之外,没有什么可做的。
当然,贝叶斯机制可能会有所帮助,尽管它也是由邮件头和特定于电子邮件的标记技术组成的。URI DNSBLs也是如此,但是其他查找(Razor2、Pyzor、所有DNSBLs)也是无用的,大约99%的正则表达式规则签名也是无用的。(还请注意,许多在线索引是为实时查找而调优的,因此过期旧条目,因此,如果您扫描几天前的垃圾邮件,它可能不再有条目,即使曾经有过。)
你最好使用一些只包含内容的垃圾邮件过滤器。如果您有足够大的消息集合,您可以在子集上训练一个基于贝叶斯的过滤器,然后在其余的部分上运行它。如果这是一个持续的努力,纠正它的错误,当你发现它们的时候,它应该随着时间的推移而改善到一些有用的东西。
如果您真的想使用SpamAssassin,请阅读这个答案的其余部分。记住,我写它的前提是你收到了真实的rfc5322 (最初是rfc822)电子邮件。
有两种可能性:调用问题 (SpamAssassin未正确运行或未正确提取判决)或有效性问题 (SpamAssassin运行但没有达到所需的准确性,在本例中为假阴性问题)。
下面是古特贝测试字符串:
XJS*C4JDBQADN1.NSBN3*2IDNEN*GTUBE-STANDARD-ANTI-UBE-TEST-EMAIL*C.34X要在两者之间进行诊断,请将上述GTUBE测试字符串添加到测试消息中(复制真实消息并将该字符串包含在正文中),然后再次尝试运行代码。
调用问题:尝试启用调试。把你的输出粘贴在这里。我需要更多的线索来诊断这类问题。
功效问题:您可以通过确保您拥有封锁名单 (DNSBLs和URI DNSBLs)和网络插件(例如剃刀、皮佐尔),并确保您是活跃的训练Bayes (采用200+垃圾邮件和200+ hams),从而从根本上改进SpamAssassin的结果。在spamtips.org终极设置指南上也有很好的提示。
如果您需要在一个特定的垃圾邮件示例上提供进一步的帮助,您将不得不发布消息,如果可能的话,只需进行有限的编辑,就可以将其保留下来,例如Pastebin.com (如果它足够短,您可以将其粘贴到StackOverflow,但大多数垃圾邮件并不短)。
https://stackoverflow.com/questions/17367468
复制相似问题