您当前的位置:首页 > 计算机论文>计算机网络论文

基于Bayes的邮件过滤系统的研究与设计

2015-07-09 11:30 来源:学术参考网 作者:未知
摘 要 邮件过滤技术是反垃圾邮件的重要手段,本文提出了一种基于服务器端的垃圾邮件过滤系统,它采用改进的Bayes算法,将反映垃圾邮件的特征综合在一起统称为“属性”,用这些“属性”构成表示邮件特征的向量空间模型重点特征向量,避免了单纯基于IP、信头、信封过滤的规则性太强的缺点,降低将正常邮件判断为垃圾邮件的风险。
关键词 电子邮件;垃圾邮件;邮件过滤

0 引言

中国互联网信息中心2003年7月公布的《中国互联网络发展状况统计报告》显示,中国网民平均每周收到16.1封电子邮件,其中垃圾邮件就占据了8.9封,垃圾邮件的数量超过了正常邮件数量,并有进一步增长的趋势,之所以造成垃圾邮件泛滥,是因为近几年来宽带网络的快速发展、网络通信成本的不断下降以及硬件性能的提高并且成本不断降低给垃圾邮件提供了很好的环境;电子邮件的易伪造性也是垃圾邮件泛滥的原因之一;还有现在对垃圾邮件,国家缺乏法律和规范的约束。虽然人们在技术和法律方面都进行不断的努力,垃圾邮件已经得到了一定的控制,但是,在国内由于技术和立法还没有达到一个足够的程度,导致国家已经成为世界垃圾邮件的新源头。
垃圾邮件的泛滥会造成很多危害,不仅影响国家的政治稳定、用户的正常工作学习,还会影响网络的安全性、稳定性、高效性;占用网络带宽和存储空间。所以对于垃圾邮件的防范及过滤技术的研究很有意义。

1 研究现状

目前存在的反垃圾邮件技术,主要有三个大的方向:
一是修改现有的SMTP协议,制定一个新的安全可靠邮件协议,让垃圾邮件没有“生存的环境”。
二是使大量发送垃圾邮件发送者承受“巨大的成本”,以致通过电子邮件渠道来大量发送广告信息在经济利益上不合算,来减少垃圾邮件。
第三种是根据邮件的格式,发送时间,文件大小,内容以及其它特性,来识别该邮件是否为垃圾邮件,如果是,则把垃圾邮件过滤掉。识别的方法多种多样,过滤垃圾邮件效果的好坏决定于识别方法的准确度。
第一种方式是通过完善通信协议,增强安全认证性能,消除垃圾邮件泛滥的环境,来减少或消灭垃圾邮件产生。第二种方式是通过经济利益杠杆,使得在网络上大量的发送垃圾邮件,要承受巨大的经济负担,以至通过垃圾邮件来广告宣传方法是不经济的,来减少垃圾邮件产生。第三种是当垃圾邮件产生以后,通过各种各样的方法把垃圾邮件从邮件中识别出来并过滤掉,让接收者感觉不到这些垃圾邮件的骚扰。前两种是主动的方式,推的方式,从垃圾邮件产生的根源出发,不同的是一个从技术的角度,一个是从经济的角度。而第三种方式是被动的方式、拉的方式,它并不能杜绝垃圾邮件的重复产生,只能当垃圾邮件产生以后,通过方法识别出垃圾邮件,及时的剔除他们。前两种方式应用起来更加困难、复杂而第三种方式相对简单易行,因此当前第三种方式的反垃圾邮件方法研究和应用的更多。
垃圾邮件过滤技术就是第三种方式的反垃圾邮件方法,也是反垃圾邮件技术发展的重要方向之一。
从过滤的方法来分,过滤可以分为基于关键字的过滤、基于黑白名单的过滤、基于规则的过滤、基于内容的过滤等等。

2 系统设计

2.1 设计目标

