spamassassin :spamassassin

更新时间:2024-09-21 10:47

SpamAssassin 是一种安装在邮件伺服主机上的邮件过滤器,用来辨识垃圾信。它是使用大量的预设规则检查垃圾信,这些规则会检查寄到网域内所有邮件的标头,内文,以及送信者。他采取的过滤方式是采用记分制,也就是说会根据我们所设定的标准来给予分数超过标准值的时候即判定为 SPAM(垃圾邮件)。

正文

优势

1、SpamAssassin使用大量的、不同类型的规则和权重来判断垃圾邮件,那些已经被证实有效的规则会被赋予较高的权重用以区分垃圾邮件和非垃圾邮件。

2、既便于调整每一个规则的得分,又便于添加新的、基于正则表达式的判断规则。

3、SpamAssassin适用于各种系统的电子邮件环境,快速识别受信信源或是识别新的垃圾邮件类别。

4、通过建立一个俗称“垃圾邮件陷阱”的电子邮件地址(这种电子邮件地址的唯一作用就是将所有的垃圾邮件都转发给垃圾邮件信息交换中心),SpamAssassin能够随时向不同的垃圾邮件信息交换中心报告新的垃圾邮件信息

5、SpamAssassin是一个自由软件,它基于GUN的公共许可或是Perl的AL进行分发。这两个分发许可都允许用户自由修改该软件,并强制其以相同的分发许可再次分发该修改。

聚丙烯酰胺assassin的工作原理

SpamAssassin可以通过许多方法来检验一封电子邮件到底是不是垃圾邮件:

1、检查电子邮件的首部信息是否符合各种Internet标准(例如:数据的格式是否正确?)

2、检查电子邮件的首部和内容部分的信息是否包含一些垃圾邮件中常见的、用各种语言写成的短语或是句子(例如:“快速致富”或是退定该邮件的一些方法描述)。

3、将首部和内容部分的“校验和”与多个垃圾邮件信息在线数据库中的“校验和”作比较来确认垃圾邮件。

4、检查邮件发送者的IP地址是否在一些在线的站点列表中(这是一些已经被垃圾邮件发送者利用,或是怀疑被垃圾邮件发送者利用的站点)。

5、自定义地址、主机名和域名的白名单(白名单中的邮件不会作为垃圾邮件)和黑名单(上了黑名单的邮件会被当作垃圾邮件)。SpamAssassin可以根据用户邮件的历史记录自动构建白名单。

6、使用人为指定的一些垃圾邮件(通常成为spam)和非垃圾邮件(通常成为ham)的例子来训练SpamAssassin识别用户收到的各种不同的垃圾邮件。

7、使用SPF协议(sender Policy Framework)比较邮件发送系统的IP地址和邮件发送人的域名,来确定该邮件发送系统是否允许该域名下的用户发送邮件。这是SpamAssassin 3.0中增加的新特性。

8、SpamAssassin会优先排除那些愿意使用Hashcash形式的邮件发送者(使用Hashcash形式会作一些附加计算,消耗一些时间)。因为垃圾邮件发送者如果支持这些附加计算,就不能迅速发送大量垃圾邮件了。这是SpamAssassin 3.0中增加的新特性。

9、SpamAssassin将信息格式验证、内容过滤和参考网络黑名单这三种方式相结合。基于过滤的系统要求用户参与,而且会引起邮件收发时的系统延迟。还有其他一些反垃圾邮件的方法,这些方法都各有利弊,,其中一些可以还可以用来替代SpamAssassin。

10、在一个挑战/应答系统中,系统会暂存一个陌生发送者发送的所有信息,并返回一个特定代码或是一组指令作为一个挑战。陌生发送者必须以某种方式作出应答,以验证其邮件地址,并证实(通常使用交谈的方式)发送者是一个人而不是一个自动垃圾邮件发送程序。如果发送者应答成功,系统就会真正接受该信息。

