祝毅鸣 张波
摘要:反垃圾邮件问题已经成为全球性的具有重要現实意义的课题。反垃圾是一项大工程,有时仅靠一种方法或技术,并不能达到我们想要的结果,需要几种方法相结合,来更好的处理垃圾邮件。本文所写的实时黑名单跟其他的反垃圾邮件技术一起可以取得更好的反垃圾效果。实时黑名单就是通过调用linux的系统命令,使得模块可以随时去国际互联网协会网站下载最新的黑名单,从而降低用户收到垃圾邮件的可能性。
关键词:垃圾邮件实时黑名单
中图分类号:TP393 文献标识码:A 文章编号:1672-3791(2012)04(c)-0033-01
随着互联网络的日益普及,电子邮件走进了大众人们的工作和生活,它的快速、便捷的优势使它成为现代社会主要通讯方式之一和互联网上最重要、最普及的应用之一。而近年来,一些公司、团体和个人为了商业利益或政治目的,在未经用户同意的情况下,利用电子邮件发送大量商业广告及各种不良信息,形成影响极坏、后果严重的垃圾邮件问题。
垃圾邮件问题如不能及时、有效解决,将会给我国带来多方面的危害。
1研究现状
目前存在的反垃圾邮件技术,主要有三个大的方向。
第一种是修改现有的SMTP协议,制定一个新的安全可靠邮件协议,让垃圾邮没有“生存的环境”。
第二种是使大量垃圾邮件发送者承受“巨大的成本”,以致通过电子邮件渠道来大量发送广告信息在经济利益上不合算,来减少垃圾邮件。
第三种是根据邮件的格式,发送时间,文件大小,内容以及其他特性,来识别该邮件是否为垃圾邮件,如果是,则把垃圾邮件过滤掉。识别的方法多种多样。过滤垃圾邮件效果的好坏取决于识别方法的准确度。
前两种是主动的方式,推的方式,从垃圾邮件产生的根源出发,不同的是一个是从技术的角度,一个是从经济的角度,让大量发送垃圾邮件是不可行的。而第三种方式是被动的方式、拉的方式,它并不能杜绝垃圾邮件的重复产生,只能当垃圾邮件产生后,通过方法识别出垃圾邮件,及时的剔除它们。前两种方式应用起来更加困难、复杂,而第三种方式相对简单易行,因此,当前第三种方式的反垃圾邮件方法研究和应用的更多。
2本课题的提出
随着垃圾邮件的泛滥,反垃圾邮件技术越来越被人们所重视,出现了很多的过滤技术和过滤系统,因为邮件能传送文本、声音、图像等多媒体信息,因此垃圾邮件的过滤系统就要从多方面加以过滤。不是哪一种技术就可以很好的解决垃圾邮件问题的。
本文提出的黑名单也不能独自处理好垃圾邮件的问题,可以把这种技术跟其他邮件过滤技术一起来完成处理垃圾邮件问题。
黑名单可以是发送垃圾邮件服务器、开放的代理、开放的中继以及发送者邮箱地址。基于黑名单的方法认为,如果邮件来自黑名单中的地址,则认为该邮件时垃圾邮件。它的缺点在于需要时间和精力来维护管理RBLs,因为垃圾邮件发送者不断更换他的域名和地址,为了让该技术实时有效,RBLs也得不断的更新升级。而且会对一些合法的服务器造成误伤,例如一个垃圾邮件发送者通过拨号上网发送垃圾邮件,那么他是通过ISP提供商服务器登录到自己的邮件服务器上,则ISP服务商就是垃圾邮件的源地址,如果把这个地址设置为黑名单,就会让很多合法用户无法发送正常的邮件。
本文的实时黑名单模块采用的是用linux的外部命令实时的去互联网协会的网站上下载其定期发布的黑名单,把域名解析出来放在一个临时文本文件中,然后用hash函数将该文本文件在内存中散列成便于查找的hash表,如果一封邮件的地址我们可以在表中找到,就拒收该邮件。由于黑名单牵涉到一些法律、个人的隐私问题,本文只是供本论文研究之用。
3模块设计与实现
该模块主要包括四个子模块。
(1)下载模块:定时下载国内RBL(Realtime Blackhole List)到临时HTML文件。
(2)解析模块:将临时HTML文件中的黑名单解析到一个临时文本文件中。
(3)散列模块:将RBL临时文件利用哈希函数在内存中散列成便于查找的哈希表。
(4)查找模块:在内存的哈希表结构中,检测待查的域名是否存在,若存在则拒收从那里发来的邮件。
3.1 下载模块
RBL模块被调用时,首先实现一个服务器的功能,使用linux系统的unsigned int alarm(unsigned int seconds)函数来定时发送信号,触发相应的下载函数。此函数被触发后,使用Linux的外部命令wget,从Internet上下载国内RBL到一个临时HTML文件。
3.2 解析模块
根据下载的HTML临时文件的具体信息,将其中的黑名单解析出来,逐条放入一个TXT文档,并以空格来分隔每一条。
3.3 散列模块
以下载模块中输出的临时TXT文件作为解析对象,将每一行读出,根据相应的哈希算法建立哈希查找表。
哈希算法:设定一个两倍于待查数据的静态地址空间,首先根据哈希函数确定待查找字符串的位置nHashPos,如果有冲突,就用线性探测再地址散列的方法处理冲突。然后使用无冲突哈希函数确定字符串的哈希值,作为它内容的唯一标识。
3.4 查找模块
读入待查的字符串,计算其哈希值,并且在哈希表中查找。首先检索它的位置nHashPos,并比较字符串内容nHashA,查到就拒收邮件。若有冲突,则利用线性探测再地址散列的方法继续查找,找到仍然拒收,若找不到则表明它不在黑名单中,可以接收。
4结语
基于黑名单是一个简单有效最常用的过滤方法,它首先检查邮件头,如果发送者在黑名单内,就拒绝该邮件,它的缺点在于需要时间和精力来维护管理RBLs,黑名单模块中,直接调用了linux的系统函数从互联网上下载黑名单,然后解析再散列,提高了实时性,但是每次调用就触发去下载有可能造成系统性能的下降,因为黑名单也不是每时都更新,而是定期发布。
参考文献
[1] 谭立球,谷士文,费耀平.个人化电子邮件自动过滤系统的设计[J].计算机应用,2002,22(6):54~55.
[2] 杨峰,曹麒麟,段海星,等.基于DNSB locklist的反垃圾邮件系统的设计与实现[J].计算机工程与应用,2003,7:11~12,45.
[3] S.Hambrigdge,A.Lunde.Dont Spew, A Set of Guidelines for Mass Unsolicited Mailings and Postings(spam). RFC2635 http://www.rfc-editor.org./rfc/rfc2635.txt,1999:23~25.