目标是设计一个基于SMTP的、位于服务器前端的、具有较高过滤精度的垃圾邮件过滤系统。对于垃圾邮件的过滤,精度是最重要的问题,因为相比收到几封垃圾邮件来说,一封正常的邮件被过滤掉更让人难以接受,本系统所采取的所有方法都是旨在提高垃圾邮件过滤的精度。该系统位于邮件服务器的前端,代替邮件服务器接收邮件,完成过滤后,把邮件转发给邮件服务器,再由邮件服务器完成以后的功能。
该系统具备的功能主要有:
⑴邮件数据包拦截
⑵邮件数据包编、解码
⑶高精度的自动分词
⑷垃圾邮件过滤
⑸自主学习
⑹垃圾邮件处理
⑺正常邮件转发
⑻自动回复

2.2 系统流程

因为电子邮件是以一定的编码方式在网络上根据SMTP协议传送的邮件数据包,所以系统首先拦截数据包,在SMTP会话过程中,可以根据会话过程中的Mail From和Rcpt To等会话进行过滤。经过这一层过滤后,将得到的邮件数据包进行解码,解码后的邮件为普通文本格式。电子邮件一般格式包括信头和信体两部分,其中信头包括发件人地址、收件人地址、主题、日期、路由信息等重要信息,信体是邮件的正文。
很多时候仅仅根据信头信息就可以判断一封邮件是否为垃圾邮件,所以先分离出信头和信体的信息,然后分别进行基于信头和基于内容的过滤。因为文本邮件的内容是机器无法识别的文本,所以首先要进行分词处理:分词的精度是影响分类的一个重要因素,所以这里必须注意消除歧义字段。根据垃圾邮件的特征向量构造表示该邮件文本的特征向量。然后把文本的特征向量通过邮件过滤器,区分出正常邮件和垃圾邮件。对于正常邮件,直接编码,按照SMTP协议发送给邮件服务器;而对于垃圾邮件则需要多种处理,如:保存、删除、自动回复等。这样就完成了一个完整的垃圾邮件过滤系统的功能。

图1
我们知道,基于IP和基于信头的过滤简单易行,并且有不错的过滤精度,因此得到了广泛的应用。但是,这两种方式所依据的信息比较少,而且会随着时间而改变,比如一个IP黑名单中的IP地址可能是被利用来进行转发的服务器,但是由于在黑名单中,那么这个地址所发送的全部邮件都没过滤掉,这样会对正常的业务造成损害;或者一个信头的主题词中包含一个很多垃圾邮件都包含的关键词,但是也许这封邮件是基于教育的目的所发出的,那么也会被无区分的过滤掉。基于以上分析,我采取了将以上三种方式项结合的过滤方法:基于“属性”的过滤,把IP地址、主题词是否包含关键字、内容中的关键词。附件信息等等都作为属性,一起构成表示邮件的特征向量,根据这个特征向量进行过滤。系统的流程如图1所示。

2.3 系统总体框架

综合系统需要完成的目标和处理流程,设计出系统的总体框架,如图2所示。协议代理模块完成截获邮件数据包、数据包编解码和邮件转发的功能;预处理模块完成分离信头、信体和分词、特征提取以及构造特征向量的功能;过滤模块采用改进的Bayes分类器将邮件过滤;数据模块是系统中所用到的词典、关键词表、训练样本集、规则库等信息;管理模块则为管理员管理维护系统提供了一个人机交互接口。

图2

2.4 模块设计