11、在灰名单系统中,当邮件服务器遇到陌生的邮件发送人或是陌生的邮件发送系统时,它先返回一个临时的SMTP失败代码。如果上述的邮件发送系统在经过一个合理的时间间隔后,试图重新发送邮件,邮件服务器会正常接收该邮件,及随后来自于该邮件发送系统的其他邮件(译注:邮件服务器认为这不是一个发送垃圾邮件的邮件发送系统,因此同意接收邮件)。因为当垃圾邮件发送者遇到上面的临时SMTP错误时,通常会把它当作永久性错误,或是试图在灰名单规定的时间间隔内连续多次发送该邮件,于是邮件服务器就会拒绝接收来自这个邮件发送系统的邮件(译注:邮件服务器认为这就是一个发送垃圾邮件的邮件发送系统,因此拒绝接收邮件)。

12、在限时地址系统中,一个电子邮件地址可以衍生出多个唯一性变体地址,用户可以在不同的web表格、电子邮件或是新闻组等需要电子邮件地址的地方分别填写不同的变体地址。可以限定这些变体地址的有效时间,也可以通过“激活”方式来激活某个原来无效变体地址。在这些系统中,如果用户的某一个变体地址收到了垃圾邮件,那么他(或她)就能轻易的找到发送垃圾邮件的公司(或是那些把你的邮件地址买给垃圾邮件发送者的公司),用户只需要取消这个变体地址就可以阻止垃圾邮件了。

13、在小额付费系统中,邮件发送者每次发送邮件都必须付费(金额很小),这样一来发送大量的垃圾邮件就会导致高额的开销。在一些类似的系统中,如果收件人确认其收到的不是垃圾邮件,则小额付费会返还给邮件发送者。(SpamAssassin 3.0中通过Hashcash的方式来支持小额付费的一个变体,在这个变体中小额付费演变为Hashcash中处理时间的消耗而不是真的付钱。)

邮件系统和SpamAssassin

SpamAssassin的组织结构

虽然可以手动运行SpamAssassin来检查单个邮件,但是只有自动运行SpamAssassin扫描所有邮件,才能真正发挥SpamAssassin的威力。可以有多种方法实现上面提到的自动运行SpamAssassin并扫描所有邮件:

图1-1显示了一个典型的邮件传输过程。邮件发送系统先连接收件人所属的Qmail,将邮件传递给MTA。如果收件人属于这个MTA,则MTA将邮件转交给本地的MDA,MDA负责将收到的邮件保存在用户的私人邮箱中。多个用户可以同时登陆到系统上,直接从邮箱中读取邮件,这是多用户unix系统中的典型方式;系统也可以启动POP或是IMAP服务,客户使用支持POP或是IMAP的邮件客户端程序将邮件下载到本地阅读。

SpamAssassin可以运行在上面提到的三个地方:MTA、MDA和POP代理。这三种方式各有千秋。

SpamAssassin运行在Qmail

一些MTA会在SMTP事务中执行邮件过滤操作;另一些MTA则在SMTP事务结束后才执行邮件过滤操作。垃圾邮件检测就是适于在MTA上执行的过滤操作之一,病毒检测也算一个。通常每个MTA都有自己的过滤守护进程,这类过滤守护进程是调用SpamAssassin以完成垃圾邮件检测的理想位置。

因为发送给某主机上特定用户的邮件必须通过MTA来传递,因此通常可以在MTA上实现集中式的垃圾邮件检测。如果你是在一个“同时为多个内部系统提供邮件服务”的网关型Qmail环境下工作,你同样可以在网关型MTA上加入垃圾邮件检测功能,这样可以同时减少多个内部系统中的垃圾邮件的数量。

“基于MTA的过滤”除了可以标识垃圾邮件以外,还可以做一些其他的事情,例如:实现邮件拒收功能(如果在SMTP事务中执行过滤,可以通过“拒绝SMTP事务完成”来实现;如果在SMTP事务结束后执行过滤,则可以通过“抛弃该邮件”来实现),或是将邮件重定向到隔离区中。如果MTA上已经运行了一个用于病毒检测的过滤系统,通常可以使用相同的过滤系统来执行垃圾邮件检测,二者共享与过滤系统相关的一些开销(overhead)。

单独在Qmail上部署的过滤系统的缺点在于当过滤系统没有访问“收件人自定义规则信息”的访问权限时,或是当收件人与该MTA不在同一个主机上时,或是当一个邮件同时发送给同一个系统上的多个收件人时,部署在MTA上的过滤系统可能无法根据每个收件人的喜好(译者注:一些用户自定义的规则)来执行可定制的过滤操作。

