配置Sendmail服务器以防治垃圾邮件
本文介绍了一些在Linux中广泛使用的防垃圾邮件技术,同时也介绍了通过配置邮件传送代理服务器Sendmail来抑制垃圾邮件的具体方法。
随着Internet的发展,电子邮件作为
一种通信方式逐渐普及。当前电子邮件的用户已经从科学和教育行业发展到了普通家庭中的用户,电子邮件传递的信息也从普通文本信息发展到包含声音、图像在内的多媒体信息。电子邮件的廉价和操作简便在给人们带来巨大便利的同时,也诱使有些人将之作为大量散发自己信息的工具,最终导致了互联网世界中垃圾邮件的泛滥。垃圾邮件问题已经极大地消耗了网络资源,并给人们带来了极大的不便。据中国互联网协会(ISC)2005年第一次反垃圾邮件状况调查显示,中国邮件用户2005年4月平均每人每天收到邮件16.8封,占收到邮件总数的60.87%。
垃圾电子邮件已成为人们最头疼的问题之一。在Windows操作系统中也许用户已经尝够了垃圾邮件带来的苦头,在Linux操作系统平台中也很难避免垃圾电子邮件给我们带来的骚扰,反击和过滤垃圾电子邮件是一件很重要的工作。
垃圾邮件防治策略
总体说来,抑制垃圾邮件,有如下几种方法:
1.SMTP用户认证
这是目前最常见、最简单并且十分有效的方法。在邮件传送代理(Mail Transport Agent,MTA)上对来自本地网络以外的互联网的发信用户进行SMTP认证,仅允许通过认证的用户进行远程转发。这样既能够有效避免邮件传送代理服务器为垃圾邮件发送者所利用,又为出差在外或在家工作的员工提供了便利。如果不采取SMTP认证,则在不牺牲安全的前提下,设立面向互联网的Web邮件网关也是可行的。
此外,如果SMTP服务和POP3服务集成在同一服务器上,在用户试图发信之前对其进行POP3访问验证就是一种更加安全的方法。目前,新浪等大型网站都相继采用了该功能,使得这些大型服务商的服务器被利用来发送垃圾邮件的概率大大降低。当前支持这种认证方式的邮件客户端程序比较出色的是FoxMail。
2.逆向DNS解析
无论哪一种认证,其目的都是避免邮件传送代理服务器被垃圾邮件发送者所利用,但对于发送到本地的垃圾邮件仍然无可奈何。要解决这个问题,最简单有效的方法是对发送者的IP地址进行逆向名字解析,即通过DNS查询来判断发送者的IP与其声称的名字是否一致。例如,其声称的名字为pc.sina.com,而其连接地址为120.20.96.68,与其DNS记录不符,则予以拒收。这种方法可以有效过滤掉来自动态IP的垃圾邮件,对于某些使用动态域名的发送者,也可以根据实际情况进行屏蔽。
但是上面这种方法对于借助Open Relay的垃圾邮件依然无效。对此,更进一步的技术是假设合法的用户只使用本域具有合法互联网名称的邮件传送代理服务器发送电子邮件。需要指出的是,逆向名字解析需要进行大量的DNS查询。这样,在网络中将会出现大量的UDP数据包。
3.黑名单过滤
黑名单服务是基于用户投诉和采样积累而建立的、由域名或IP组成的数据库,最著名的是RBL、DCC和Razor等。这些数据库保存了频繁发送垃圾邮件的主机名字或IP地址,供MTA进行实时查询以决定是否拒收相应的邮件。简单地说,即数据库中保存的IP地址或者域名都应该是非法的,都应该被阻断。
但是,目前各种黑名单数据库难以保证其正确性和及时性,一般该名单的形成需要一段时间的积累。例如,曾经一段时期,北美的RBL和DCC包含了我国大量的主机名字和IP地址,其中有些是早期的Open Relay造成的,有些则是由于误报造成的。但这些迟迟得不到纠正,在一定程度上阻碍了我国与北美地区的邮件联系,也妨碍了我国的用户使用这些黑名单服务。
4.白名单过滤
白名单过滤是相对于上述的黑名单过滤来说的。它建立的数据库的内容和黑名单的一样,但是其性质是:库中存在的都是合法的,不应该被阻断。同样,该过滤方法存在的缺点与黑名单类似,也是更新和维护难以达到实时,一些正常的、不为系统白名单所收集的邮件有可能被阻断。从应用的角度来说,在小范围内使用白名单是比较成功的,可以通过在企业或者是公司的网关处通过一段时间内获取由内部发出的邮件的相关信息的办法来生成白名单。
5.内容过滤
即使使用了前面诸多环节中的技术,仍然会有相当一部分垃圾邮件漏网。对此种情况,目前最有效、最根本的方法是基于邮件标题或正文的内容过滤。其中比较简单的方法是,结合内容扫描引擎,根据垃圾邮件的常用标题语、垃圾邮件受益者的姓名、电话号码、Web地址等信息进行过滤。
更加复杂但同时更具智能性的方法是,基于贝叶斯概率理论的统计方法、支持向量机(SVM)方法、人工神经网络、Winnow等方法所进行的内容过滤,这些方法的理论基础是通过对大量垃圾邮件中常见关键词等采用上述方法进行机器学习后分析后得出其分布的统计模型,并由此推算目标邮件是垃圾邮件的可能性。这些方法具有一定的自适应、自学习能力,目前已经得到了广泛的应用。最有名的垃圾邮件内容过滤是Spamassassin,它使用Perl语言实现,集成了以上两种过滤方法,可以与当前各种主流的MTA集成使用。内容过滤是以上所有各种方法中耗费计算资源最多、最有效的办法,在邮件流量较大的场合,需要配合高性能服务器使用。
Sendmail是Red Hat Linux以及大多数类Unix操作系统的邮件传送代理,因此它是目前配置最广泛的邮件服务器,图1是Sendmail功能示意图。下面以Red Hat Linux使用的Sendmail为例,介绍应对垃圾邮件的几种具体方法。
安装与启动Sendmail
Sendmail邮件服务器有两种安装方式:RPM包安装方式以及源代码安装方式。前者安装起来更为简单,并且Red Hat Linux的发行安装光盘中一般也附带了该安装包,下面分别对这两种安装方式的步骤进行介绍。
1..RPM包安装方式
首先检测系统是否已经安装该RPM包:
#rpm -qa |grep sendmail
如果没有安装,则将Red Hat Linux的第一张安装光盘放入光驱并挂接:
#mount /mnt/cdrom //挂接光盘
#cd /mnt/cdrom/RedHat/RPMS //进入RPMS目录
#rpm -ivh sendmail-8.12.8-4.i386.rpm //安装可执行文件
//安装生成Sendmail配置文件的m4工具包
#rpm -ivh m4-1.4.1-13.i386.rpm
插入Red Hat Linux的第三张安装光盘,安装如下软件包:
#mount /mnt/cdrom
#cd /mnt/cdrom/RedHat/RPMS
#rpm -ivh sendmail-cf-8.12.8-4.i386.rpm
#rpm -ivh sendmail-doc-8.12.8-4.i386.rpm