2.4.1 协议代理模块
收到后将文件解码还原,也需要有中文系统才能看所写的中文信息。协议代理模块是过滤系统的网络前端。要对邮件进行过滤,首先要捕获发送到该服务器的邮件数据包。并对包进行解码。完成过滤后,需要还原该邮件数据包,也就是对邮件编码,然后转发。由此该模块主要负责完成以下工作:数据包拦截、协议解析、编码/解码、邮件转发。它可以支持不同的内容协议(HTTP、SMTP、POP、IMAP)等,并且是可扩展的。模块共包括4个部分。
⑴数据包拦截:其原理是利用网卡驱动来捕获数据包。网卡驱动会根据以太帧中的协议类型把数据包传给协议栈进行相应的处理。
⑵协议解析:根据捕获的TCP数据包的应用层端口号,判断其应用层协议类型,只对SMTP邮件数据包进行处理,对于其他协议的数据包直接转发。例如SMTP的会话过程包括命令交互阶段和数据阶段,在SMTP会话过程中提取一些对判断垃圾邮件起作用的重要“属性”。如MAIL会话阶段提取发信人的主机地址,多个RCPT会话阶段提取收信人地址,在DATA数据阶段提取出整封邮件的内容,包括邮件头和邮件体,在接受到QUIT命令时将SMTP数据进行还原。
⑶编码/解码:为内容过滤引擎统一了内容文本的格式。该模块也是可扩展的,它主要完成以下工作:对编码邮件的解码(如MIME编码、UNENCODE等);将有结构的文本内容(如HTML、WORD、PDF等)转化为纯文本;提取出动态页面中的脚本代码。中文是属于8位代码的文字,并不是标准的ASCII码格式,由于在国内中文是通行的文字,所以大部分的邮件服务器都已经能够处理GB内码的文件,因而不需要做这种编码/解码的操作,可以直接传送。但如果要传送中文邮件到国外,就需要经过这种转换才能传送,因为国外的邮件服务器是无法辨认中文内码的。中文在经过一些不支持中文内码的传递主机时,依然会被裁掉一位,造成文件支离破碎无法读取,而经过编码的中文邮件,收信人收到后将文件解码还原,也需要有中文系统才能看到所写的中文信息。
⑷邮件转发:将过滤后的邮件数据包按照邮件协议转发。
2.4.2 预处理模块
因为过滤器是基于VSM模型(Vector Space Model),需要对邮件进行预处理得到。在该模型中,我们把邮件的内容形式化为多维空间的一个点,以向量的形式给出,向量的元素可以是词、IP地址、文本格式等能够判断邮件是否是垃圾邮件的特征属性。该模块主要完成的工作包括:信头、信体分离,分词处理,特征向量生成。
⑴信头、信体处理:电子邮件的格式包括信头、信体,两者之间用空行来分隔,可以分别提取信头和信体的信息。电子邮件的信头包括:发件人地址、收件人地址、主题、邮件列表等信息,这些信息常可以判断一封邮件是否是垃圾邮件。如商业广告垃圾邮件的主题通常包含“Buy”、“Save”和“Free”等特征。信封和信头的内容并不完全一致,信封的内容比较可靠,因为信头的内容是可以通过客户端进行伪造的,所以可以通过比较信封和信头的内容进行过滤。
⑵分词处理:对于主题和信体中的内容,需要经过分词处理。分词的精度是影响系统准确率的一个重要因素。我们采用机械匹配法(向右减字最大匹配和向左增字最小匹配)相结合,然后再用互信息消除歧义得到比较精确的分词结果,这个过程需要借助分词词典。
⑶特征向量生成:这个过程分为两种,一种是根据训练样本库取得表示垃圾邮件类的特征向量,这个过程是对信封、信头、信体等部分得到的信息进行处理,得到分类器所需要的特征向量。因为各部分所得到的特征属性所构成的向量维数太大,需要进行降维处理,对信封、信头的属性进行比较和合并,而对信体中得到的属性则进行筛选,也就是特征值选择。首先通过剔除词词典将对分词没有贡献的助词、连词、冠词等剔除,然后按照特征向量选择算法计算每个词的重要度,按照由高到低的顺序选择一定数量的特征词,和前面由信封、信头中的属性一起组成特征向量。另一种是根据由训练文本库得到的表示垃圾邮件类的特征向量构造待分类电子邮件的特征向量。
2.4.3 过滤模块
这个模块是整个系统的核心模块,它要完成的功能是对邮件信息进行处理,判断邮件是否是垃圾邮件,并对结果进行处理。因为邮件被表示成由“属性”组成的向量空间,这些属性包括:IP地址、附件大小、附件扩展名、群发地址个数、文本中的关键词等等信息,根据这些信息完成传统的基于IP、基于信封、信头和基于内容的过滤。
贝叶斯算法因为其简单快捷得到广泛应用,这里采用改进的贝叶斯算法来提高过滤精度。
过滤的结果分为正常邮件和垃圾邮件。对于正常邮件交给协议代理模块进行编码和转发,对于垃圾邮件的处理有:
丢弃:对于不需要保存到数据库中的数据包,做丢弃处理,节约资源;
存储:对于某些邮件存入数据库,作为训练样本集;
回复:对于一些邮件进行自动回复,通知发件人该邮件被过滤。
2.4.4 数据模块
系统中需要的分词词典、剔除词词典等等数据资源需要一个单独的模块来进行维护管理,提供增加、修改、查询、统计等功能,这个模块就是数据模块。这个模块包括七个部分。
⑴分词词典:由于分词算法采用的是机械匹配的方法,需要分词词典提供辅助;
⑵剔除词词典:在提取特征词之前,根据剔除词词典剔除部分词汇,提高效率;
⑶特征属性表:基于Bayes算法的过滤方法需要根据垃圾邮件特征属性的概率统计信息进行过滤,因此系统需要维护垃圾邮件特征关键词的概率信息;
⑷训练样本集:作为训练过滤器的样本,它的大小和时间性影响过滤的精度;
⑸垃圾邮件表:保存一些过滤掉的邮件的数据库表格,在存储邮件的源IP和目的IP、邮件的发件人、主题、发送时间和邮件体的信息。便于事后统计分析;
⑹IP地址黑名单:保存经常发送垃圾邮件的IP地址;
⑺规则表:保存生成属性表过程中需要的一些对信头特征进行提取的规则。
2.4.5 主控模块
是整个系统的控制协调中心。主要负责完成以下工作:
⑴系统的初始化;
⑵其它模块的配置管理;
⑶系统运行状态监控;
⑷为系统配置管理所需的各种数据资源;
⑸提供数据查询、统计功能。

3 结术语

电子邮件是互联网中一个普及的应用,垃圾邮件的增长也越来越快,然而垃圾邮件却严重影响了电子邮件的正常使用,带来诸多的问题。它已成为世界共同关注的问题,对于垃圾邮件的过滤的研究已取得了一定的成果。本文在分析这些已有的技术的基础上提出一种基于Bayes算法的旨在提高分类精度的垃圾邮件处理系统。本文虽然提高了过滤精度,但是还有许多方面需要改进:
⑴本系统采用基于“属性”的过滤,对于各种特征属性概率计算结果需要重新找到一种好的加权方法,提高分类精度;
⑵本系统把过滤工作都集中到一起进行,虽然增加了精确度,但是有可能造成资源浪费,因为在过滤的同时垃圾邮件已经占用了带宽,需要采取一些辅助措施;
⑶还有一些功能需要增加:比如支持远程监督控制,支持用户发信认证功能。

参考文献

[1]曹麒麟,张千里. 垃圾邮件与反垃圾技术,人民邮电出版社,2003
JONATHAN B.POSTEL. Simple Mail Transfer Protocol.RFC821,August 1982
China Anti-Spam ResearchReport, http://www. iresearch. com. cn, 2003,11
詹川.反垃圾邮件技术的研究.电子科技大学,2005年3月
HALL R.J. Channels:Avoiding Unwanted Electronic Mail[M]
沈卫超.邮件过滤器系统的设计与实现[J].信息与电子工程,2003.1(2):18-21
相关文章
学术参考网 · 手机版
https://m.lw881.com/
首页