使用 SpamAssassin 控制垃圾邮件
生产未经请求的商业电子邮件
(UCE) 或垃圾邮件的人是信息时代
的大盗,他们发送药品、计时器
、快速赚钱和美女的信息。我们必须付费
的大量带宽被这些
骗子消耗。收到这些邮件后,我们不得不浪费
时间浏览收件箱并删除垃圾。此外,
与杂志、报纸、商业广播和
电视不同,广告会降低成本或使内容
免费,而垃圾邮件对我们这些读者或观众来说没有任何回报。
作为读者或观众。
虽然我们不能阻止垃圾邮件,但有些工具可以简化
垃圾邮件的处理。其中一个工具是
SpamAssassin,它会检查每封传入的电子邮件,并
评估该电子邮件是垃圾邮件的概率。垃圾邮件
被赋予很高概率的消息会被标记
为垃圾邮件,其他程序(例如 Evolution)
、KMail 或 Procmail 可以轻松处理被标记的
电子邮件。
SpamAssassin 的工作原理是检查电子邮件并查找
与垃圾邮件或非垃圾邮件相关的
内容,这些内容会为电子邮件的分数增加或减少
分数。例如,Viagra 这个词,以及
Viagra 的类似拼写错误(因为它们被用于
许多医药垃圾邮件中)会增加
总分。另一方面,电子邮件中有效的发件人策略
框架 (SPF) 记录(显示
发件人位置未被伪造)会降低
分数。默认情况下,总分达到
五分或以上的任何消息都被认为是垃圾邮件。
上述计算的一个问题是,对于您的
计算机来说,这是一项相当大的工作量,因此如果您的
机器目前正承受着繁重的工作负载,
或者如果您需要处理大量电子邮件,您可能需要
考虑升级硬件(更快的 CPU 芯片和/或
更多内存),然后再启动 SpamAssassin。
许多 Linux 发行版默认包含 SpamAssassin
。如果您的发行版不是其中之一,则应该
很容易添加。如果您有基于 Debian 的
发行版,那么就像启动一个
终端窗口并输入
sudo apt-get install spamassassin
安装完成后,您可以开始调整 SpamAssassin 的
设置。 SpamAssassin 的配置文件位于
~/.spamassassin/user_prefs 。第一个设置是
required_score
required_score 5
无论您如何设置,SpamAssassin 都不是完美的
。有一些垃圾邮件会被允许
通过,并且一些有效的电子邮件将被归类为垃圾邮件。配置过程的
目标是确保
这种情况尽可能少地发生。五分对于大多数人来说是一个极好的
折衷方案。但是,如果您
发现自己有很多垃圾邮件通过
作为非垃圾邮件,即使在采取了以下
配置步骤之后,您可能需要将该数字降低到
四分或三分(或者可能更低)。另一方面,如果您
在配置后发现有很多
真实电子邮件被识别为垃圾邮件,您可能需要提高
required_score。
有些人您总是想听到
他们的消息,或者至少总是希望他们的电子邮件
通过,例如同事和家人。还有一些
人您再也不想听到他们的消息,例如
讨厌的前任。 SpamAssassin 通过使用
白名单和黑名单来处理这些
情况。来自白名单上的人的电子邮件会从分数中减去 100
;黑名单上的任何人都会加 100 分。
要将某人添加到您的
白名单/黑名单,您需要将类似以下的内容添加到 user_prefs 中
添加到 user_prefs
whitelist_from niceperson@somedomain.somewhere blacklist_from nastyperson@somedomain.somewhere
有些人有特定的理由想要更改
特定的垃圾邮件测试。例如,在珠宝店工作或手表
收藏家可能希望允许
Rolex 一词被强调的消息,
并接受这样做也会增加
他们将看到的与复制手表相关的垃圾邮件的数量。
有一个 SpamAssassin 测试列表,网址为
spamassassin.apache.org/tests.html. 例如,要更改
当 Rolex 一词被
强调时,电子邮件获得的分数,从而降低
此类消息被标记为垃圾邮件的可能性,请将
以下行放在 user_prefs 中
score EM_ROLEX 0
如果仍然有太多合法的 Rolex 品牌手表相关
电子邮件消息被标记为垃圾邮件,则可以将上述
更改为负数。
默认情况下,SpamAssassin 假定一些
亚洲语言的电子邮件(最明显,但不仅限于
中文、日语和韩语)可能是垃圾邮件。如果您使用其中一种语言,这
会成为一个问题。要允许亚洲语言,您需要
通过删除 user_prefs 最后四行开头的 # 字符来取消注释一些行。
通过删除 user_prefs 最后四行开头的 # 字符来取消注释一些行。
现在,让我们进一步完善 SpamAssassin 的品味。我
第一次运行 SpamAssassin 令人
失望。在约 2,200 封垃圾邮件中,只有
约 10% 被正确识别为垃圾邮件。
幸运的是,SpamAssassin 有一个名为 sa-learn 的
实用程序,它可以“教” SpamAssassin
您认为是垃圾邮件和非垃圾邮件(ham)的邮件。此
过程极大地提高了 SpamAssassin 正确识别
垃圾邮件消息的能力。这里的技巧是
创建文件夹,一个文件夹中填充垃圾邮件,另一个文件夹中填充
您想要保留的材料,然后将
每个文件夹输入到 sa-learn 中。使用 Evolution 电子邮件
程序,我创建了一个名为 BULK 的文件夹,然后
手动将所有垃圾邮件消息放入该
文件夹。接下来,我使用以下
命令运行 sa-learn 程序
sa-learn --mbox --spam ~/.evolution/mail/local/BULK
Evolution 将其所有电子邮件存储在 mbox 邮件
格式中,因此上述命令中使用了 --mbox 选项。对于我保存在收件箱文件夹中的非垃圾邮件消息,该命令是
格式中,因此上述命令中使用了 --mbox 选项。对于我保存在收件箱文件夹中的非垃圾邮件消息,该命令是
sa-learn --mbox --ham ~/.evolution/mail/local/Inbox
SpamAssassin 使用的学习系统在大约 1,000 封垃圾邮件和 1,000 封非垃圾邮件消息
左右开始变得良好。除了一个小的例外,
在看到超过 5,000 封电子邮件消息
之前,该系统不会显着改进。小的例外与
垃圾邮件是一个移动的目标这一事实有关。一些垃圾邮件发送者一直在寻找
垃圾邮件发送者一直在寻找
绕过过滤程序的更好方法,并不断更改
他们的垃圾邮件。这意味着您
需要定期使用新的
垃圾邮件和新的非垃圾邮件重新训练 SpamAssassin。重新训练的
频率取决于您的情况,但基本上,只要您看到垃圾邮件通过
SpamAssassin 的数量明显增加,就需要进行重新训练。尽管如此,通过训练,
SpamAssassin 的数量明显增加,就需要进行重新训练。尽管如此,通过训练,
是有可能达到超过 99% 的垃圾邮件检测准确率的。
请记住,SpamAssassin 会记住它以前见过的电子邮件,所以虽然有些人可能
可能想通过 sa-learn 运行相同的 1,000 封电子邮件五次,但
可能想通过 sa-learn 运行相同的 1,000 封电子邮件五次,但
这样做只是浪费时间。
让我们看看 SpamAssassin 实际是如何评估示例
电子邮件的。为了进行测试,我创建了一个简单的文本文件,
testmail.txt,内容如下
From: MyUserID@SomeDomain.Somewhere To: aliceithink@somedomain.somewhare Date: Sat, 2 Dec 2006 13:34:50 -0400 (EDT) Subject: Back from vacation Alice, I am back from vacation, anything important happen when I was away? Colin McGregor
然后,我使用以下
命令将 SpamAssassin 作为测试运行
spamassassin -t testmail.txt
我收到了类似以下的输出
From: MyUserID@SomeDomain.Somewhere To: aliceithink@somedomain.somewhare Date: Sat, 2 Dec 2006 13:34:50 -0400 (EDT) Subject: Back from vacation X-Spam-Checker-Version: SpamAssassin 3.0.3 (2005-04-27) on diamond X-Spam-Level: X-Spam-Status: No, score=-5.9 required=5.0 tests=ALL_TRUSTED,BAYES_00, NO_REAL_NAME autolearn=ham version=3.0.3 Alice, I am back from vacation, anything important happen when I was away? Colin McGregor Spam detection software, running on the system "diamond", has identified this incoming email as possible spam. The original message has been attached to this so you can view it (if it isn't spam) or label similar future email. If you have any questions, see the administrator of that system for details. Content preview: Alice, I am back from vacation, anything important happen when I was away? Colin McGregor [...] Content analysis details: (-5.9 points, 5.0 required) pts rule name description ---- ---------------- ---------------------------------- 0.0 NO_REAL_NAME From: does not include a real name -3.3 ALL_TRUSTED Did not pass through any untrusted hosts -2.6 BAYES_00 BODY: Bayesian spam probability is 0 to 1% [score: 0.0000]
分数为 -5.9,SpamAssassin 不会将上述
视为实际垃圾邮件。通过编辑 testmail.txt 并重复上述步骤,
视为实际垃圾邮件。通过编辑 testmail.txt 并重复上述步骤,
您可以了解 SpamAssassin 如何对各种
类型的关键词作出反应,尤其是
垃圾邮件中常见的术语,例如奢侈品牌手表、药品
产品、金融服务条款和/或各种
色情术语。
目前还不清楚阻止垃圾邮件并重新获得垃圾邮件从我们所有人那里窃取的
带宽的灵丹妙药是什么——更好的技术、新的法律还是更好地
强制执行当前实施的法律。结束
垃圾邮件可能需要采取多种行动。在
此期间,SpamAssassin 确实使处理垃圾邮件的
体验不那么痛苦,但并非完全没有痛苦。
体验不那么痛苦,但并非完全没有痛苦。
Evolution 和 SpamAssassin
Evolution 电子邮件显示程序有一个很好的
过滤系统,可以对传入的电子邮件进行排序,但
在识别垃圾邮件方面有点薄弱。
幸运的是,Evolution 允许我们使用外部
程序来帮助进行排序。从主屏幕
单击工具→过滤器。然后,单击 +添加
以创建新规则。您需要为此规则命名,垃圾邮件
应该没问题。接下来,我们要将每封电子邮件的
副本发送给 SpamAssassin,并找出
SpamAssassin 是否将该电子邮件视为垃圾邮件;我们不
关心 SpamAssassin 给出的电子邮件分数,
只关心“是”或“否”。因此,我们将管道连接到程序,然后
丢弃除结果代码之外的所有内容。我们通过以下
指令执行此操作
/usr/bin/spamassassin -e | /dev/null
如果上述命令返回值 0,则表示它
不是垃圾邮件。任何大于 0 的值都意味着我们很可能
有垃圾邮件,并希望将其放入单独的
文件夹中。在图 1 所示的示例中,我正在将
电子邮件发送到标记为 BULK 的文件夹中。完成
上述步骤后,我们希望过滤程序停止并
等待下一封传入的电子邮件。
图 1. 在 Evolution 中创建和编辑规则
如前所述,在同一封电子邮件上多次运行 sa-learn
是浪费时间。在使用 Evolution 和 SpamAssassin
时,这提出了另一点,即当您在 Evolution 下删除
时,该程序不会从
~/.evolution/mail/<file name> 电子邮件文件中删除
电子邮件,而只是
将其标记为将来删除。这样,如果您犯了删除电子邮件的
错误,您可以将其取回。要在 Evolution 下彻底
删除已删除的电子邮件,您
必须单击操作→清理。在您使用 SpamAssassin 的最初几天,
当您可能多次在您的 BULK 文件夹和收件箱文件夹中运行
当您可能多次在您的 BULK 文件夹和收件箱文件夹中运行
时,您可能不仅想要删除以前被 sa-learn 查看过的
电子邮件,还要清理它。
电子邮件,还要清理它。
Colin McGregor 为多伦多地区的慈善机构工作,业余时间做
咨询,并曾担任多伦多自由网络主席。他还担任大多伦多地区
Linux 用户组会议的秘书和偶尔的客座演讲者。
Linux 用户组会议的秘书和偶尔的客座演讲者。
Linux 用户组会议的秘书和偶尔的客座演讲者。