SpamAssassin运行在MDA上

大多数的unix系统中都使用procmail这个MDA,procmail可以向SpamAssassin提交邮件信息,并处理SpamAssassin反馈的结果。“单独安装,并配合MDA执行”是SpamAssassin最典型的使用方式,因为它不要求MTA提供任何明确的过滤接口支持。

这种配置方式可以提供最大的灵活性。系统级SpamAssassin规则可以应用于系统中的所有邮件,而每个用户都可以在自己的个人SpamAssassin规则配置中补充或修改系统级SpamAssassin规则。显然MDA肯定知道它所服务的收件人的具体情况,并能够访问其自定义信息(译者注:这与MTA中的情况完全不同)。那些精于编写procmail配置脚本的用户可以完全控制“被标识为可能是垃圾邮件的”邮件信息的处理过程;procmail会根据脚本中的指令选择丢弃这些邮件,或是以文件的形式保存到一个单独的收件箱中,或是修改邮件的头部信息,或其他任何操作。

在MDA上使用SpamAssassin的缺陷在于,只有MDA系统接收了邮件后,其垃圾邮件检测功能才起作用,而此时已经浪费了一些系统资源。另一个缺点是,在网关型MTA环境下,垃圾邮件检测工具必须同时安装在多个具有本地收件人的MDA系统上,而不是仅仅安装在集中的MTA网关上。

SpamAssassin运行在POP代理上

有些POP邮件的用户想使用SpamAssassin的垃圾邮件检测功能,但其POP服务器并不支持SpamAssassin。这些用户可以使用一个代理来执行垃圾邮件检测。这个代理运行在客户端的计算机上与POP邮件读取程序集成在一起,并在通过POP协议下载POP邮件时扫描邮件内容。

Windows平台上最知名的SpamAssassin POP代理是Stata labs的SAproxy产品。SAproxy Pro是一个商业产品,但是它本身仍然是一个开源软件,并且遵循与SpamAssassin相同的分发许可。想要使用该产品的系统管理员可以下载并编译其代码,并提供给用户使用。

使用代理是分散性最强的一种垃圾邮件检测方式,邮件服务器可以自由接收所有的邮件,由代理根据客户的标准自行处理邮件。代理一方面增加了邮件服务器的存储负载,另一方面也完全取消了邮件服务器上用于垃圾邮件检测的计算负载,因为所有的垃圾邮件检测工作都由客户端来完成。

SpamAssassin同时运行在多个位置上

SpamAssassin最可能的运行情况是同时运行在上面描述的两个、甚至是三个位置。一个基于MTA的过滤系统中使用的SpamAssassin应该做保守配置,用来过滤那些高危信息。同一个系统中的Qmail过滤可以使用比较自由的规则定义,并为用户提供自定义规则设定以标识垃圾邮件,因为有些用户需要直接在服务器上读取邮件。最后,POP邮件用户可以在客户端的机器上使用SAproxy来自定义垃圾邮件检测规则。

邮件扫描策略

如果你是一个提供邮件服务的ISP,有一些客户可能希望(甚至是要求)你提供标识垃圾邮件或是过滤垃圾邮件的功能,而另一些客户却并不需要这种标识或是过滤功能(因为他们的垃圾邮件不是很多,他们并不介意这个问题,或是他们害怕正常的邮件被错误的作为垃圾邮件标识或是过滤掉了。)

在你实现系统级或是站点级的垃圾邮件检测之前,请仔细考虑客户的需求和你对他们所负有的责任。你至少应该将任何无条件的垃圾邮件检测行为通知你的客户(和潜在客户)。然而更好的方法是只为那些选择了开放垃圾邮件检测功能的用户提供相应的服务。最好的方法是允许每个客户自定义垃圾邮件检测的配置设定,并指定用于确认垃圾邮件的阈值。

不但能标识垃圾邮件,而且可以过滤垃圾邮件(或阻止垃圾邮件打扰用户),这才是最重要的。

SpamAssassin是一个区分垃圾邮件和非垃圾邮件的优秀工具,但是只有当你的用户确实需要这种功能的时候才应该使用它。

参考资料

免责声明
隐私政策
用户协议
目录 22
0{{catalogNumber[index]}}. {{item.title}}
{{item.title}}
友情链接: