资源描述
本科毕业论文(设计)论文题目: 互联网垃圾邮件防御系统的设计与实现 学生姓名: 学 号: 0905290223 专 业: 软 件 工 程 班 级: 0902 指导教师: 完成日期: 2013年 5月 20日互联网垃圾邮件防御系统的设计与实现内容摘要近年来,传统的邮件业务相当大的被电子邮件所取代,电子邮件成为了人们通信的越来越重要的手段。但是随着电子邮件本身固有的缺陷,以及软件易于复制和传播的特点,导致了互联网上垃圾邮件的泛滥,占用网络资源,浪费人们的宝贵的时间,造成了巨大的人力财力的浪费。本课题正是在这样的背景下展开,借此来减少垃圾邮件的传播,改善网络环境。反垃圾邮件系统通过设置黑白名单,将白名单用户的邮件定义为可信任邮件,将黑名单用户的邮件定义为垃圾邮件;除此之外的用户则需要对邮件内容进行过滤,垃圾邮件的判断,主要是从敏感关键字来判别(目前的纯客户端反垃圾邮件多数基于这一点来做)。从而减轻了网络的负荷,减少了用户的负担。关键词:垃圾邮件 反垃圾邮件 黑名单 举报 开放转发Anti-Spam systemAbstractRecently, the traditional mail service is largely replaced by email service which is provided by Internet. Email is becoming a more and more important means in interactions among people. However, the inherent defect of emails that they are easily copied and transmitted leads to the flooding of spam emails, which take the precious band width, and waste much of peoples time, much money and much man power.In this stage, our program is aiming at retrieving a clean network by setting up black or white lists. The determination of spam mainly depends on the counts of reporting times of spam emails. Optional rules are judged by sensitive key words (many of current anti-spam tools are based on this).Finally, Processing Center releases the black list to Internet Service Providers, which filter the emails from those addresses in the black lists. Thus, the source of spam emails was blocked, so the burden of networks was alleviated, help users have a better service experience.Key words: spam-emails anti-spam black list report open-relay目 录一、绪论1(一)课题背景1(二)国内研究状况分析1二、开发环境简介3(一)python简介3(二)python下载安装3(三)pyqt简介4(四)pyqt下载安装4三、垃圾邮件过滤系统相关理论及技术分析6(一)电子邮件61. 电子邮件介绍62. 电子邮件系统的工作原理63. 邮件头部介绍7(二)垃圾邮件简介81. 垃圾邮件定义82. 垃圾邮件的危害83. 垃圾邮件的分类94. 垃圾邮件采用的技术9(三)反垃圾邮件研究101. 非技术手段反垃圾邮件102. 技术手段反垃圾邮件11四、客户端垃圾邮件过滤技术研究14(一)中文分词141. 中文分词的常用方法14(二)过滤模式151. 客户端过滤模式152. 多层过滤15五、系统分析18(一)可行性分析18(二)功能需求分析181. 基本功能192. 核心功能19六、系统总体设计20(一)系统功能规划20(二)系统模块划分20七、系统详细设计21(一)功能设计211. 邮箱认证模块212. 邮件发送模块213. 邮件接收模块214. 黑白名单过滤215. 规则过滤216. 邮件处理22(二)系统流程图231. 邮件接收流程图232. 邮件发送流程图24八、系统实现25(一)界面设计与实现25(二)垃圾邮件识别策略31九、系统测试33(一)测试的主要目的33(二)测试环境33(三) 测试及测试结果33(四) 测试结果分析及评价34十、结论35致 谢36参考文献37一、绪论(一)课题背景随着互联网的快速发展,电子邮件已经成为人们日常生活中重要的通信方式。相比传真、普通信件等传统的信息传递方式,电子邮件使用简单、易于保存、花费低廉、传递迅速,可在短时间内与世界上任何一个角落中的网络用户联系,所以电子邮件受到了人们普遍的欢迎。但是,近年来垃圾邮件的出现和不断泛滥,严重干扰了人们正常的网络活动,给广大用户带来了巨大的麻烦。2007年1月,中国反垃圾邮件中心的2007年第一次中国反垃圾邮件状况调查报告显示,网民平均每周收到垃圾邮件22.1封,发出电子邮件12.1封。网民对互联网中垃圾邮件的反感度达8.7,垃圾邮件已成为继电脑病毒之后的主要网络安全问题。垃圾邮件不但危害了互联网的发展、损害了用户的利益、还易被黑客利用,成为散播病毒的主要工具,对社会造成危害。针对垃圾邮件,普遍采用过滤技术对其进行过滤,目前的过滤技术己经取得了很大的进步,但还不够成熟。过滤技术不能完全识别垃圾邮件,甚至会阻断正常邮件的传递,这对于广大用户来说是无法接受的,一些关键领域会因一封正常邮件的丢失而带来巨大损失。因此,研究有效的防治垃圾邮件的技术具有重要的现实意义。(二)国内研究状况分析目前,国内研究的过滤技术主要是基于内容的过滤。基于内容的较成熟的垃圾邮件过滤技术,具有较高的智能性和准确率,但是由于垃圾邮件过滤是个复杂的问题,在技术上还没有哪一个能完美的过滤所有的垃圾邮件。目前存在的主要问题如下:(1) 中文邮件的误判率较高过去的研究主要集中在算法改进方面,而且大多数都使用统一的英文语料库作为平台,对训练和测试结果进行比较分析。英文垃圾邮件的过滤己经达到了比较高的准确率,但受中文分词的影响,对于中文垃圾邮件过滤,往往效果并不理想。中文分词就是将连续的字序列按照一定的规范重新组合成词序列的过程,有些人也称之为切词。中文分词的准确性直接影响电子邮件分类的准确度。由于中文的多义性,而且目前还没有统一的中文垃圾邮件语料库,研究者都是自己用自己的语料,缺乏可比性,所以中文邮件的预处理显得更加困难。(2) 垃圾词汇不易识别反垃圾邮件技术进步的同时,垃圾邮件伪装技术也在不断的发展,垃圾邮件制造者试图制造更难识别的垃圾邮件。垃圾邮件用词越来越隐晦,致使基于内容的过滤器误判率增高。(3) 垃圾邮件概念不明确电子邮件的内容是随时间变化而变化的,用户的个性化需求也有所不同,并且同一用户的需求也在不断的改变,这些变化都使得垃圾邮件判别标准发生变化,这也是垃圾邮件过滤不易解决的问题。对文本分类,每个类别的内容一般不会经常改变。而对垃圾邮件过滤,垃圾邮件类别是和用户密切相关的,如一个产品宣传广告,有人认为是垃圾邮件,但有人则认为是正常邮件,因此邮件的分类需更注重个性化。另外,用户对垃圾邮件的判断标准也会随时间的推移而改变,而且垃圾邮件本身的内容形式也在不断的变化。这些都造成邮件类别的不确定性。二、开发环境简介(一)python简介Python是一种解释型、面向对象、动态数据类型的高级程序设计语言。自从20世纪90年代初Python语言诞生至今,它逐渐被广泛应用于处理系统管理任务和Web编程。Python已经成为最受欢迎的程序设计语言之一。2011年1月,它被TIOBE编程语言排行榜评为2010年度语言。自从2004年以后,python的使用率是呈线性增长。Python是从ABC发展起来,主要受到了Modula-3(另一种相当优美且强大的语言,为小型团体所设计的)的影响。并且结合了Unix shell和C的习惯。Python在设计上坚持了清晰划一的风格,这使得Python成为一门易读、易维护,并且被大量用户所欢迎的、用途广泛的语言。Python的设计哲学是“优雅”、“明确”、“简单”。设计者开发时总的指导思想是,对于一个特定的问题,只要有一种最好的方法来解决就好了。这在由Tim Peters写的python格言(称为The Zen of Python)里面表述为:There should be one- and preferably only one -obvious way to do it. 这正好和Perl语言(另一种功能类似的高级动态语音)的中心思想TMTOWTDI(Theres More Than One Way To Do It)完全相反。由于Python语言的简洁、易读以及可扩展性,在国外用Python做科学计算的研究机构日益增多,一些知名大学已经采用Python教授程序设计课程。例如麻省理工学院的计算机科学及编程导论课程就使用Python语言讲授。众多开源的科学计算软件包都提供了Python的调用接口,例如著名的计算机视觉库OpenCV、三维可视化库VTK、医学图像处理库ITK。而Python专用的科学计算扩展库就更多了,例如如下3个十分经典的科学计算扩展库:NumPy、SciPy和matplotlib,它们分别为Python提供了快速数组处理、数值运算以及绘图功能。因此Python语言及其众多的扩展库所构成的开发环境十分适合工程技术、科研人员处理实验数据、制作图表,甚至开发科学计算应用程序。国外知名视频网站YouTube就是使用python处理非常高的并发访问量。(二)python下载安装(1)在http:/www.python.org/getit/ 下载windows版本的python,然后按照提示一步一步安装。(2)接着配置环境变量:在系统的环境变量中编辑PATH,将安装目录添加在PATH之后。(3)检测是否安装成功:运行cmd打开系统终端,输入python,出现如图2-1所示的界面说明安装成功。图2-1 python 安装成功测试图(三)pyqt简介PyQt是一个GUI库,是将Python和Qt结合在一起的产物。而Qt是目前比较成功和强大的GUI库。可以通过访问官方主页来获得更多信息。PyQt的模块管理:QtCore、QtGui、QtNetwork、QtXml、QtSvg、QtOpenGL、QtSql。QtCore主要负责一些非GUI的功能,包括时间(time),文件(files)和文件夹(directories),各种数据类型(data types),流(stream),urls,mime类型,线程(threads)和过程(processes)。QtGui模块负责图像组件和相关的类,包括常见的按钮(buttons),窗口(windows),状态栏(status bars),工具栏(toolbars),滑动条(sliders),位图(bitmaps),颜色(colors)和字体(fonts)等。QtNetwork则负责网络功能,通过该模块,可以完成具有TCP/IP和UDP交互功能的C/S应用,该模块使得网络开发非常的简单便携。QtXml包含了同xml文件交互的能力,模块实现了同SAX和DOM交互的APIs。QtSvg提供了显示SVG文件内容的方法。Scalabe Vector Graphics(SVG)是使用xml文件来描述二维图像的一种语言。QtOpenGL通过使用OpenGL来呈现3D和2D图像,该模块将Qt GUI库和OpenGL库无缝的结合在一起。QtSql提供了访问数据库的方法。PyQt提供了以下功能:(1)窗口部件以及其他图形化用户接口控制;(2)数据库管理和查询;(3)XML处理;(4)图像和多媒体;(5)Web浏览器集成和网络。(四)pyqt下载安装安装pyqt前需要先安装SIP,在 http:/www.riverbankcomputing.co.uk/software/sip/down -load 下载SIP对应的版本并安装,然后在http:/www.riverbankcomputing.co.uk/software/pyqt/ download下载python对应的pyqt版本并双击安装。三、垃圾邮件过滤系统相关理论及技术分析(一)电子邮件1. 电子邮件介绍电子邮件(简称E-mai1)又称电子信箱、电子邮政,它是种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,E-mai1不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。电子邮件不是一种“终端到终端”的服务,是被称为“存贮转发式”服务。这正是电子信箱系统的核心,利用存贮转发可进行非实时通信,属异步通信方式。即信件发送者可随时随地发送邮件,不要求接收者同时在场,即使对方现在不在,仍可将邮件立刻送到对方的信箱内,且存储在对方的电子邮箱中。接收者可在他认为方便的时候读取信件,不受时空限制。在这里,“发送”邮件意味着将邮件放到收件人的信箱中,而“接收”邮件则意味着从自己的信箱中读取信件,信箱实际上是由文件管理系统支持的个实体。因为电子邮件是通过邮件服务器(mai1 server)来传递档的。通常mail server是执行多任务操作系统UNIX的计算机,它提供24小时的电子邮件服务,用户只要向 mail server管理人员申请个信箱账号,就可使用这项快速的邮件服务。2. 电子邮件系统的工作原理1) 电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。 电子邮件的传输是通过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。 2) 电子邮件的基本原理,是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的个电子信箱。并确定个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存盘三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。3) 电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定账号从信箱提取。3. 邮件头部介绍下面介绍RFC822中定义的常用的标准信头字段。表3-1 RFC822常用的标准信头字段与发信方有关的信头字段From:mailbox写信人字段。说明信件的原始创建者,给出他的电子信箱地址。创建者对信件的原始内容负责。Sender:mailbox发送者字段。说明实际提交发送这个信件的人,给出他的电子信箱地址。当发信人与写信人不一样时使用。Reply-TO:mailbox回复字段。指定应当把回信发到哪里。如果有此字段,回信将会发给它指定的邮箱,而不会发给From字段指定的邮箱。与收信方有关的信头字段TO:mailbox list收信人字段。指定主要收信人的邮箱地址,可以是多个邮箱地址的列表,地址中间用逗号隔开。Cc:mailbox list抄送字段。指定此信件要同时发给哪些人,也称为抄送。也可以使用邮箱地址列表,抄送给多个人。Bcc:mailbox list密抄字段。指定此信件要同时秘密发给哪些人,也称为密件抄送。也可以使用邮箱地址列表,密抄给多个人。其它的信头字段Date:date-time日期字段:Date字段含有电子邮件创建的日期和时间。Subject:*text信件主题字段。描述信件的主题。当回复信件时,通常在主题前面增加“Re:”前缀,标记为该信件为回复信件:当信件被转发时,通常在主题文字前面加上“Fw:”,“Fwd:”这样的前缀。Received:fromdomain接受字段。是投递信件的特定邮件服务器所作的记录。处理邮件投递的每个服务器必须给它处理的每个信头的前面加一个Received字段,用以描述信件到达目的地所经过的路径以及相关信息。当跟踪各个电子邮件问题时,这个信息很有帮助。Message-ID:msg-id信件标识字段。用于表示一个信件唯一标识,该字段通常有Smtp服务器生成,这个值通常是唯一的。形式根据使用的软件而定。通常左边是标识符,右边指定电脑名图中列出了一些在因特网电子邮件中可以找到的普通关键字,以及使用它们的目的。1. From:发送方地址;2. To:接收方地址;3. Cc:复制副本地址;4. Date:信息创建日期;5. Subject:信息主题;6. Reply-To:回复地址。(二)垃圾邮件简介1. 垃圾邮件定义迄今为止,垃圾邮件(spam、junk mail)在国际上没有统一的定义。普通意义上的垃圾邮件指的是未经主动请求的大量的电子邮件,在中国互联网协会反垃圾邮件规范中垃圾邮件被界定为:(1)收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传品等宣传性的电子邮件。(2)收件人无法拒收的电子邮件。(3)隐藏发件人身份、地址、标题等信息的电子邮件。(4)含有虚假的信息源、发件人、路由等信息的电子邮件。2. 垃圾邮件的危害电子邮件的特性,决定了垃圾邮件的发送成本是极低的,垃圾邮件发送者通常通过各种群发工具,只需花费较少的时间和金钱,就可以大量发送垃圾邮件。然而,对电子邮件服务提供商和用户而言,垃圾邮件却给他们带来很大的危害和损失。据Nucleus Research公司的最新研究报告称,2007年垃圾邮件给全球的生产力造成的损失以及反垃圾邮件的投资预计将达到700亿美元。具体的说,其危害主要表现在以下几个方面:(1)占用网络资源。大量的垃圾邮件会占用有限的网络带宽,干扰邮件系统的正常运行。当有限的网络资源和网络带宽上充斥着大量的垃圾邮件时,严重地降低网络的使用效率。另外,当一些用户利用邮件服务器对外发送垃圾邮件时,该服务器会被列入黑名单而遭到封杀。仅2007年10月至2008年3月中旬,我国就有300多个IP地址段被国外反垃圾邮件组织列入黑名单,导致我国大量用户无法与国外进行正常通信。(2)浪费服务器资源垃圾邮件接收或转发会消耗服务器处理资源,收到的垃圾邮件会占用其磁盘空间,而对垃圾邮件进行过滤同样需要消耗大量服务器运算资源。(3)增加用户处理时间垃圾邮件增加了用户对邮件的处理时间,浪费了用户的精力。如果我们每天都要花费一段时间来处理垃圾邮件,工作效率就要降低,对整个社会来说,被浪费的时间更是一大笔宝贵的财富。更重要的是,垃圾邮件可能会影响用户对正常邮件的接收,造成正常邮件的丢失,给用户带来损失。(4)对网络安全形成威胁。黑客们利用电子邮件系统发送数以万计的垃圾邮件来攻击目标服务器,使之瘫痪、拒绝服务。垃圾邮件还可以被病毒利用,成为它们的传播途径。(5)散布有害信息。垃圾邮件成为反动,黄色等不良信息的主要传播载体,少数别有用心者利用垃圾邮件散播各种虚假信息或有害信息,给社会带来了极大的负面影响,严重危害了社会的稳定。3. 垃圾邮件的分类垃圾邮件从内容上看,主要是商业广告性质的邮件;另外,由少量政治,团体组织的宣传邮件。从邮件的发送形式上看,有直接发送和第三方转发两种。所谓直接发送,就是邮件的发送者使用自己的服务器,IP 地址,自己的网络资源传送这些邮件。对于接收者来说,如果长期收到这样的邮件,可以采取过滤该IP地址的办法或者根据邮件内容过滤的方法;但如果只是偶尔收到,就很难找到有效的方法了。使用这种方法,邮件发送人的真实情况很容易被查出来,因此也很少有人使用。目前使用更多的是使用第三方服务器转发。当然大多都是未经该服务器管理员同意情况下使用的。由于历史的原因,Internet 上有很多服务器可以转发第三方邮件。对于这种垃圾邮件,只要关闭有关服务器的转发功能就可以了。4. 垃圾邮件采用的技术垃圾邮件数量急剧增长,其手段也不断更新,掌握垃圾邮件采用的技术及其特点,对反垃圾邮件工作尤为重要。(1)非授权获取目标邮件地址垃圾邮件发送者(Spammer)通常通过扫描、猜测、购买的方法获取邮件地址,有些Spammer利用黑客程序从邮箱的通讯簿中获取他人的Email地址。另外,某些垃圾邮件群发软件可以自动生成目标邮件地址。(2)使用特殊MTA程序SMTP协议是基于信任网络环境的基础上建立的,所以它很容易遭受欺骗。我们曾在第二章对其进行了一些分析。Spammer不按照常规的方式使用标准的MTA程序发邮件,而是采用特殊的MTA程序,从目标邮件地址列表中读取邮件地址,然后将其放到Bcc :字段或RCPT命令中,就可以把同一封邮件发给成千上万的受害者。(3)无限转发无限制转发,就是任何人都可以使用你的服务器发送邮件,来隐藏了真是的来源。发送者可以使用一台简单的PC机借用你的强大的服务器一次发送几十万封信。OPEN RELAY是由历史的原因遗留下来的邮件服务器的安全缺陷。目前,绝大多数邮件服务器都具有关闭或限制OPEN RELAY的功能,有的需要更新到某个版本之后,有点需要打补丁。(4)伪造邮件的信源Spammer为了对抗过滤技术,采用了许多逃避检测和追踪的技术。如利用OpenRelay服务器、自架设MTA服务、采用动态IP地址、伪造或隐藏信源地址等,有的甚至直接攻击邮件服务器,获得权限后,通过该服务器发送垃圾邮件,给反垃圾邮件工作带来了重重障碍。垃圾邮件发送者采用以上技术,使得垃圾邮件发送的方式越来越隐蔽,其特点主要表现在:发件人地址随机变化、邮件主题随机变化、伪造邮件头干扰信息、信件主体内容随机变化、正文以图片方式显示等,造成了垃圾信息难以识别。(三)反垃圾邮件研究垃圾邮件已成为威胁网络安全的一个严重问题,很多学者和技术人员开展了反垃圾邮件的研究工作。1995年7月,spam被用来专门指代垃圾邮件,这说明反垃圾邮件的研究正式成为一个的重要研究课题。反垃圾邮件的主要研究工作集中在以下两个方面:一方面是研究如何应用非技术手段来防治垃圾邮件,另一方面是研究新的反垃圾邮件技术来过滤和阻断垃圾邮件的传播。下面我们简单介绍一下这两个方面的研究工作。1. 非技术手段反垃圾邮件(1) 法律手段面对互联网中越来越严重的垃圾邮件问题,很多国家都制定了反垃圾邮件的法律,将发送垃圾邮件行为视为违法,希望能够对垃圾邮件的发送者起到威慑作用,进而减少网络上垃圾邮件的数量。2003年12月,美国总统签署了CANSPAM法案,该法案禁止在商业邮件中伪造邮件头信息,并要求商业邮件必须包含明确的身份标志,违反该法案将被罚款。2004年4月,4名垃圾邮件发送者受到了该法案的惩罚,成为第一批受法律制裁的垃圾邮件发送者。但是,在网络环境下确定垃圾邮件发送者身份很困难,另外,对垃圾邮件发送者的惩罚,不同国家的法律规定也不同,这些使得法律手段收效不大。(2) 经济手段很多学者从经济学的角度提出了一些方法,如通过电子邮票等来防治垃圾邮件。电子邮票类似于普通邮票,是指通过某种方式向电子邮件的发送者收取一定费用。对于正常的电子邮件使用者,他们发送邮件的数量不是很大,电子邮票的费用是很少的,但是对于垃圾邮件发送者,他们会大量发送垃圾邮件,所收取的费用也随之增加很多。这样,垃圾邮件发送者将无利可图,他们就不会热衷于发送垃圾邮件了。但是,在电子邮票投入使用前,还有很多问题需要讨论和解决。例如,电子邮票的费用由谁收取,怎么对这些费用征税,还有谁被授权出售这种电子邮票。2. 技术手段反垃圾邮件目前研究人员针对垃圾邮件的对策,从技术层面上讲,主要包括三类技术:一是基于IP地址、域名和路由等的过滤技术,二是基于内容的过滤技术,三是基于行为的过滤技术。(1)基于IP地址、域名和路由的过滤技术白名单、黑名单技术黑名单(Black List)是指已知的垃圾邮件发送者地址,而白名单(White List)是指可信任的邮件发送者的地址。服务器拒绝地址或域名在黑名单中的邮件,白名单主要用来确认合法的电子邮件。黑白名单过滤技术简单,效率很高,系统资源消耗小,易于实施。但是,黑白名单技术需要手动维护地址清单(即黑白名单),并且,一些正常邮件,可能因为发送方地址在黑名单中而被拒绝,从而造成某些邮件不能正常投递。实时黑名单(Realtime Black hole List,简称RBL)是目前最流行的黑白名单技术,也被称为DNSRBL。目前提供RBL服务的组织有Spamhaus、MailAbuse等,中国反垃圾邮件联盟针对国内的垃圾邮件情况提供了实时黑名单CBL和实时白名单CML。但是,及时地更新黑白名单很困难,在实际应用中,它很难取得很好的效果,通常作为其他技术的补充。反向域名解析垃圾邮件发送者经常通过伪造域名,隐藏自己的身份。一个电子邮件从一台服务器发送到另外一台服务器,两台服务器之间需要建立一个TCPIP连接。接受方服务器在接收邮件时,可以利用发送方的IP地址做反向域名查询,将查询到的域名与邮件头中所声明的域名进行比较,如果不一致,则说明该邮件的域名是伪造的。安全认证技术安全认证技术是指通过签名技术,来对发送方服务器身份进行验证。Domain Keys技术是Yahoo和Microsoft提出的典型的安全认证技术,该技术的核心思想是,每个域名(Domain name)都申请一个PKI证书,然后把公匙存储在DNS服务器中。发件服务器对每一封电子邮件使用该服务器的私匙进行签名,收件服务器则使用公钥验证发件服务器的签名是否有效。通过这种技术可以有效地对发送方服务器的身份进行验证,从而防范垃圾邮件。Domain Keys技术的安全认证体系,要求发送方服务器和接收方服务器都支持Domain Keys技术。目前,受这个因素影响,Domain Keys技术使用还不普遍。(2)基于内容的过滤简单的模式匹配是指系统预定义一些规则,对于一封邮件,系统根据匹配情况将其分类。很多垃圾邮件过滤程序就是利用这种方法进行垃圾邮件的分类。David Mertz在文章“Spare filtering techniques中,用了很简单的几条规则便过滤了80的垃圾邮件,但是他也说“很不幸的是,这种简单的方法同样会带来比较高的误判率”。因此,尽管这种方法简单、高效,但是因此分类性能不佳。目前,通常使用基于规则或基于统计的过滤技术。基于规则的过滤基于规则的过滤是指对每一封收到的邮件进行规则匹配,如果一条规则被匹配,则对该邮件加上一个分值,来描述它属于垃圾邮件的可能性。如果所有的规则匹配完以后,总分超过了一个预定义的阈值,则该邮件被判定为垃圾邮件。规则是拒收或过滤邮件的依据。简单的规则有拒绝主题中包含某个关键词的邮件,或创建拒收邮件地址列表等,复杂的规则支持正则表达式匹配。基于规则过滤方法的一个优点是不需要经过预先学习就可以得到相当不错的过滤效果。规则是由人设定的,因而它可以非常复杂,也可以比较简单。基于规则方法的另一优点是规则可以共享。一个人写出的规则可以提供给多个人使用,因此它的推广性很强。Spam Assassin(简称SA)是一款著名的基于规则的垃圾邮件过滤软件,使用Perl开发。它通过分析邮件信息,并统计垃圾邮件相似度对邮件进行分类。Spam Assassin使用大量的预设规则检查垃圾邮件,采用记分制,对发现的每一个关键词根据所设定的规则累计分数,分数越高,该邮件是垃圾邮件的可能性就越高,当分数超过预先设置的阈值后,该封邮件就会被当作垃圾邮件处理,通常会在邮件头加入警告信息。当Spam Assassin处理一封邮件时,它会对这封信件应用各项规则,生成一个总的分值来表示其为垃圾邮件的可能性。Spam Assassin的规则示例图如下图所示:BodyDEAR_FRIEND/S*Dear Friendb/iDescribeDEAR_FRIENDDear Friend?Thats not very dear!ScoreDEAR_FRIEND0.542图3-1 Spam Assassin 规则示例图该规则名称为DEARFRIEND,是一条对信体内容(body)进行字符匹配的规则,describe是对该规则的描述,score是该规则对应的分值。这条规则的含义是:如果信体中含有“Dear Friend”(忽略大小写)则匹配成功,该邮件被加的分值为0.542。基于统计的过滤器该技术源自机器学习,采用机器学习、文本分类技术自动进行邮件分类。有很多文献都提到了通过机器学习和文本统计的方法,来进行内容的学习和分类。其核心思想是采用某个分类算法(如常用的贝叶斯算法等)对已知的垃圾邮件样本进行学习,提取垃圾邮件的特征,构造过滤器;然后运用此过滤器,对新的邮件进行过滤,过滤的结果提交给用户,用户可对过滤结果进行反馈,系统再根据反馈结果对过滤器进行调整。这是一种智能化垃圾邮件识别技术,并且已经在垃圾邮件识别中取得了较好的效果。基于统计的过滤器通过检查邮件的整个内容,根据其内容和以往垃圾邮件的类似程度进行分类和过滤,最成功的一种基于统计的过滤器是贝叶斯过滤器。(3)基于行为的过滤过滤群发软件所发送的邮件其基本思想是根据邮件头信息进行判断,如果该邮件为群发软件所发,则判定其为垃圾邮件。流量监控基本原理是在MTA(Mail Transfer Agent)端对邮件来源进行监控,若某个IP的流量在短时间内超过一定范围,则认为该IP对应的服务器很可能在发送垃圾邮件,从而对其警告或拒收。电子邮件认证电子邮件认证是指采用挑战回应的机制对邮件发送方进行认证。当收到一封邮件时,该系统自动发出一个一次性的认证邮件给发送方。如果发送方能够成功的响应该认证请求,则该邮件通过过滤器,且所有由这个发送者发送的邮件都被允许通过。这种垃圾邮件过滤技术可以达到很高的准确率,而且可以很有效的避免错误地过滤正常邮件。电子邮件认证技术要求发送者对接收方的挑战进行回应,这种回应对正常邮件的发送方影响很小,而对于垃圾邮件发送者,他需要发送大量的垃圾邮件,很难有那么多的精力进行回应,这就有效地鉴别出了垃圾邮件。Bluebottle和Choice Mail就是这样的系统,这种方法的优点在于它基本上能过滤100的垃圾邮件。但是这种方法也存在几个缺点:第一,邮件发送方需要付出一些额外的精力去应对接收方的挑战,发送方只有通过了挑战才能成功的发送邮件,如果万一发送方没有响应该挑战,则该邮件就会被丢弃。第二,认证响应信息也可能因为防火墙的封堵而造成丢失。第三,对于那些在线订阅的订单和时事通讯,这种方法经常会给它们带来麻烦。第四,认证的消息也造成了网络流量的增大。基于行为模式识别基于行为模式识别的基本思想是分析发送垃圾邮件的行为特征,从而识别垃圾邮件。垃圾邮件在发送阶段处于活跃的状态,恶意的行为特征远比内容特征要明显。发送垃圾邮件的行为特征主要有IP固定性、发送频率大、时间集中、借用邮件服务器漏洞、发信地址不明、路由地址不明、服务器不明和TCP会话异常等,通过分析其特征,建立基于行为识别的反垃圾邮件模型,进行垃圾邮件识别。四、客户端垃圾邮件过滤技术研究(一)中文分词中文分词就是将连续的字序列按照一定的规范重新组合成词序列的过程。词是自然语言中最小的有意义的构成单位。汉语文本是基于单字的文本,汉语的书面表达方式以汉字作为最小单位,词与词之间没有明显的界限标志。所以,在处理电子邮件这种半结构化文本,进行特征提取时,必须使用分词方法将邮件句子中的词划定边界,以方便计算机识别和处理。1. 中文分词的常用方法中文分词方法主要有三类:第一类是基于词典的字符串匹配分词方法,第二类是基于词的频度统计分词方法,这两类方法实用、具体,比较容易实现:第三类方法是基于理解的分词,对句法、语法进行分析,并结合语义分析,通过对上下文内容所提供信息的分析对词进行定界,这类方法试图让机器具有人类的理解能力,一般不易实现。(1)机械分词方法这种方法又叫做基于字符串匹配的分词方法,其主要思想是对待分词的汉字字串S,按照某种确定的原则切取S的子串,若该子串与词库中的某词条相匹配,则该子串是词,继续分割剩余的部分,直到剩余部分为空;否则,该子串不是词,转向重新切取S的子串进行匹配。按照扫描方向的不同,字符串匹配分词方法可以分为正向匹配和逆向匹配;按照不同长度优先匹配的情况,可以分为最大(最长)匹配和最小(最短)匹配。常用的几种字符串分词方法如下:正向最大匹配法(Forward Maximum Matching Method)通常简称为FMM法。用Max Length表示最大词长,按照从左到右的顺序,首先从汉字串中取长度为Max Length的子串,查词典,若词典中存在这个词,则切分出这个子串,后移Max Length个汉字后继续切分,否则,子串长度减1,再与词典匹配。若长度为2的子串仍不能在词典中找到,则取当前汉字为词,完成一轮匹配过程,指针后移一个汉字继续匹配。然后再按照上面的步骤进行下去,直至切分出所有的词。正向最大匹配法的原理较简单,易于在计算机上实现,时间复杂度比较低。逆向最大匹配法(Reverse Maximum Matching Method)通常简称为RMM法。RMM法的基本原理与FMM法相同,不同的是分词的扫描方向,它是从右至左取子串进行匹配。最少切分分词法其基本思想是使每一句中切出的词的数量最少。(2)基于词频的统计方法统计方法一般不依赖于词典,而是将原文中任意前后紧邻的两个字作为一个词进行出现频率的统计,出现的次数越高,成为一个词的可能性也就越大。在频率超过某个预先设定得阈值时,就将其作为一个词进行分词处理。这种方法能够有效地提取出词典中不存在的词,可以作为基于词典分词方法的有效补充。据统计,在英语中大约有250个最常用的词语被放入了“停用词表(stop list),高频的功能词占到了文本词语的40.50。中文停用词与英文停用词有一定差别,因为中文的功能词在语言结构中可能有多重角色,多重含义。然而,去除停用词也是必要的。(3)特征项的提取特征项选取的任务就是要将信息量小、“不重要的词汇从特征项空间中删除,从而减少特征项的个数。特征提取的好坏直接关系到分类结果的优劣。构成文本的特征项越多,分类算法的代价就越高,过多的特征项还会导致无法准确地提取文档的类别信息,造成分类效果不佳。因此,需要在不牺牲分类质量的前提下,尽可能的降低特征项的个数。特征项选取是文本自动分类系统中的一个关键步骤。关于特征选取,有五种常用的特征提取的方法:文档频率(Document Frequency,DF)、信息增益(Information Gain,IG)、互信息(Mutual Information,MI)、开方拟合检验(CHI,x2-test)、术语强度(TS,Term Strength)等。(二)过滤模式1. 客户端过滤模式基于客户端的过滤模式不必担心过滤会形成邮件服务器的瓶颈,可以真正对邮件进行内容过滤,从而提高邮件过滤的精确度。客户端模式可以帮助过滤系统实时地接受用户的反馈,体现特定用户的个性化需求,提高邮件过滤的精确度,本文采用基于客户端的过滤模式。本文在对垃圾邮件进行定量描述的基础上,研究多层过滤,对黑白名单过滤和一种中文关键字匹配算法进行了改进,并研究了用户反馈机制,设计了一种基于客户端的邮件过滤系统,该系统能接收用户反馈信息,体现用户的个性化需求,可以较好解决邮件判定标准问题。2. 多层过滤各种过滤技术有各自的优点,如果能综合使用多种过滤技术,将提高邮件过滤系统的性能。本文研究的系统运行在客户端,不必担心过滤系统会造成服务器的处理瓶颈,因此本文采用多层过滤策略,对电子邮件的进行完全地过滤检测。第一层为基于信头特征过滤,根据信头特征进行过滤。第二层过滤采用基于规则过滤,依据权值和过滤算法对邮件的分值进行计算。第三层过滤则是对敏感关键字,使用一种中文匹配算法进行过滤。经过三层过滤后,得到总的分值M,系统根据设定的下限阈值Wl和上限阈值W2(本文设定W1=05,W2=3),来对邮件类别进行判断。(1)基于信头特征的过滤根据垃圾邮件的定量描述,设垃圾邮件的信头特征为X,将它包含的元素分别设为xi,i=l,2,11,根据不同的xi设定的权值如表4-1所示。表4-1 垃圾邮件的信头特征Xixi的具体内容权值X1Received字段个数大于等于3个0.5X2对邮件发送服务器做反DNS查询,发送服务器的域名与IP不匹配0.5X3发件人地址在黑名单中查询黑名单表X4发件人地址在白名单中查询白名单表X5邮件的发件人和收件人地址相同0.5X6邮件发送服务器的域名与邮件发件人的域名不同0.25X710分钟内同一个发件人发送的邮件个数超过可接受值30.5对于一封邮件,根据表4-1,查询对应的权值,计算这一层的分值S1,并累计入总的分值M中。对于信头特征项x3、x4,采用黑白名单过滤技术。黑白名单过滤技术的特点是简单高效,系统资源消耗小,易于实施。但是,黑白名单过滤并不适合所有用户,来自黑名单中地址的邮件,对于某些用户来说可能是正常邮件。如一些发送广告邮件的服务器,被列入了黑名单,如果采用黑名单过滤,则对需要广告邮件的用户,就意味着正常邮件的丢失。(2)基于规则的过滤目前基于内容的过滤技术主要有基于规则过滤和基于统计过滤两种。基于统计过滤的优点是规则通过机器学习自动产生,规则更新较及时,但是在规则生成过程中,需要大量的邮件样本作为过滤器的训练集。本文设计的过滤系统是基于客户端的,如果采用基于统计过滤技术,存在两个问题:客户端用户可能无法得到大量的的训练集,使得过滤系统训练不充分,影响过滤效果。客户端用户使用的训练集可能不适合其需求,造成过滤效果不理想。基于规则的过滤可以直接使用现有的规则集,无需利用邮件样本进行训练,就可达到较为满意的过滤效果,适合客户端用户,因此,本文采用基于规则的过滤技术。基于规则过滤效果与规则集密切相关,而一些成熟的规则过滤器的规则集,大多针对英文邮件,在处理中文邮件时,突出的问题是存在某些规则的分值有些偏高,中文用户使用前需要对规则分值进行较大的调整。(3)敏感关键字过滤基于内容邮件过滤器进行攻击的方法主要有5种:切词破坏、单词沙拉、URL欺骗和隐藏攻击、稀疏数据攻击、干扰过滤器再学习。切词破坏是指垃圾邮件发送者经常采用一些方法来掩盖敏感关键字,发动针对内容过滤器的攻击,如把文本中规范的敏感关键字替换为经过变换后的“词”。这种经过伪装的邮件,一方面读者通常能够理解经过变换后的“词,另一方面,还可以逃脱基于内容的邮件过滤系统的拦截。本文针对切词破坏,使用第三层过滤,定义敏感关键字表,将“免费”、“色情”等敏感关键字存储到敏感关键字表中,然后使用一种改进的中文关键字匹配算法进行第三层过滤。五、系统分析(一)可行性分析可行性研究是以相对短的时间和相对低的成本来确定给定的问题是否有解。这里相对短和相对低是指和实现建议系统所需时间和成本相比较而言。可行性研究主要从下述4个方面进行研究:技术可行性、经济可行性、操作可行性和调度可行性。1. 技术可行性技术可行性的考虑集中在现存的计算机硬件能否支持被研究的系统,首先关心的是该组织是否有相应的软件和硬件能够支持处理建议的应用程序。其次考虑在规定平台之上,利用现有的成熟技术是否能够实现这个应用。现代计算机硬、软件技术的飞速发展,为系统建设提供了技术条件。计算机等基础设施的更新换代也紧跟潮流的发展,这就为开发系统提供了坚实基础。2. 经济可行性这是经典的并且是最常使用的评价计算机系统的方法。这个评价的结果称为成本效益分析。简单地说,经济可行性研究是确定得自新系统的节省和利益,将这些利益和系统的实现成本相比较,如果利益超过成本,则开发新系统的决策是肯定的;否则的话,除非有其他特殊原因,这个决策将是否定的。本软件的实现是作为考核学生学习情况的手段,不存在经济可行性的问题。3. 操作可行性操作可行性是指人员的手工操作而不是指计算机系统操作是否可行,也就是说在实现了建议的计算机系统后,所需要的配合的手工操作是否可行。作为新时代的学生,几乎人人都具备计算机的基本操作能力,而本软件的使用又十分简单方便,所以具备操作可行性。4. 调度可行性调度可行性指的是建议的计算机系统能否在规定的期限内交付给用户。基于本软件,经过上述的分析,可以在规定的期限内完成。从当前情况来看,本软件的开发是可行的。(二) 功能需求分析功能需求分析旨在研发开始阶段对系统应该具备的哪些功能进行充分的研究,确认哪些功能需要,哪些功能不需要,哪些功能是核心功能。分析并确认各个功能的权重以及工作量。为整个的开发过程确立明确的目标。1. 基本功能为了能够查看邮件需要一个图形化的界面显示收件箱中邮件列表。当收到新邮件时,邮件列表中会增加新邮件项。鼠标点击邮件标题,能够显示邮件的内容,包括邮件发件人信息,邮件时间,邮件正文内容等。为了能够发送邮件需要一个图形化的界面编辑新邮件,包括编辑收件人地址,邮件正文内容。点击发送邮件按钮,能够将邮件发送到目标收件人中。如果收件人地址错误或者发送失败,提示相关的发送失败信息。2. 核心功能为了能够识别垃圾邮件需要黑白名单和基于规则的识别机制,用户可以自定义黑白名单和规则库,系统能够根据用户设置的规则来识别出垃圾邮件。黑白名单:用户可以自己查看、添加和删除黑白名单用户,系统根据黑白名单内的用户进行过滤。规则库:用户可以查看、修改规则库,系统根据规则库的内容对垃圾邮件进行识别。六、系统总体设计(一)系统功能规划该系统采用客户端过滤模式,使用多层过滤,采用关键字权值过滤方法,再配合使用黑白名单过滤技术,有较好的过滤效果。系统应具备的功能主要有:(1)接收邮件和发送邮件的功能本系统提供友好的界面,可以使用本系统访问并读取用户邮箱中的电子邮件。系统应有编辑邮件文本内容、发送电子邮件。(2)垃圾邮件过滤功能本系统具有过滤垃圾邮件功能,这是系统最关键的一项功能。在接收邮件时,系统应有对邮件进行分析并识别垃圾邮件的功能。另外,系统还应该具备安装简单,容易配置和使用,界面友好等特点,对用户目前的使用习惯也充分考虑。(二)系统模块划分本系统主要分为邮箱认证、邮件发送、邮件接收、垃圾邮件识别四大模块。图6-1 系统模块功能图七、系统详细设计(一)功能设计1. 邮箱认证模块该模块用于客户端和邮件服务器连接,并向服务器认证。登陆信息录入:输入:用户名,密码;输出:无;描述:输入用户名,密码,为登陆邮箱服务器做准备工作。登陆成功,提示用户登陆成果;如果登陆失败,根据服务器的反馈信息提示用户登陆失败原因。2. 邮件发送模块该模块用于用户创建邮件,并发送给指定的地址。编辑并发送邮件:输入:收件人地址、邮件内容;输出:邮件发送状态;描述:通过邮件服务器,将编辑好的邮件发送到指定的地址。如果发送成功,提示用户发送成功;如果发送失败,根据服务器反馈的信息提示用户发送失败的原因。3. 邮件接收模块该模块用于从服务器接收邮件。下载邮件:输入:无;输出:邮件服务器上接收到的新邮件;描述:将服务器上接收到的邮件下载到本地客户端,并准备进行解析。4. 黑白名单过滤输入:接收到的新邮件;输出:该邮件是否为垃圾邮件;描述:解析邮件中的发件人信息,首先在白名单中查找,如果查找到匹配项,将该邮件标志为正常邮件;然后在黑名单中查找,如果查找到匹配项就标志为垃圾邮件。如果两个名单中都未查找到匹配项,则继续进行规则过滤。5. 规则过滤输入:接收到的新邮件;输出:该邮件是否为垃圾邮件;描述:对该邮件进行分词。对于分词的结果在敏感词库中进行匹配,如果匹配到,就将该邮件标志为垃圾邮件;如果未匹配到敏感词,就标志为正常邮件。分词:输入:字符串;输出:由词构成的列表;描述:将输入的连续的中文句子分割成一个个词组,用来进行进一步的查找匹配。6. 邮件处理正常邮件处理:输入:被标记为“正常”的邮件;输出:邮件的主题,正文,发件人;描述:经过识别算法识别之后的邮件,如果被标记为正常邮件,就存入收件箱,并将邮件中的内容通过界面显示给用户。垃圾邮件处理:输入:被标记为“垃圾”的邮件;输出:无;描述:经过识别算法识别之后的邮件,如果被标记为垃圾邮件,直接放入到垃圾箱中。(二)系统流程图1. 邮件接收流程图用户首先需要登陆到服务器中。每次收到邮件会通过黑白名单和规则过滤对邮件进行识别。如果邮件为正常邮件,就保存在收件箱中;如果邮件为垃圾
展开阅读全文