为了正常的体验网站,请在浏览器设置里面开启Javascript功能!

基于贝叶斯算法分类的反垃圾邮件系统的改进硕士学位论文

2018-09-21 46页 doc 397KB 17阅读

用户头像 个人认证

北溟愚鱼

暂无简介

举报
基于贝叶斯算法分类的反垃圾邮件系统的改进硕士学位论文长春工业大学硕士学位论文 学位论文题目:基于贝叶斯算法分类的反垃圾邮件系统的改进 摘  要 电子邮件成为一种快捷、经济的现代通信技术手段,极大地方便了人们的通信与交流。然而,垃圾邮件的产生,影响了正常的电子邮件通信,占用了传输带宽,对系统安全造成了严重的威胁。因此,研究反垃圾邮件问题已经成为全球性的具有重大现实意义的课题。 目前,应对垃圾邮件的主要方法和手段是通过反垃圾邮件立法和使用邮件过滤技术进行处理,现已相继出现了多种邮件过滤技术。常用的包括黑/白名单技术、基于内容的分析方法以及基于规则的方法等。基于内容分析...
基于贝叶斯算法分类的反垃圾邮件系统的改进硕士学位论文
长春工业大学硕士学位 学位论文题目:基于贝叶斯算法分类的反垃圾邮件系统的改进 摘  要 电子邮件成为一种快捷、经济的现代通信技术手段,极大地方便了人们的通信与交流。然而,垃圾邮件的产生,影响了正常的电子邮件通信,占用了传输带宽,对系统安全造成了严重的威胁。因此,研究反垃圾邮件问题已经成为全球性的具有重大现实意义的课题。 目前,应对垃圾邮件的主要方法和手段是通过反垃圾邮件立法和使用邮件过滤技术进行处理,现已相继出现了多种邮件过滤技术。常用的包括黑/白名单技术、基于内容的分析方法以及基于规则的方法等。基于内容分析的技术正逐步进入邮件过滤技术当中,并成为当前研究热点,其中,基于内容分析的邮件过滤方法中的典型方法是基于贝叶斯算法的垃圾邮件过滤模型。 本论文对中文垃圾邮件的特点进行了比较系统的分析和研究,结合贝叶斯(Bayes)理论,构造基于贝叶斯分类的垃圾邮件过滤模型,在特征提取方面,采用互信息值的方法,在分类方法上,引入了适合本文的分类方法,并采用了一种更加适合于贝叶斯计算的表示方法;本文作者采用中国教育科研网(CERNET)收集并维护的大量中文垃圾邮件和正常邮件样本的数据集,对本文研究的方法进行了大量测试,准确率和误判率分别达到了 95.8%和 5.3%。结果表明基于贝叶斯算法的垃圾邮件过滤系统对拦截垃圾邮件有很好的作用。 关键词:电子邮件,垃圾邮件,邮件过滤,贝叶斯理论 Abstract The e-mail has become a quick and economical means of modern communication technology, which enormously facilitates people's communication and exchanges. However, the emergence of spam has affected the normal email correspondence, and taken the transmission band width, even posed the serious threat to the system safety. Therefore, the study of anti-spam has become a global problem of great practical significance of the topic. At present, the main ways and means of the response to spam are the anti-spam legislation and the use of mail filtering technology. But now a variety of mail filtering technologies have appeared in succession, which are usually used including black / white list technologies, content-based analysis methods, and rule-based methods. Content-based analysis techniques are gradually entering the mail filtering technology which has become hot spots of current research. The typical method of content-based analysis mail filtering methods is based on Bayesian algorithm for spam filtering model. In this paper, the Chinese characteristics of spam has been studied and analyzed systematically. Combining with Bayesian (Bayes) theory, this paper constructs the spam filtering model which is based on Bayesian classification. In feature extraction, mutual information values are used. In the classification method, a classification method is introduced which is suitable in this article, and a more suitable expression in the Bayesian calculation method is adopted; the standard sample data sets of a large number of Chinese spam and regular mail are collected and maintained by the Chinese Education and Research Net (CERNET). The author conducted a lot of testing towards the methods which are studied by this paper. The accuracy and misjudgment rate reached 95.8% and 5.3% respectively. The results show that the spam filtering system based on algorithm Bayesian plays a very good role to block spam. Key Words: e-mail, spam, mail filtering, Bayesian theory 学位论文原创性声明 本人郑重声明:所呈交的论文是本人在导师的指导下独立进行研究所取得的研究成果。除了文中特别加以标注引用的内容外,本论文不包含任何其他个人或集体已经发表或撰写的成果作品。对本文的研究做出重要贡献的个人和集体,均已在文中以明确方式标明。本人完全意识到本声明的法律后果由本人承担。 作者签名: 日期: 年 月 日 学位论文版权使用授权书 本学位论文作者完全了解学校有关保留、使用学位论文的规定,同意学校保留并向国家有关部门或机构送交论文的复印件和电子版,允许论文被查阅和借阅。本人授权      大学可以将本学位论文的全部或部分内容编入有关数据库进行检索,可以采用影印、缩印或扫描等复制手段保存和汇编本学位论文。 涉密论文按学校规定处理。 作者签名: 日期: 年 月 日 导师签名: 日期: 年 月 日 目 录 3第一章 绪论 31.1 引言 41.2 垃圾邮件的定义及其危害 41.2.1 垃圾邮件定义 41.2.2 垃圾邮件危害[5] 61.3 国内外反垃圾邮件现状 71.4 研究目标与内容 7第二章 垃圾邮件技术 72.1 电子邮件工作原理简介 72.1.1 电子邮件的概述 82.1.2 电子邮件的格式 92.1.3 邮件传送过程 102.1.4 相关协议 152.2 非技术手段反垃圾邮件 162.3 常用反垃圾邮件技术 162.3.1客户端垃圾邮件过滤技术 172.3.2 服务器端垃圾邮件过滤技术 19第三章垃圾邮件分类向量与特征向量 193.1垃圾邮件分类向量概述 203.2垃圾邮件分类向量与特征向量的定义 213.3分类方法 213.3.1文本量的表示方法 223.3.2关键词的选择 233.3.3特征提取的方法 253.3.4分类方法介绍 253.4基于垃圾邮件特征向量判断垃圾邮件的算法的设计 263.4.1贝叶斯定理[28] 263.4.2贝叶斯过滤系统的工作原理 273.4.3 算法的介绍 28第四章基于标准邮件集构造垃圾邮件分类向量 284.1标准邮件集 284.1.1标准邮件集的背景 284.1.2垃圾邮件和正常邮件的收集 294.1.3标准邮件集的概述 304.2基于标准邮件集的垃圾邮件分类向量 304.2.1分类的实现 304.2.2 提取分类向量的过程 334.2.3先验概率的计算方法 334.2.4特征提取的实现 344.3基于贝叶斯原理的过滤系统的实现 354.4算法的实现 37第五章 实验结果及分析 375.1基于贝叶斯算法的过滤系统实验环境 385.2基于贝叶斯算法的过滤系统总体结构图 395.3实验结果及性能分析 395.3.1系统实验结果的质量评价指标 405.3.2阈值的确定及对过滤精度的影响 405.3.3实验数据 42第六章 总结与展望 426.1论文总结 436.2待改进的问题 43参考文献 第一章 绪论 1.1 引言 伴随着电子邮件的迅速普及,越来越多的人使用电子邮件。然而,电子邮件在为人们提供极其方便的同时也成为垃圾邮件、病毒、恶意程序或敏感内容邮件传播的重要载体,对系统安全造成了严重的威胁。 最早在 1975年的 RFC706“On the Junk Mail Problem”[1]中就提到了垃圾邮件,首次关于垃圾邮件的记录可以追溯到 1985 年 8 月的一封以电子邮件发送的连锁信。历史上比较著名的事件是1994年4月份,Canter 和 Siegel 的法律事务所把一封信发到 6000 多个新闻组,宣传获得美国国内绿卡的法律支持。这是第一次使用 Spam(垃圾邮件)一词,用来描述新闻或电子邮件的主动性发布。一些商人开始学习Canter 和 Siegel,为商业公司提供广告信件和发送服务。1995 年 5月,网上出现了历史上第一个专用的垃圾邮件工具Floodgate[2],一次可以自动把邮件发给很多人,垃圾邮件越来越多与商业联系起来。1995年8月,第一次有人公开贩卖200万个邮箱地址,各种垃圾邮件网站和组织也相继出现。 随着垃圾邮件的出现和泛滥,人们开始了反垃圾邮件的不懈努力。1996 年的1 月,第一个反垃圾邮件组织“自由骑士”成立;1996 年 7 月,著名的反垃圾邮件网站SpamHaus成立,例如使用REMOVE.TO.REPLY 的工具来过滤邮件地址。随着垃圾过滤邮件技术的发展以及人们对发送垃圾邮件者的谴责,垃圾邮件的制造者不得不采取更为隐蔽的技术,比如伪造信头中的发件人、域名和邮件地址等。然而这些方法还是逃不出 IP 地址的过滤。 近几年来,垃圾邮件的泛滥是由于专门发送垃圾邮件的服务器大批涌现。根据中国互联网协会反垃圾邮件中心的统计,2005年以来几乎每月我国都有100多台服务器被国外权威反垃圾邮件组织列入黑名单[3]。中国是电子邮件大国,由于网络的开放性,垃圾邮件成为互联网上的一个日益严重的全球性安全问题,越来越得到社会大众和研究人员的重视和关注。因此,针对这一问题尽快寻找解决的需求也更加迫切。 1.2 垃圾邮件的定义及其危害 1.2.1 垃圾邮件定义 垃圾邮件的英文名称为 Spam或Junk Mail,一般使用Spam一词。很多组织或机构都给垃圾邮件下过定义。例如,著名的反垃圾组织spamhaus提出,垃圾邮件具备以下两个特征: (1) 不请自来。用户事先并未提出要求或者同意接收该邮件。 (2) 批量性。该邮件的副本在短时间内被大量发送给一个或多个用户。 2003 年,中国互联网协会在《中国互联网协会反垃圾邮件规范》中对垃圾邮件作了以下定义[4]: (1) 收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传品等宣传性的电子邮件; (2) 收件人无法拒收的电子邮件; (3) 隐藏发件人身份、地址、标题等信息的电子邮件; (4) 含有虚假的信息源、发件人、路由等信息的电子邮件。 从以上界定的邮件内容上看,目前可以将垃圾邮件归纳为具有以下几类特征的邮件:带有商业广告性质的邮件;色情、暴力邮件;网上购物及赚钱的邮件;带有政治目的的邮件以及带有病毒的邮件等。 1.2.2 垃圾邮件危害[5] 垃圾邮件的泛滥给人们带来的危害和损失主要体现在以下几个方面: (1) 垃圾邮件给网络运营商(ISP)造成了严重的损失。大量的垃圾邮件在网络上传播,占用了网络带宽,导致网络通信质量下降,甚至是网络发生拥塞,干扰邮件系统的正常运行,根据2001年的一份研究报告显示,仅2000年垃圾邮件就给全球ISP造成了至少1000万美元的损失。 最新的调查显示,企业收到的电子邮件中,竟有28%为垃圾邮件。英国电邮防毒企业Message Labs在调查中发现,有三分之一的企业抱怨他们收到了不想收到的电子邮件,有三分之二的企业表示他们正试图通过修改有关政策解决垃圾邮件泛滥的问题。调查报告指出企业雇员通常每日花费10分钟的时间清理收件箱内的垃圾邮件。照这一数字计算,每日由此造成的损失可达每100位雇员4.7万英镑。Message Labs公司指出,通过调查可以看出,越来越多的企业已经开始意识到垃圾邮件会浪费企业IT资源,降低生产效率。一些企业己经采取了解决方案。一项统计报告指出ISP业者为了对抗垃圾邮件,平均每个用户必须花费2元美金成本;该项报告还指出垃圾邮件将影响传输速度30%以上。 (2) 垃圾邮件侵害了用户的隐私权。由于垃圾邮件的内容不可控制,所以常常有很多有害的内容。例如,一些广告的垃圾邮件推广一些危险甚至是非法的盈利手段,如赌博或传销等;还有一些色情的邮件,含有大量不健康的内容,特别是当收件人是未成年人时危害更大。尤其危害大的是,很多垃圾邮件的附件中带有病毒,一旦收件人打开邮件,附件中的病毒就会对系统造成各种破坏。垃圾邮件占用了用户邮箱空间,严重时导致用户无法收取有用邮件;有的垃圾邮件还盗用他人的电子邮件地址做发信地址,严重损害了用户的信誉。 (3) 垃圾邮件给网络带来了各种安全性的问题。垃圾邮件会极大的影响网络的安全和系统的稳定性,特别是那些利用别人的服务器转发邮件的情况。因为目前大部分的垃圾邮件是利用第三方服务器转发(OPEN RELAY)。这样做可以节省邮件发送者经费,但是会给被盗用者带来很多危险,如由于线路拥塞,造成系统的瘫痪。他就会让被盗用的邮件服务器背上转发垃圾邮件的黑锅,影响正常的信件发送。例如早些时候,为了制止来自中国的垃圾邮件泛滥的趋势,中国电子邮件面临被欧洲全面封杀、由于技术落后和缺乏相应安全措施,美洲的垃圾邮件制造者通过中国的邮件服务器发送垃圾邮件,而中国国内的邮件服务器配置很差,很难记录它们是从哪儿传来的信件。这些邮件服务器正是被西方垃圾邮件制造者用来转发垃圾邮件,这就是所谓“瞎子式转发”(Blind Relay),并被他们彼此以几百美元的价格互相买卖这种服务器的地址,最终欧美的很多ISP服务提供商封锁了中国的IP地址段。从那时起,国际反垃圾邮件(Mail-Abuse)等组织的黑名单上就没少出现中国互联网企业的名字,新浪、网易、搜狐、163邮局、263、21cn等国内主要邮件服务都曾上榜。据统计,我国网上用户约为3370万,平均每个用户拥有E-mail账号2.2个。随着中国加入世界贸易组织,中国的对外交流活动将呈上升趋势,对外邮件也将大幅增加,如果中国电子邮件遭遇全面封杀的话,对国外企业与组织也是巨大的损失。 (4) 垃圾邮件成了计算机病毒新的、快速的传播途径。有些病毒利用浏览器的漏洞,以邮件的形式把自己伪装成补丁和安全升级的电子邮件发送给用户,只要用户点击该邮件,该病毒就会被激活。 由此可见,垃圾邮件的危害性是非常大的。必须重视垃圾邮件的危害性以及开展反垃圾邮件工作的重要性,与垃圾邮件进行不懈的斗争。 1.3 国内外反垃圾邮件现状 虽然垃圾邮件问题是最初从西方开始,以英文垃圾邮件为主,但是它越来越成为一个国际性的问题[6],很多学者和技术人员也开展了反垃圾邮件的研究工作。2008年7月24日,中国互联网络信息中心(CNNIC)在京发布《第22次中国互联网络发展状况统计报告》显示,截至2008年6月底,我国网民数量达到了2.53亿,首次大幅度超过美国,跃居世界第一位。与此同时,垃圾邮件也越来越深入网民的日常生活,电子邮件的使用率为62.6%,在网络应用中排名第六位。只有不到40%网民使用电子邮件过滤软件,超过五成的网民没有使用过滤软件,数字显示网民对于防范垃圾邮件的意识薄弱[7]。 我国反垃圾邮件的工作起步较晚,但发展迅速。2005 年 12 月成立了一个政府资助的反垃圾邮件联盟,以应对越来越严重的垃圾邮件问题[8]。2006年2月信息产业部颁布了中华人民共和国信息产业部第38号令《互联网电子邮件服务管理办法》,明确规定了对制造和传播垃圾邮件者的处罚办法。组织各网络服务提供者、电子邮件服务商起草制订并发布《中国互联网协会互联网公共电子邮件服务规范》[9];连续 7 次对外公布垃圾邮件黑名单 IP 地址;推出反垃圾邮件专业门户网站-中国反垃圾邮件中心(www.spam.com.cn)等等一系列的具体而实际的反垃圾邮件治理工作,以减少垃圾邮件的泛滥。 国内外电子邮件系统相关各方都进行了大量的工作,包括在电子邮件系统中引入数字证书,建立各种加密邮件协议和标准,研究邮件防病毒技术和垃圾邮件过滤技术等;同时,不少国家都出台了电子邮件应用相关的法律法规,如电子签名法、反垃圾邮件立法等,对其进行约束和规范。为了保证电子邮件在Internet上安全的运行,在理想状态下,应该有一个Internet电子邮件的安全标准。所有的邮件作者和厂商都要执行它,那么我们在Internet上将具有安全的电子邮件。安全电子邮件先后提出了不同的标准:PGP、PEM和S/MIME。目前国际上有两大类流行的邮件安全系统标准:端到端安全邮件标准(PGP)和传输层安全邮件标准S/MIME。 随着我国政府电子政务的建设,中国加入WTO,越来越多的企会建设自己的邮件系统/自动化办公系统,提高无纸化办公,实现电子商务。用户需要安全的电子邮件系统产品,能够迅速构建安全可靠、高性能的电子邮件系统,并且维护管理和使用都比较方便简单。安全电子邮件系统有着广泛的市场前景。 1.4 研究目标与内容 本文的研究目标是基于贝叶斯算法,构造垃圾邮件过滤模型,并对相关算法进行分析、比较、验证和测试,最后基于改进的贝叶斯算法,实现对垃圾邮件的过滤。 本文的主要工作是研究探讨基于内容分析的邮件过滤方法,分析贝叶斯算法及其改进算法的原理和实现方法,并研究过滤原型系统的设计、实现方法。主要工作内容如下: (1) 对当前现有过滤技术发展现状、基本原理、基本方法和过程进行研究和分析,并对主要过滤技术的优缺点进行比较。 (2) 将垃圾邮件样本集分类,基于已分好类别的垃圾邮件样本集进行研究,提取每个类别中垃圾邮件的关键词,该关键词是垃圾邮件中的敏感字符,是一个类别中能表达该类别文本内容的词条,即分类向量。计算每个分类向量在各类别中出现的概率,即得到特征向量。 (3) 本文采用互信息的方法进行特征选取,计算每个关键词的RMI值,利用RMI值确定特征向量的分量词条。 (4) 解决基于向量空间模型的邮件文本信息表示、文本分类中的特征向量的选择等问题,在对实现过滤器的关键技术中,主要针对基于朴素贝叶斯方法基础上对改进的贝叶斯算法进行深入研究,设计和实现基于贝叶斯算法分类的反垃圾邮件系统的改进的过滤系统,完成邮件过滤过程。 第二章 垃圾邮件技术 根据用户对反垃圾规则的可控性,本章根据电子邮件的原理,分析电子邮件技术及相关协议的不足,列举了当前的一些常用的反垃圾邮件技术,以便用户合理的选择反垃圾邮件技术。 2.1 电子邮件工作原理简介 2.1.1 电子邮件的概述 电子邮件(简称E-Mail)又称电子信箱、电子邮政,它是—种用电子手段提供信息交换的通信方式。它是全球多种网络上使用最普遍的一项服务。这种非交互式的通信,加速了信息的交流及数据传送,它是—个简易、快速的方法。通过连接全世界的Internet,实现各类信号的传送、接收、存储等处理,将邮件送到世界的各个角落。到目前为止,可以说电子邮件是Internet资源使用最多的一种服务,电子邮件不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。 Internet问世后的最初应用就是电子邮件。虽然今天Internet的应用范围得到了极大的拓展,电子邮件仍然是最为广泛的应用之一。在过去的若干年里,电子邮件的功能已经丰富了很多。据2000年3月份MessagingOnline的一份数据显示,Internet上有5.69亿个邮箱,平均每个Internet用户有1.8个。《中国互联网发展大事记》中记载“1987年9月20日,钱天白教授发出我国第一封邮件‘超过长城,走向世界’,揭开了中国人使用Internet的序幕”。今天,电子邮件已经成为商业、政府、教育等行业最基本的通信工具。 为了创建一个世界范围的电子邮件系统,1984年ISO(国际标准化组织)和ITU(国际电信联盟)发布了一个新的信件传递标准,这就是X.400[10],但由于它的规模和复杂性,并没有在全球范围内流行。后来,邮件的协议和内容格式也是由RFC(Request or Comments)几个文档规定的。RFC821[11] 规定SMTP(Simple Mail Transfer Protocol,简单邮件传输协议),定义发送邮件的机制。RFC1725[12]规定了POP3(Post Office Protocol 3,邮局协议版本3),定义了从 POP3 服务器收取邮件的机制。RFC822[13]协议主要定义邮件格式。根据需要传送各种非文本文件(例如图像文件、word 文件、pdf 文件、zip 文件等),人们又定义了 MIME 标准,作为 RFC822 的补充。MIME 即 Multipurpose Internet Mail Extensions,多用途互联网邮件扩展协议,它由RFC2045 到 RFC2049 几个标准构成。目前几乎所有的邮件服务系统都支持 MIME 标准[14]。 2.1.2 电子邮件的格式 一个完整的电子邮件地址格式如下: user@hostname.domainname即:用户名@主机名.域名,@表示“(at)”的意思,@的左边是电子邮件用户的登录名,右边是完整的主机名,它由主机名与域名组成。其中,域名由几部分组成,每一部分称为一个子域(Subdomain),各子域之间用圆点“.”分隔,每个子域都会告诉用户一些有关这台邮件服务器的信息。 在RFC2822《Internet信息格式》中规定了电子邮件的标准格式。电子邮件是由一行行文本组成,每行以回车符(CR)和换行符(LF)结束,一封完整的电子邮件包括两部分:信封(邮件头)和内容(邮件体),邮件头和邮件体之间以一个空行来分隔。 下面是一封简单的邮件: (1) From: user1@mymailserver.com (2) To: user2@mymailserver.com (3) Subject:邮件格式 (4) Date: Thu, 8 Dec 2005. 11:21:19 GMT (5) (6) Hi, user1 (7) 邮件格式 (8) Thanks (9) User2 其中1至4行是信头,6至9行是信体,第5行是必须加的空行。RFC为信头定义了20多个标准字段,包括Date、From、To、CC、BCC等一些必须和非必须的字段,另外,信头在传输过程中并不是一成不变的,随着邮件的传输,MUA和MTA会在信头上增加一些路径信息,它们合在一起构成收到的信件的信头部分。下面简单介绍几个常用字段: (1) From:表示发信件的人; (2) To:指出收件人; (3) Subject:邮件主题; (4) Reply-To:发信人希望的回复地址; (5) Message-ID:标识一个信件,该字段由MUA或者第一个MTA产生; (6) Received:一个特定的MTA处理记录,处理信件的每个MTA必须在每个信件头的上面加上这个字段,用于跟踪邮件; (7) 以X开头的字段:不是RFC822中要求的字段,是SMTP服务器扩展的字段,由软件厂商自行定义。 2.1.3 邮件传送过程 在通常的情况下,一封电子邮件的发送需要经过邮件用户代理MUA(Mail User Agent)、邮件传输代理MTA(Mail Transfer Agent)和邮件投递代理(Mail Delivery Agent)等三个程序的参与。 用户代理MUA接受用户输入的各种指令,将用户的邮件传送至信件传输理或者通过POP协议或者是IMAP协议将信件从传输代理服务器处取到本机常见的用户代理有“Foxmail”,“Outlook Express”等邮件客户程序。 传输代理MTA软件负责处理所有接收和发送的邮件。对每一个外发的邮件MTA决定接收方的目的地。若目的地主机是本机,则MTA将邮件直接发送到地邮箱或交本地MDA进行投递;若目的地主机是远程邮件服务器,则MTA必使用SMTP协议在互联网上同远程主机通信,将信件在服务器之间传输并且将收到的邮件缓冲或者提交给最终投递程序。常用的MTA程序有Sendmail、Qmail和Postfix。 投递代理MDA程序则从信件传输代理取得信件传送至最终用户的邮箱。显然,最终用户只能看到用户投递代理。常见的投递代理包括procmail等。整个邮件传输过程如下(如图2-1所示): (1) 邮件发送者利用本地的MUA1,按照简单邮件传输协议SMTP(Sim Mail Transfer Protocol)把邮件发送给本域MTA1; (2) MTA1根据邮件的接收地址中的域名去查询域名服务器DNS(Dom Name Server)获得接收者的MTA2的IP地址; (3) MTA1与MTA2按照SMTP协议通讯,把邮件转发到MTA2; (4) MTA2发现邮件是本地邮件,则把邮件转发给MDA; (5) MDA把邮件分发到对应的邮箱中; (6) 邮件接收者按照邮局协议POP3(Post Office Proto version 3)或Internet邮件访问协议IMAP4(Internet Message Access Proto version 4)从邮箱中获取邮件。 由于目前使用的SMTP协议是存储转发协议,意味着它允许邮件通过一系的服务器发送到最终目的地。服务器在一个队列中存储到达的邮件,等待发送下一个目的地。下一个目的地可以是本地用户,或者是另一个邮件服务器。如果下游的服务器暂时不可用,MTA就暂时在队列中保存信件,并在以尝试发送,如图2-2所示: 2.1.4 相关协议 1、SMTP协议 (1) SMTP的基本结构[15]: SMTP(Simple Mail Transfer Protocol)的内容被包含在RFC821[16]中。2001年4月,RFC2821[17]对该协议进行了更新。 SMTP协议是为了保证电子邮件的可靠和高效传送。TCP/IP协议的应用层中包含有SMTP协议,但事实上它与传输系统和机制无关,仅要求一个可靠的数据流通道。它可以工作在TCP上,也可以工作在NCP、NITS等协议上。在TCP上,它使用端口25进行传输。SMTP的一个重要特点是可以在可交互的通信系统中转发邮件。 SMTP提供了一种邮件传输的机制,当收件方和发件方都在一个网络上时,可以把邮件直传给对方;当双方不在同一个网络上时,需要通过一个或几个中间服务器转发。SMTP首先由发件方提出申请,要求与接收方SMTP建立双向的通信渠道,收件方可以是最终收件人也可以是中间转发的服务器。收件方服务器确认可以建立连接后,双方就可以开始通信。 发件方SMTP向收件方发出MAIL命令,告知发件方的身份;如果收件方接受,就会回答OK。发件方再发出RCPT命令,告知收件人的身份,收件方SMTP确认是否接收或转发,如果同意就回答OK;接下来就可以进行数据传输了。通信过程中,发件方SMTP与收件方SMTP采用对话式的交互方式,发件方提出要求,收件方进行确认,确认后才进行下一步的动作。整个过程由发件方控制,有时需要确认几回才可以。 为了保证回复命令的有效,SMTP要求发件方必须提供接收方的服务器及邮箱。邮件的命令和答复有严格的语法定义,并且回复具有相应的数字代码。所有的命令由ASCII码组成。命令代码是大小写无关的,如MAIL和mail、mAIL是等效的。 (2)SMTP的基本命令: SMTP定义了14个命令,它们是: HELO MAILFROM: RCPTTO: DATA RSET SENDFROM: SOMLFROM: SAMLFROM: VRFY EXPN HELP NOOP QUIT TURN 其中使得SMTP工作的基本的命令有7个,分别为:HELO、MAIL、RCPT、DATA、REST、NOOP和QUIT。下面分别介绍如下: HELO:发件方问候收件方,后面是发件人的服务器地址或标识。收件方回答OK时标识自己的身份。问候和确认过程表明两台机器可以进行通信,同时状态参量被复位,缓冲区被清空。 MAIL:这个命令用来开始传送邮件,它的后面跟随发件方邮件地址(返回邮件地址)。它也用来当邮件无法送达时,发送失败通知。为保证邮件的成功发送,发件方的地址应是被对方或中间转发方同意接受的。这个命令会清空有关的缓冲区,为新的邮件做准备。 RCPT:这个命令告诉收件方收件人的邮箱。当有多个收件人时,需要多次使用该命令,每次只能指明一个人。如果接收方服务器不同意转发这个地址的邮件,它必须报550错误代码通知发件方。如果服务器同意转发,它要更改邮件发送路径,把最开始的目的地(该服务器)换成下一个服务器。 DATA:收件方把改命令之后的数据作为发送的数据。数据被加入数据缓冲区中,以单独一行是“.”的行结束数据。结束行对于接收方同时意味着立即开始缓冲区内的数据传送,传送结束后清空缓冲区。如果传送接受,接收方回复OK。 REST:这个命令用来通知收件方复位,所有已存入缓冲区的收件人数据、发件人数据和待传送的数据都必须清除,接收方必须回答OK。 NOOP:这个命令不影响任何参数,只是要求接收方回答OK,不会影响缓冲区的数据。 QUIT:SMTP要求接收方必须回答OK,然后中断传输;在收到这个命令并回答OK前,收件方不得中断连接,即使传输出现错误。发件方在发出这个命令并收到OK答复前,也不得中断连接。 下面是SMTP答复中用到的代码和含义: 500 Syntax error,command unrecognized [This may include errors such as command line too long] 501 Syntax error in parameters or arguments 502 Command not implemented 503 Bad sequence of commands 504 Command parameter not implemented 211 System status,or system help reply 214 Help message [Information on how to use the receiver or the meaning of a particular non-standard command;this reply is useful only to the human user] 220Service ready 221Service closing transmission channel 421Service not available,closing transmission channel [This may be a reply to any command if the service knows it must shut down] 250 Requested mail action okay,completed 251 User not local;will forward to 450 Requested mail action not taken:mailbox unavailable [E.g.,mailbox busy] 550 Requested action not taken:mailbox unavailable [E.g.,mailbox not found,no access] 451 Requested action aborted:error in processing 551 User not local;please try 452 Requested action not taken:insufficient system storage 552 Requested mail action aborted:exceeded storage allocation 553 Requested action not taken:mailbox name not allowed [E.g.,mailbox syntax incorrect] 354 Start mail input;end with. 554 Transaction failed 最后,让我们看一个RFC821中给出的例子。这封信是Smith在主机Alpha.ARPA发给主机Beta.ARPA上的Jones,Green和Brown,并且假定两台主机在同一个网络上。 S:MAIL FROM: R:250 OK S:RCPT TO: R:250 OK S:RCPT TO: R:550 No such user here S:RCPT TO: R:250 OK S:DATA R:354 Start mail input;end with. S:Blah blah blah... S:...etc.etc.etc. S:. R:250 OK SMTP协议本身是一个简化的邮件递交协议,在协议制定的时候,并未考虑安全方面的需要,因此其存在着几个安全缺陷[18]: (1) 缺乏足够的验证要求。这个缺陷导致的后果有两点:假冒他人邮件和滥用别人的SMTP服务器。 (2) VRFY和EXPN这两个命令是为了帮助管理员查找错误而设置的,但同时攻击者可以使用这两个命令找到使用别名的用户的邮件甚至全名。 (3) MTA的问候中会显示使用的软件的产品信息,给攻击者找到漏洞。 (4) Received字段。同样泄漏了系统信息,包括用户所在机器的名称和信件所经过的路由。 (5) 信件的完整性。SMTP中没有内置的手段保证邮件到达用户前没有被更改。 (6) 没有规定如何加密传输的文本,文本内容以明文传送,容易被窃听。 2、POP3协议 第一个邮局协议(POP)的RFC文档是1984年发表的RFC-918,描述了一个基本的、试验性的POP实现。后来几经修改,最后于1996年发表的RFC-1939 PostOffice Protocol Version 3(POP3)[19]是因特网电子邮件的第一个离线协议标准。 POP3命令由一个命令和一些参数组成。所有命令以一个CRLF对结束。命令和参数由可打印的ASCII字符组成,它们之间由空格间隔。命令一般是三到四个字母,每个参数却可达40个字符长。 POP3响应由一个状态码和一个可能跟有附加信息的命令组成。所有响应也是由CRLF对结束。现在有两种状态码,“确定”(“+OK”)和“失败”(“-ERR”)。 在POP3会话中,用户首先激活一个POP3客户,该客户创建一个TCP连接,连到有邮箱的计算机上的POP3服务器,一旦POP3服务器发送确认信息,就进入了“鉴别”状态。在此状态中用户发送登录名和口令,以鉴别会话。一旦接受鉴别,服务器就获取与客户邮件相关的资源,此时进入“操作”状态,用户可以发送命令,检索邮件的副本,或从永久邮箱中删除邮件。当客户发出QUIT命令时,此过程进入“更新”状态。在此状态中,POP3服务器释放在“操作”状态中取得的资源,并发送消息,终止连接。 (1) 基本的POP3命令: USER:邮箱登录名,在“鉴别”状态有效; PASS:邮箱口令; QUIT:断开与服务器连接; STAT:返回服务器状态信息,一般为两个参数,第一个是邮件总数,第二个是邮件总大小,在“操作”状态有效; LIST:列出邮件清单,返回邮件编号和大小; RETR:收取指定邮件全部内容; DELE:标记邮件删除,直到执行QUIT时才真正删除; NOOP:用来检查同服务器的连接; RSET:移除所有删除标记; QUIT:终止连接,在“更新”状态有效。 (2) 可选的POP3命令: APOP:指定邮箱的用户名及其MD5摘要串,在“鉴别”状态有效; TOP:用来获取邮件头及被预定义的一块字符串,在“操作”状态有效; UIDL:返回邮件的唯一标识符。 3、IMAP协议 IMAP(Internet Message Access Protocol)[20]是与POP3对应的另一种协议,为美国斯坦福大学在1986年开始研发的多重邮箱电子邮件系统。它能够从邮件服务器上获取有关E-mai1的信息或直接收取邮件,具有高性能和可扩展的优点。它可以决定客户机程序请求邮件服务器提交所收到邮件的方式,请求邮件服务器只下载所选中的邮件而不是全部邮件。客户机可先阅读邮件信息的标题和发送者的名字再决定是否下载这个邮件。IMAP通过客户机的电子邮件程序可在服务器上创建并管理邮件文件夹或邮箱、删除邮件、查询某一封信的一部分或全部内容,完成所有这些工作时都不需要把邮件从服务器下载到个人计算机上。 IMAP提供操作的三种模式: (1) 在线方式:邮件保留在Mail服务器端,客户端可以对其进行管理。其使用方式与Web Mail相类似。 (2) 离线方式:邮件保留在Mail服务器端,客户端可以对其进行管理。这与POP协议一样。 (3) 分离方式:邮件的一部分在Mail服务器端,一部分在客户端。这与一些成熟的组件包应用(如Lotus Notes/Domino)的方式类似。 现在,IMAP为很多客户端电子邮件软件所采纳,如Outlook Express、Netscape Messenger等,支持IMAP的服务器端的软件也越来越多,如CriticalPath、Eudora、Sendmail等。 但是实现IMAP也有不足。首先,在利用服务器磁盘资源方面IMAP不如POP3,由于使用POP时服务器端的邮件被下载到客户机的同时会删除,因而不占用额外空间用以存放旧的邮件。而IMAP服务器将保持旧的邮件,占用了额外空间,而且需要定期地删除旧邮件。同时,由于用户查阅信息标题和决定下载哪些附件,也需要一定时间,因此连接时间也比POP方式长。在应用方面,由于IMAP比较复杂,给开发者开发服务器和客户机的软件带来一些难题。 2.2 非技术手段反垃圾邮件 垃圾邮件正以每年5%的速度递增。这意味着人们每周都会收到数千封不请自来的电子邮件,这些垃圾邮件不仅消耗了电子邮件网关75%的处理能力,使垃圾邮件使得网络线路繁忙,服务器性能大打折扣;而且也浪费了员工的大量时间和精力。 反垃圾邮件成为了当前亟待解决的问题。现在非技术手段有以下几种: (1) 立法模式。立法模式是由国家和政府主导的模式,这种模式的基本做法是由国家通过立法的方法,从法律上确立网络隐私保护的各项基本原则与各项具体的法律、规定和制度,并在此基础上建立相应的司法或者行政措施。例如,一旦确认某个团体或个人发送垃圾邮件,那他将面临法律的制裁与处罚。针对目前的垃圾邮件泛滥的形势,反垃圾邮件立法的呼声越来越高,但是反垃圾邮件立法也面临一系列的问题。如垃圾邮件的定义,即到底什么样的邮件是垃圾邮件。其次就是法律的执行问题,即给予什么样的处罚才是得当的,而且如果缺少国际合作,即使发现来自境外的垃圾邮件,也无法制裁。 (2) 行业自律模式。行业控制方面主要是利用实时的黑名单服务来限制垃圾邮件的传播。 (3) 利用垃圾邮件过滤技术。近年来,有关垃圾邮件过滤技术的研究开始逐步兴起,相关的投入也越来越大,涌现了一大批相关产品,如果能从技术上解决垃圾邮件问题,那是最理想的垃圾邮件解决方法了[21]。 2.3 常用反垃圾邮件技术 一般来说,反垃圾邮件的方法有服务器端和客户端两种。一般情况下,比较理想的方法是,在邮件服务器端直接将垃圾邮件屏蔽掉,这样不仅用户不会受到垃圾邮件的骚扰,而且服务器可以减少邮件的处理量,节约处理器资源和带宽流量。但是,相当多的电子邮件服务提供商,并没有把这件事做好,特别是一些不够规范的免费电子邮件提供商(有些免费的电子邮件服务提供商甚至向别的厂商和公司收取费用直接往自己的免费用户邮箱里投放广告邮件)。如果是这样,我们只能在客户端这最后的一道防线上去抵挡垃圾邮件的进攻了。 2.3.1客户端垃圾邮件过滤技术 在客户端可以对以下几种内容进行过滤[22]: (1) 对发件人地址的过滤 这项技术就是依据发件人地址进行判断是否是垃圾邮件,例如不合法的邮件地址就会认为是垃圾邮件,如????@163. net,和一些不合规范的邮件地址及空地址,如lakdjfhkiu}lkdfnehgugnuoi,lkjsfu#iern}nfiehrng.net。这些邮件将被判断为垃圾邮件。 (2) 对收件人地址的过滤 大家可能会说,收件地址不就是我的邮箱地址吗?这还需要过滤?当然,收件人地址也是可以用来发送垃圾邮件的。这种情况就是考虑到邮件列表了,因为邮件列表在发送的时候,收件人地址只是一个列表的名称,所以,虽然有些邮件收件人不是你,但是,是以邮件列表的形式发送的,所以,你还是会收到的。对于收件人地址的检查和过滤也是必要的。 (3) 对邮件主题的过滤 这个应该算是比较重要的一个过滤了,一般一些垃圾邮件的主题还是有一些共同的特性的。比如前一段时间闹的比较凶的SoBig. F病毒,一共以9个主题来发送病毒邮件,发件人和收件人地址都不确定,只要你过滤掉这9个主题,你就不会受到SoBig. F病毒所发送的垃圾邮件骚扰了。 (4) 对邮件内容关键字的过滤 邮件内容的过滤一般以一个关键字词或多个关键字词为判断依据。根据关键字词的命中率来确认这封邮件是否是垃圾邮件。如果命中率超过了设置的阈值,就认为是垃圾邮件。同时关键字词还可以是短语和短句。 (5) 对邮件头信息过滤 邮件头信息是记录邮件投递过程的原始信息,这一点对垃圾邮件有着非常重要的意义。虽然垃圾邮件发送者在发送垃圾邮件的时候,可以利用各种的工具随机伪造不同的收发件人、主题和内容,但是在邮件头信息中,这些邮件还是有一些共同的信息的,主要是IP、主机名、X-标识。通过对这些信息的过滤,就可以把由同一地址发出的但收发信地址和主题随机的垃圾邮件从众多的邮件找出来。 2.3.2 服务器端垃圾邮件过滤技术 在服务器端有以下几种过滤技术: (1) 基于黑/白名单的过滤技术 黑名单技术的原理是管理员收集、归纳和整理垃圾邮件的发件人地址,并制作成一个地址列表,即所谓的黑名单。如果邮件的发件人与已知的垃圾邮件地址相同,就认为该邮件是垃圾邮件,并拒收该邮件。该方法的缺点是垃圾邮件基本上都是采用了伪造和变换发件人地址的手段,单靠管理员的手工处理根本不可能构造出一个及时有效的黑名单列表。 白名单技术的原理与黑名单正好相反,其中列出了可信的邮件地址,凡是发件人地址符合其中地址的邮件,都会被认为是正常邮件而被放行。该方法的缺点是如果用户希望收到来自某一地址的电子邮件,用户必须事先设置允许接收这一地址邮件的规则。如果以前获得批准的客户改变了邮件地址,用户必须将新地址写入白名单,否则就收不到来自这位客户的电子邮件。 (2) 实时黑名单技术 黑名单技术[23]是人们收集垃圾邮件的地址,组成一个列表后应用到邮件服务器,邮件服务器在转发过程中丢弃那些地址来自黑名单的邮件。黑名单技术的关键就是对黑名单列表的维护和更新。现在垃圾邮件大量增加,如果靠使用者手动维护黑名单很难应付,针对这种情况,实时黑名单(简称 RBL)技术应运而生,该技术结合DNS查询实现对黑名单的自动更新。具体来说一个使用RBL技术的软件要确定某一IP地址是否应该被列入黑名单,会向黑名单服务器发出DNS查询,黑名单服务器查询黑名单后会将结果反馈给查询计算机。 目前国内支持地址黑名单的服务器比较多,很多邮件服务器软件都是默认支持实时黑名单技术,但从实际的角度来看,这种方式并不是非常有效。该技术手段太单一,致命的弱点在于被放入黑名单的少量可疑主机数目和大量的垃圾邮件发送者不成比例,即使邮件服务器支持实时黑名单技术,依然会收到大量的垃圾邮件,无法全面封堵。 (3) 基于静态内容过滤[24]技术 静态内容过滤实际上只对“规矩”的垃圾邮件有效,这些规矩的垃圾邮件常常是网络营销的广告,有些更规矩的广告在邮件主题上提示“ADV:”,这种邮件其实反而不是最主要防范的邮件,如果用户不想接收广告邮件,只需简单过滤邮件主题,发现ADV即拒收。例如一些词汇“免费”被变成“免…费”或“免--费”,令垃圾邮件过滤防不胜防,同时导致了正常邮件如果使用了这些词汇也被拒绝。因此,基于关键词的邮件内容过滤技术在实用中会导致很高的误判率。但在某些需要严格控制邮件内容的场合,有一定的使用价值。 (4) 邮件扫描技术[25] 如果邮件服务器能够对接收的邮件进行扫描,并按照指定的规则对邮件进行匹配,一旦接收的邮件和垃圾邮件匹配成功,就认为本次接收的邮件是垃圾邮件并自动删除该邮件。目前,邮件扫描检查三个方面:邮件主题、邮件内容、邮件附件。 邮件主题扫描的实现比较简单,就是扫描接收的每一个邮件,对邮件主题的关键字进行过滤,凡是符合预定义关键字值的就认为是垃圾邮件。这种匹配一般都支持正则表达式的匹配方法,从而提高了扫描的执行效率。 目前,市场上常用的反垃圾邮件软件提供此邮件主题扫描和邮件附件扫描功能,支持邮件内容扫描的反垃圾邮件软件很少。在实施中很难对付会自动变化主题的垃圾邮件,带来了很高的误判率。 (5) 基于贝叶斯分析垃圾邮件过滤技术 垃圾邮件的贝叶斯分析技术,就是利用贝叶斯定理,以已知垃圾邮件和非垃圾邮件为样本,通过对样本邮件内容的分析和统计,来计算下一封邮件可能是垃圾邮件的概率。由此可以构造一种基于贝叶斯算法来实现垃圾邮件过滤[26]。 可以根据特有的垃圾邮件和合法消息来进行定制。由于贝叶斯算法预设的先验概率是通过经验来确定的,由此其预设值未必是最合适的,所以应增加自学习功能,通过不断校正预设的先验概率来提高邮件过滤的准确率。 贝叶斯技术克服了传统内容分析技术准确性低、误判率高的缺陷,不需要预先搜集和编制关键词表,可以实现对样本的自动采集和学习,贝叶斯过滤器是目前比较好的过滤器,我们将在本文第三章对它进行详细阐述。 (6) 分布协作的内容指纹分析技术 有些邮件使用假的邮件地址、伪造了邮件头或利用了开放式转发功能发送的。但每个收件人必须看了内容以后才知道该邮件是垃圾邮件,利用分布协作的内容指纹过滤方法对此类邮件有很好的过滤作用。 分布协作分析的主要原理:从邮件中提取出可以代表内容的指纹数据,不同的内容会产生不同的指纹,用这些指纹代表邮件,全球的兼容用户会提交邮件的指纹,从服务器得到响应,以知道有多好封相同的邮件在全球传播,这样来识别邮件是否为垃圾邮件。 (7) 反向域名验证技术 对收到邮件的来源IP地址采用反向DNS查找验证真实性,如果反向DNS查找提供的域与邮件上的来源IP地址相符合,该邮件被接受,如果不符合,系统认定该邮件是垃圾邮件予以拒绝,但由于现在很多反向DNS目录未被有效建立或无法正常建立,造成反向域名验证产生不可接受的高误报率。 (8) 质询-回应技术 质询-回应技术是一种传统的身份识别技术,这种技术就是识别方向被识别方问一些只有这两方才可能知道正确答案的问题,通过被识别方回答的正误来判断被识别方的身份。但这种技术要求反垃圾邮件系统预先和全部可能的发件人定下一个或多个秘密问题及答案。 很多系统会自动产生邮件,而这些自动产生邮件的系统,绝大多数都不具备回应质询的能力。这就会是反垃圾邮件系统认为这些系统自动产生的邮件是伪装过的邮件,被错误的丢弃。而要让这些系统增加回应质询的能力,需要做大量额外的工作。 第三章垃圾邮件分类向量与特征向量 垃圾邮件过滤问题可以看成是一个邮件分类问题,即把邮件看作为样本,预先使用训练样本对分类器进行有指导的学习,然后用训练好的分类器对新来的样本进行分类。本章将介绍分类向量、特征向量、分类算法等问题。 3.1垃圾邮件分类向量概述 目前常用分类方法有两种: (1) 第一种是粗略的分类方法。M表示为邮件样本集合,将邮件样本集分为垃圾邮件集M1和非垃圾邮件集M2两类,这种分类方法比较粗糙,容易丢失邮件特征细节,导致对邮件的误判。 (2) 第二种则是详细的分类方法。 本文采用详细的分类方法,首先分析垃圾邮件样本集的内容对其进行训练,根据内容的性质利用社会常识将垃圾邮件样本集分为几个类别,分别为C0、C1、C2、…Ci…、Cn-1。例如广告类、网上购物类、网上赚钱类等,由于该样本集中有重复和相似的邮件,利用训练集中的邮件与待分类的邮件内容进行匹配,如果匹配成功就把该邮件放到相应的类别中,构造每个类别中的分类向量并依据标准邮件集计算各类别的概率分布,在此基础上,构造垃圾邮件的判断算法。 3.2垃圾邮件分类向量与特征向量的定义 中文语言的特点和英语语言的特点在结构上有很大的差别:英文最小的表达意义的单元是英文单词(word),也是书写上的基本单元,可以很明显简单的从邮件中一个个分离出来;而对于中文语言来说,表达意义的最小单元是中文单词,但是书写上的基本单元是汉字,中文单词无法直接从邮件中获得,因为中文单词之间没有明确的分隔符,而且中文单词的变化及其复杂,若无人的参与,机器自动进行单词的切分本身就是一个困难的问题。 定义3.1:关键词是垃圾邮件中的敏感字符,是一个类别中能表达该类别文本内容的词条,即是该类别中具有代表性的词条,我们把具有上述特征的关键词称为分类向量。 表示方法为: C0分类向量:(w00,w01,…w0i…w0k-1) C1分类向量:(w10,w11,…w1i…w1k-1) C2分类向量:(w20,w21,…w2i…w2k-1) Cj分类向量:(wj0,wj1,…wji…wjk-1) … Cn-1分类向量:(wn-10,wn-11,…wn-1i…wn-1k-1) 其中Ci代表样本集的类别,wij是类别中的关键词。 下面是一个组成分类向量的例子: 广告类(免费、优惠、招聘、商机、联系人…) 订票类(免费、优惠、订票、申请、价格…) 购物类(免费、优惠、购物、订购、价格…) …… 上面的例子中是对已经分好类的垃圾邮件样本集进行分类向量的提取,一封中文电子邮件是由汉字组成的,有些词条可以表示邮件样本的类别的特征,例如:在订票类别中,订票、价格、申请等词条就作为订票类别中的敏感字符,它能代表这个类别的特征,(免费、优惠、订票、申请、价格…)构成了订票类的分类向量。 定义3.2:特征向量就是通过对已经分好类的样本集进行处理,通过词频统计来计算关键词在每个类别中出现的概率。 表示方法为: P(C0)特征:(PC00, PC01,…PC0i…PC0k-1) P(C1)特征:(PC10, PC11,…PC1i…PC1k-1) P(C2)特征:(PC20, PC21,…PC2i…PC2k-1) … PCj特征:(PCj0, PCj1,…PCji…PCjk-1) … PCn-1特征:(PCn-10, PCn-11,…PCn-1i…PCn-1k-1) 其中P(C0)代表样本集的类别,PC00表示关键词在各类别中出现的概率。 3.3分类方法 3.3.1文本量的表示方法 邮件过滤首先是将邮件表示成机器可计算的形式。一般将邮件的内容当成文本串来处理,然后获得这个文本串的形式化表示。不论是抽取文本特征形成一个向量还是抽取文本特征形成一个其它的特殊结构,对文本的这种及其表示过程简称为文本表示。 邮件的文本内容是指一封邮件中去掉头格式后的邮件内容,文本量是指一封邮件中去掉邮件头后所有文本内容的数量。 以下面一封完整的邮件为例 头格式为: Return-Path: Received: from chinatanhuang.com ([219.232.233.148]) by home.ccert.edu.cn (MIMEDefang) with ESMTP id NOQUEUE for ; Wed, 01 Jun 2005 22:36:28 +0800 (CST) Message-ID: <200506012236.0.463115773677188@home.ccert.edu.cn> From: "xie" Subject: =?gb2312?B?uN+2y7DsuavV1cP3MjI6NTM6MTY=?= To: hua@ccert.edu.cn Content-Type: text/html;charset="GB2312" Reply-To: xie@chinatanhuang.com Date: Wed, 1 Jun 2005 22:53:31 +0800 X-Priority: 3 X-Mailer: Microsoft Outlook Express 5.00.2615.200 邮件文本内容为: 本公司是一家集研发、生产、销售为一体的专业照明产品的制造商。公司拥有一批优秀的照明工程师与设计师团队,公司研制开发的“锐达牌”系列产品是符合办公室、展厅、商场及楼宇等各种场所使用的照明产品。 产品具有最佳的照明效果与美观时尚的造型,是您采购的理想选择。另外,本公司承接各种非标产品的制作加工。本公司期待同建筑装修装饰公司、工程设计公司等单位建立长期的合作伙伴关系。欢迎登录本公司产品网站http://www.qiandeng.com,了解最新,最全、最时尚的照明产品。北京千灯照明器具有限公司办公地址:北京市朝阳区周庄嘉园C2座2-103。 电话:010-67492370 传真:010-67492050 产品网站http://www.qiandeng.com 上面例子中的邮件由两部分组成:邮件头格式和邮件文本内容。该邮件的文本量是指去掉邮件头格式后的邮件文本内容的数量,根据编程计算得该邮件的文本量为260。 3.3.2关键词的选择 关键词是垃圾邮件中的敏感字符,随着文本自动分类技术的广泛应用,中文分词也被应用到反垃圾邮件领域。关键词想表现邮件的特征,也是必须通过训练得到。因此训练需要彻底,必须要有代表性。就一个邮件过滤系统来说,训练需要对预先收集的邮件样本(包括正常邮件和垃圾邮件)进行处理,邮件样本需要足够多,正常邮件和垃圾邮件样本都要达到一定的数量。我们选取的邮件样本引用于http://www.ccert.edu.cn/ spam/sa/datasets.htm,在训练中的邮件样本采取什么样的比例也是十分重要的问题,采取的比例需要适合训练,并且相差不能太大,否则就没有代表性。 本文设计了一种自动提取关键词的方法,关键词由2-5个字组成,此方法提高了机械分词法的效率。根据编程实现: 对已分好类别的邮件,依次自动显示由两个字至五个字组成的词,例如“提取关键词”,系统将会自动弹出“提取”,“提取关”,“提取关键”,“提取关键词”,“取关”,“取关键”,“取关键词”,“关键”,“关键词”,“键词”,这是利用逐词遍历的方法。如果感觉某词是敏感字符就把该词放入训练词库。如果训练词库中已有该关键词,在其它邮件中出现该词时,系统将不再弹出此关键词,它与训练词库匹配后将自动增加该词的出现频率。 由于每个人对邮件中的敏感字符的概念不同,所以选取的关键词也不一定相同,但是这对提取特征、建立模型没有太大的影响。 3.3.3特征提取的方法 邮件过滤中的特征选择和特征提取是通过一个特征评价函数,把测量空间的数据映射到特征空间中,得到特征空间的值,然后对特征向量进行评估,特征选择就成了选择值最高的若干个特征。 目前,我们常用的特征选取算法主要有7种:文档频率、信息增益、互信息、期望交叉熵、文本证据权、词条强度、开放拟合检验,本文采用的是互信息的计算方法,下面分别进行简单介绍: (1) 文档频率(DF) 这是最简单的评估函数,其值为训练集合中此单词发生的文本数,其理论假设是 稀有单词要么不含有用信息,要么太少而不足以对分类产生影响,可以删去。这种方法的好处是计算量小,但是因为稀有单词在某一类文本中并不稀有,而且包含重要信息,所以精度不高。我们常把这种方法作为评判其它评估函数的标准。 (2) 信息增益(IG) 信息增益是信息论中一个重要的概念,现在广泛应用于机器学习的文本分类和信息检索中。其计算公式(3-1)为: 这种方法存在一个问题,就是如果一个单词在类Ⅰ中出现,而在类Ⅱ中不出现,这个单词本来非常重要,但是对各㏒值求和后相抵消,结果为0,与某些词无法区分。解决这一问题有两种方法:一是对各㏒值取绝对值,二是略去㏒值小于0的情况。 (3) 期望交叉熵(CE) 其计算公式(3-2)为: 其中,P(Ci|T)是文本中出现词条T时,文本数与Ci的概率,P(Ci)是类别Ci出现的概率。交叉熵反映了文本类别的概率分布和在出现了某个特定此的条件下文本类别的概率分布之间的距离,词条T的交叉熵越大,对文本类别分布的影响也越大。 (4) 文本证据权(WE) 文本证据权比较了类出现的概率和在给定特征下类出现的条件概率之间的差别,如果词条和文本强相关P(Ci|T)大,并且相应类别出现的概率小,说明这个词条对分类的影响大,WE(T)的值就越大。其计算公式(3-3)为: (5) 词条强度法(TS) 词条强度(TS)最初是由Wilbur和Sirotkin提出的。此方法的主要思想使通过词条在相关文档中所出现的普遍性程度来评估词条对分类的重要程度。TS算法首先需要一个供训练的文档集合,计算文档的相似度。假设有n个文档,所有文档均由t个有效词条构成,用一个布尔向量DOCi来表示t个词条是否在文档i中出现,若词条TERMk(1≤k≤t)在文档i中出现,则DOCi第k个单元TERMik=1,否则TERMik=0。于是可以得到一个有0,1构成的矩阵表3-1如下: 表3-1词条出现状态表 TERM1 TERM2 … TERMt DOC1 TERM11 TERM12 … TERM1t DOC2 TERM21 TERM22 … TERM2t … … … … … DOCn TERMn1 TERMn2 … TERMnt 文档对的相似度的计算以余弦函数法应用最为广泛,其值介于0到1之间,两者愈接近,则函数值愈接近1,反之愈接近0。计算公式(3-4)如下: 经过多次中文文档实验,可以观察出以下特点:相似性概率和夹角余弦值之间存在着一种单调递增的关系,夹角余弦值越大,相似性概率就越高。当夹角余弦值小于0.4时,相似性概率就很接近于0了。设定一个阈值threshold,根据实验统计结果,此阈值在0.6左右较为合理,去相似度高于此阈值的文档对。词条强度是估算词条在文档对两个部分同时出现的条件概率。词条强度法与前面所讲的方法的根本不同是:它假设有一个完备的词条集,所有的文本都是由词条集合众的词条聚合而成,越相近的文档所共有的词条也越多,因此如果某个词条被越多的文档所共有,则以为这该词条越有对文档进行分类的价值。 (6) 开放拟合检验(CHI) 使用MI衡量特征项的重要程度时,只考虑到了正相关对特征项重要程度的影响。如果特征项t和类别Ci反相关,就说明含有特征项t的文档不属于Ci的概率要大一些,这对于判断一篇文档是否不属于类别Ci也是很有指导意义的。为克服这个缺陷,CHI使用下面的公式计算特征项t和类别Ci的相关性: 公式(3-5)如下: 其中:A为t和Ci同时出现的次数;B为t出现而Ci没有出现的次数。C为Ci出现而t没有出现的次数;D为t和Ci同时没有出现的次数。N为训练集中的文档数。和MI类似,如果t和Ci不相关,则值为0 。同MI相同,如果有k个类,每个t就会有k个值,取他们的平均,就可得到特征选取所需的一个线性序。大的平均值的特征被选取的可能性大。 (7)互信息[27] 互信息(RMI)是本文采用的特征选取方法。直观意义是对每个词条,以它在每个类别中的出现占它在整个文本集中的出现的比率作为它对每个类别分类依据的贡献。但这种方法忽略了类别中文本量的多少对词条在每个类别中出现的比率的影响。为此引入类别文本量占整个文本集的比率来表示。 关键词wi的互信息计算公式(3-6)为: N(i)表示类别Ci中出现的总的文本量,其中R(i)=N(i)/N表示类Ci的文本量在整个垃圾邮件中的文本量的比率; P(wi|Cj)则是wi在Cj中出现的概率,P(wi)是在整个垃圾邮件集合中出现的概率。 3.3.4分类方法介绍 (1) 将垃圾邮件样本集分为n类,分别为C0、C1、C2、…Ci…、Cn-1,抽取每个类别中的关键字,即提取邮件类别的分类向量。 (2) 计算关键词在各类别中出现的概率和RMI值,利用RMI值确定特征向量的分量词条,构成该类的特征向量(根据试验的需要,取前k个值作为阈值)。 (3) 基于标准邮件集,计算各向量中的分量是垃圾邮件的概率,构成垃圾邮件特征向量。 3.4基于垃圾邮件特征向量判断垃圾邮件的算法的设计 在本节中,本文提出了贝叶斯算法,并给出了该算法的详细语言化描述,具体的实验数据和实验分析详见第五章。 3.4.1贝叶斯定理[28] 贝叶斯分类原理最初源自于概率论中的贝叶斯定理,该定理表示对未来某件事情发生的概率可以通过计算它已经发生过的频率来估计,它在应用于邮件分类时,通过计算文本属于某个类别的概率,将该文本归为概率最大的类别中去,在计算时,使用了贝叶斯定理的概率公式(3-7): 3.4.2贝叶斯过滤系统的工作原理 贝叶斯过滤系统的工作包括设计和实现两个部分,设计是指用一定数量的样本(也称为训练集或学习集)进行过滤系统的设计;实现是指用所设计的过滤系统对待识别的样本进行分类。 贝叶斯过滤器首先从训练集中学习得知给定类Ci下各属性(w1, w2,…wn)的条件概率值,然后用贝叶斯定理计算给定待识别样本d在各个类Ci的条件概率的值P(Ci|d),最后用最高后验概率值作出预测。下面详细地介绍一般贝叶斯模型的工作原理。 贝叶斯模型的工作原理如下: 一般贝叶斯模型结构图如图3-1,它包含一个表示类变量的结点C和表示类特征项的结点wi (i=1, 2, …, n),两个结点间有连线表示这两个变量不独立,否则表示两个结点间相对独立,即对于给定类变量C,若wi,wj相对独立,有P(wi|C,wj)= P(wi|C)。 图3-1 一般贝叶斯模型 给定一特征项为wi (i=1, 2, …, n)的样本d,它属于类Ci的贝叶斯公式(3-8)为: 其中P(Ci)是类Ci的先验概率,即Ci类在整个训练集中所占的比例,P(d|Ci)是文本的类条件概率,表示文本d在类别Ci中可能出现的概率,P(d)表示文本d所能出现的概率,对同一封邮件P(d)不变。 P(Ci)可由训练集合得到公式(3-9): 对P(d),根据全概率公式(3-10)有: SHAPE \* MERGEFORMAT 根据(公式3-8)可知,要判断待识别样本d属于哪个类别,可以计算概率P(Ci|d)来完成。计算出P(Ci|d)值后可以通过比较各个类的条件概率值,把d分到具有最大后验概率值P(Ci|d)的类中去。 3.4.3 算法的介绍 我们本节重点放在算法的描述上,本文改进贝叶斯原理,构造适合本文的过滤算法,算法的一般性语言描述为: 初始化总的概率值dValue为0.0; 获得邮件信息; 从数据库中获得类别结构链表信息; for (int i = 0; i < 类别结构链表长度; i++) { // 计算以此类别判断是垃圾邮件的概率 初始化在此类别中的概率dTypeTotal为0.0; 获得此类别下的词条信息; for (int i = 0; i < 词条长度; i++) { if (邮件信息中出现此词条) { dTypeTotal += 出现此词条是垃圾邮件的概率 } } dValue += dTypeTotal * 以此类别判断垃圾邮件的权重; } 输出:"是垃圾邮件的概率为:" + (dValue * 100).ToString() + "%"; 此算法的性能和精确性在本文的第五章中验证,详细信息见第五章。 第四章基于标准邮件集构造垃圾邮件分类向量 4.1标准邮件集 4.1.1标准邮件集的背景 国际上已经有一些英文的垃圾邮件样本集,如由希腊学者Androutsopoulos提供的PU系列和Ling-spam样本集。PU样本集只保留了邮件的标题和正文的纯文本内容。为了保护提供者的隐私,样本集中将邮件中的不同词汇用不同整数代替。Ling-Spam由提供者收到的垃圾邮件和来自于语言学家列表(Linguist list)的非垃圾邮件组成,因此Ling-Spam样本集的邮件内容没有像PU系列样本集一样加密。除此以外,SpamAssassin的开发组也提供垃圾邮件和正常邮件样本集,与Ling-Spam有些类似,其正常邮件来自公众论坛。 目前还没有一个公开、标准的中文垃圾邮件样本集。因此,CCERT小组以长期在反垃圾邮件领域的研究积累,推出一个公开的垃圾邮件和正常邮件样本集。生成一个样本集的难度在于垃圾邮件的定义还有很多争议,如样本集的时间是否过期、正常邮件难以收集等问题。本文将描述CCERT在生成和对维护中文邮件样本集的过程,样本集的格式,特性其应用举例。 4.1.2垃圾邮件和正常邮件的收集 普通意义上的垃圾邮件指的是未经主动请求的大量的电子邮件, SPAM, UBE(Unsolicited Bulk Email), UCE (Unsolicited Commercial Email)。一般来说,收件人事先没有提出要求或者同意接收的广告、电子刊物、各种形式的宣传品等宣传性的电子邮件;收件人无法拒收的电子邮件;隐藏发件人身份、地址、标题等信息的电子邮件;含有虚假的信息源、发件人、路由等信息的电子邮件都被认为是垃圾邮件。我们收集垃圾邮件样本的原则是: (1) ccert.edu.cn 域中不存在用户所收到的邮件被视为要收集的垃圾邮件。 (2) ccert.edu.cn 域中真实用户收到但接受者认为不是他(她)所希望收到的也被视为要收的集垃圾邮件。 另外,只收集简体中文的垃圾邮件,即主题或者内容中包含至少一个国标(Gb2312)的汉字。 使用SPAMPOT,即垃圾邮件蜜罐技术来收集垃圾邮件。{SPAMPOT收录发送到xxx@ccert.edu.cn的所有邮件(xxx可为任何字符串)}。这样可以收到更多、更广泛的垃圾邮件。我们收集公开论坛所发表的最新帖子用来模仿正常邮件的主题和内容。这样可以避免公布正常邮件时涉及到个人隐私问题。 收集到的垃圾邮件和正常帖子存放在一个临时数据库中。采用人工判别方式,对临时数据库中的内容进行人工分类。来自SPAMPOT的邮件,如果被认为是中文垃圾邮件则存放到垃圾邮件数据库;如果被认为是正常邮件则把该邮件的信头信息存放到数据库,删除内容,确保不侵犯个人隐私问题。来自公开论坛的内容,如果符合正常邮件的要求则存放到正常邮件内容数据库。该内容将与以上正常邮件的信头一起构造一个正常邮件。由于垃圾邮件和正常邮件都是实时更新,因此中文邮件数据库中能够体现出中文邮件最新的特性。CCERT中文垃圾邮件过滤规则集(Chinese_rules.cf) 就是由该中文邮件数据库生成的。 根据需求,从中文邮件数据库生成并发布一个中文垃圾和正常邮件样本集,并定期更新该样本集的版本。 4.1.3标准邮件集的概述 2005年8月公布的样本集包含从2005年6月1日至7月31日收到的垃圾邮件和正常邮件(http://www.ccert.edu.cn/spam/sa/datasets.htm)。该样本集包含两集合:“2005-Jun”和 “2005-Jul”,分别记录2005年6月和7月的中文邮件。每个集合中包含两个目录:spam和ham。分别存放垃圾邮件和正常邮件,其中每一封邮件(垃圾或正常)的原始信头和内容保存在一个文件,文件名为从1开始编号的数字。 样本集大小远远大于现有的公开英文邮件样本集(Ling-Spam提供481垃圾邮件和2412正常邮件,PU提供481垃圾邮件和618正常邮件)。另外我们提供的垃圾邮件和正常邮件的比例也更切实际。 样本集只保存文本信息(包括原始信头),不删除重复的垃圾邮件,因为邮件的重复信息能体现出垃圾邮件的统计行为。另外,除了接受邮件地址被替换以外(隐蔽个人信息),保留邮件的原始信头,因此样本集可以被用来研究邮件的统计行为。 CCERT标准中文邮件样本集包含已标识类别的垃圾邮件和正常邮件,给研究反垃圾邮件的技术和算法提供一个公开、标准的训练和测试样本集。其中垃圾邮件由CCERT垃圾邮件蜜罐系统所捕获的,正常邮件来自公开的中文论坛。这两类邮件实时更新使得我们的样本集能够保证最新内容。本文还以一种常用的垃圾邮件分析方法:SpamAssassin + CCERT中文垃圾邮件过滤规则集来分析邮件样本集的特性,给将来的算法研究做参考。样本集中保留原始信头和文本内容,因此不但可以用来研究邮件内容过滤技术,而且还可以研究垃圾邮件发送行为等技术。此外,该样本集还可以被用来重构邮件的发送和接收过程,这样可以实现垃圾邮件的实时测试模型。 4.2基于标准邮件集的垃圾邮件分类向量 4.2.1分类的实现 一封邮件在经过解码、分词之后就成为词的集合,对收集的样本邮件进行处理分析得到所有邮件词的集合即全特征集。在训练过程中,对垃圾邮件样本集中的邮件分类,把组成邮件的词分离出来作为分类向量的处理数据。 首先人工的方法将垃圾邮件样本集进行分类,提取对分类有作用的敏感字符即特征词,将垃圾邮件样本集分为几个具有代表性的类别,对待分类的样本与已分好类的样本进行匹配,匹配成功后放入相应的类别中,匹配不成功的进行人工处理,判断该样本属于哪个类别就把该邮件放入相应的类别中。通过不断的自学习来扩充每个类别库,以达到垃圾邮件样本集的分类。 垃圾邮件样本集中共有44844个样本,本文将垃圾邮件集分为八个类别:广告类、网上订票类、网上购物类、网上赚钱类、情趣物品类、色情暴力类、欺诈信息类、销售邮件地址类等,每类样本的数量如图4-1所示 4.2.2 提取分类向量的过程 分类向量即对类别有作用的向量,本文在第三章介绍了抽取关键词的方法,下面将详细介绍提取分类向量的流程和算法。 (1) 提取分类向量的流程如图(4-2): 图4-2描述了分类向量的具体实现过程:将已分好类别的样本提取关键词,如果判断该词是敏感字符就把该词放入关键词库,否则放入正常词库,计算关键词的频率及在每个类别中出现的概率 (2) 提取分类向量的算法 下面介绍算法中主要函数及代码的实现: ●函数名称:private int Total(string keyWord,string source) 函数功能:统计敏感词出现的次数,参数为关键字keyWord和邮件的内容source 代码实现: private int Total(string keyWord,string source) { int nCount=0; if((keyWord==null)||(keyWord.Trim().Length==0)) { return nCount; } keyWord = keyWord.Trim(); while(source.IndexOf(keyWord)>=0) { nCount++; source = source.Remove(source.IndexOf(keyWord),keyWord.Length); } return nCount; } ●函数名称:private void GetWord(string source) 函数功能:提取邮件中的关键词,判断敏感库中是否有此关键词,如果没有该词并且判断该词为敏感字符,就把该词放入敏感词库,如果有此关键词,判断下一个是否为敏感字符。 代码实现: private void GetWord(string source) { string strWord; if ((source == null) || (source.Trim().Length == 0)) { return; } source = source.Trim(); while(source.Length>0) { if(source.Length>=2) { strWord = source.Substring(0, 2); if (MessageBox.Show("要将'" + strWord + "' 设为敏感词吗?", "选择敏感词", MessageBoxButtons.YesNo, MessageBoxIcon.Exclamation) == DialogResult.Yes) { //to do 将strWord保存到表中 } } …… source = source.Substring(1); } } 上述算法分别判断关键词为2个字、3个字、4个字、5个字的词是否为敏感字符,该算法能够很好的提取敏感字符,通过反复的训练和自学习的过程来扩充关键词库,提高了取词效率。 4.2.3先验概率的计算方法 (1)计算关键词在每个类别中出现的概率。第Cj类中wi出现的概率公式(4-1)为: 其中k为wi在Cj中出现的次数,Len(wi)为wi的文本长度。 (2)计算每个类别在整体垃圾邮件样本集中出现的概率。第Cj类在M1中出现的概率公式(4-2)为: 第j类文本量之和=∑k×Len(wi) (4-3) 其中M1为垃圾邮件样本集,k为wi关键词在类别中出现的次数,Len(wi)为关键词wi的文本长度。 4.2.4特征提取的实现 样本集中包含了大量的词汇,如果把这些词全部作为特征,将带来一系列问题。首先是向量的维数太大,给计算带来了非常大的压力,存储空间大、处理速度慢。因此,我们要降低向量的维数,选择那些有代表意义的词作为特征。先对文本进行预处理,去掉那些常用的对分类用处不大的词,然后采用某种特征选择方法对所有的词排序,选出排在前面的一定数量的词作为特征。 本文采用互信息的方法来提取特征向量,在特征选取算法当中,互信息量的大小表示的是特征与某个类的相互关联程度。公式(4-4)为: N(i)表示类别Ci中出现的总的文本量,其中R(i)=N(i)/N表示类Ci的文本量在整个垃圾邮件中的文本量的比率; P(wi|Cj)则是关键词wi在类别Cj中出现的概率,P(wi)是关键词wi在整个垃圾邮件集合中出现的概率。 下面给出一些定量的分析: 假设存在关键词集合有w0,w1,w2个单词,出现的概率情况如下表4-1所示: 表4-1关键字出现的概率 概率 w0 w1 w2 类别中概率 0.04% 0.004% 0.24% 样本集中概率 0.06% 0.006% 0.18% 利用互信息公式计算得: 从上述的计算可以看出:词w2互信息值最大,而w0,w1的互信息值小于w2,所以在特征选择的时候,优先选择w2。 4.3基于贝叶斯原理的过滤系统的实现 贝叶斯过滤系统是利用类别的先验概率和词的分布对于类别的条件概率来计算未知文本属于某一类别的概率,它是建立在“贝叶斯假设”基础上,假定所有特征之间相互独立,应用到邮件分类中,它是通过邮件用户先提供一定数量的垃圾邮件和非垃圾邮件作为邮件训练集自动训练分类模型,将训练的结果作为判定未知邮件的主要依据,运用到相应分类算法中去。设CM为一个待判定是否为垃圾邮件的邮件,判断CM是否为垃圾邮件的具体实现过程有以下几个步骤: (1)从一封目标邮件CM中抽取关键字,得到n维分类向量d(w0,w1,…wi…wn)。 第三章我们已经定义好训练词库,即提取得到的敏感字符库。将CM与训练词库中的关键字进行匹配,得到由CM的关键字组成n维分类向量d(w0,w1,…wi…wn)。 (2)根据得到的向量d(w0,w1,…,wi…wn),计算属于Cj (j=1, 2,...,m)类的概率。 从词条集d中依序逐一取出词条与已知特征词库中的特征词进行匹配,若wn与cj类中词条匹配,则将类别Cj赋予wn,记为wn(Cj),直到d为空集。但是一个词可能对应多个类别,所以根据下面公式计算其概率: 当wi∈d时k=1,否则k=0,P(wi|Cj) 表示关键词在每个类别中出现的概率,在样本集训练的时候已经计算完毕,得到P(CM0),P(CM1),P(CM2),…,P(CMm-1)为CM从属于某个类别的概率。 (3)利用全概率公式计算CM为垃圾邮件的概率。 概率P (CMi)表示以该文本中出现的词与向量空间模型中特征项的匹配情况,决定该文本属于第Ci类的概率。我们可通过得到先验概率P(Cj)和类条件概率P(CMi)的值,来计算P(d)的概率。 设 P0为一个固定数值,如果P(d)≥P0时,目标邮件CM为垃圾邮件,否则目标邮件CM不是垃圾邮件,通过试验可以调整P0的阈值。 (4) 对于给定的类变量Ci,基于其特征属性w0,w1,…wi…wn之间相互独立假设,计算文本属于某个类别的概率P(Ci|d),通过上面计算可以确定目标邮件CM是为垃圾邮件,如果是垃圾邮件,根据贝叶斯概率公式,对于给定的向量d(w0,w1,…wi…wn),属于Ci (i=1, 2...m)类的概率为: 取max{P(Ci|d), P(C2|d),..., P(Cn|d)}的文本类别为邮件文本d的类别。以上是根据已知样本集来判断目标邮件是否为垃圾邮件,如果是垃圾邮件,计算出属于哪类垃圾邮件。 4.4算法的实现 根据贝叶斯算法来计算一封邮件是否为垃圾邮件的概率,下面介绍算法中主要函数及代码的实现。 ●函数名称:public struct structWord 函数功能:词条的结构体 代码实现: public struct structWord { public string Word; //关键词 public double Value; //概率 } ●函数名称:public struct structType 函数功能:类别结构体 代码实现: public struct structType { public string Type; //关键词的类别 public double Value; //概率 } ●函数名称:public structWord[] WordList,public structType[] TypeList 函数功能:定义类别数组和关键词数组 代码实现: public structWord[] WordList; //定义关键词数组 public structType[] TypeList; //定义类别数组 ●函数名称:protected void Button_ExecValue_Click(object sender, EventArgs e) 函数功能:根据贝叶斯算法计算概率 代码实现: protected void Button_ExecValue_Click(object sender, EventArgs e) { double dValue = 0.0; //总的概率值 double dTempValue = 0.0; //临时概率值 ExecuteAndGetType(); // 获得所有的类别和类别的权重 for (int i = 0; i < TypeList.Length; i++) { //计算指定类别中的在邮件中出现的所有词条的权重和 dTempValue = GetValue(TypeList[i].Type); //计算指定类别在判断垃圾邮件中所占权重 dValue += dTempValue * TypeList[i].Value; } dValue = dValue * 100; Label_Value.Text = "是垃圾邮件的概率为:" + (dValue * 100).ToString() + "%"; } ●函数名称:private void ExecuteAndGetType() 函数功能:获得所有的类别和类别的权重 代码实现: private void ExecuteAndGetType() { …… } ●函数名称:private double GetValue(string strType) 函数功能:计算指定类别中的在邮件中出现的所有词条的权重和 代码实现: private double GetValue(string strType) { …… } 上面给出了判断一封邮件是否为垃圾邮件概率的算法的主要步骤,该算法过滤垃圾邮件的准确性很高,本文在第五章对此算法进行了验证。 第五章 实验结果及分析 在前面的第四章中,文中提出了基于贝叶斯算法的垃圾邮件过滤系统,并给出了相关设计。本章主要基于前两章的讨论结果,给出了相关的实验数据,对前面的章节理论进行了验证,并对实验的数据进行分析。 5.1基于贝叶斯算法的过滤系统实验环境 (1) 操作系统 本文使用Windows Server 2003操作系统,Windows Server 2003集成了功能强大的应用程序环境以开发全新的 XML Web 服务和改进的应用程序,这些程序显著提高进程效率。对于本论文的实验测试, Windows Server 2003有很好的稳定性。 (2) 开发平台 按照微软公司的定义,. NET[29]就是微软公司的XML Web服务平台,它是为了解决互联网应用中存在的普遍问题而预先建立的基础设施。本文使用Microsoft Visual Studio 2005开发工具,它提供了一个集成开发环境(Integrated Development Environment,IDE),用于构建和部署基于Microsoft.NET的软件。 (3) 语言环境 本文主要采用C#[30]语言。C#是一种类型安全的、现代的、简单的、由C和C++衍生出来的面向对象的编程语言,它是牢牢根植于C和C++语言之上的,并可立即被C和C++的使用者所熟悉。C#的目的就是综合Visual Basic 的高生产率和C++的行动力。可以利用C#快速地建立大规模的基于Windows网络平台的应用程序,并且提供了大量的开发工具和服务帮助开发人员开发基于.NET的各种应用。 (4) 数据库平台 SQL Server2005是微软公司推出的基于RDBMS(关系数据库管理系统)技术的数据库。它与ORACLE、SYBASE相比,有着安装方便、使用简单的优点,而且在性价比上有着其它数据库无法比拟的优势。在我国,采用WINDOWS NT作为局域网操作系统的占不小比例,而从技术角度来说,同DB2结合大型机一样,SQL Server2005同WINDOWS NT紧密的结合在一起。能很好的处理部门级的数据。SQL Server2005所具有的将关系数据库管理系统(RDBMS)扩展为虚拟的对象数据库管理系统(ODBMS)的能力,使SQL SQL Server2005成为当今应用于Intranet、Internet最具综合性的数据库开发环境。这就是我们采用SQL Server2005作为支持数据库的主要原因。 5.2基于贝叶斯算法的过滤系统总体结构图 根据前几章的流程分析,我们设计的总体结构图5-1如下: 5.3实验结果及性能分析 依据本文构建的邮件过滤模型,主要使用基于朴素贝叶斯算法构建邮件过滤器,进行邮件训练和邮件判别实验,在不同训练集规模、不同阈值等因素下,都对评估指标产生了影响,分别得到了不同的判别结果,也显示了不同的查全率和查准率,经不断调整阈值,直至达到较理想的查全率与查准率。 5.3.1系统实验结果的质量评价指标 垃圾邮件过滤的性能评价通常指文本分类的相关指标。假设待测试的邮件集合中共有N封邮件,一个垃圾邮件过滤系统的判定结果如下表5-1所示: 表5-1垃圾邮件系统判定标准 实际为垃圾邮件 实际为合法邮件 系统判定为垃圾邮件 A B 系统判定为合法邮件 C D 设N为邮件总数,则N=A+B+C+D,其中A+C为垃圾邮件的数量,B+D为合法邮件的数量,本文采用了下面几个标准: (1) 查全率(Recall):是人工和系统同时评判为正常的邮件数与系统评判为正常的邮件数的比值,这个指标反映了过滤系统发现垃圾邮件的能力,查全率越高表明分类器在该类上可能漏掉的垃圾邮件就越少。 (2) 正确率(Precision):是人工和系统同时评判为正常的邮件数与人工评判为正常的邮件数的比值,正确率越大,将非垃圾邮件误判为垃圾邮件的数量越少。 (3) 精确率(Accuracy),是对所有邮件的判对率。 一个算法的准确与否体现在:一是需要准确的把真正的垃圾邮件给过滤掉,增加邮件过滤的准确性;二是减少把正常邮件给过滤掉,即减少正常邮件的误判率。我们这里通过两个指标来衡量算法的准确性。垃圾邮件查全率和正常邮件误判率。 除此之外,垃圾邮件过滤中还常常采用虚报率(Fallout )、漏报率(Missrate)等指标。另外,我们在前面提到,在实际的垃圾邮件过滤中,人们往往不希望将合法邮件误判成垃圾邮件。为了表示不同情况下垃圾邮件系统的代价。Androutsopoulos等人提出了代价因子的概念[31]。他们把决策损失引入到评价体系中。 5.3.2阈值的确定及对过滤精度的影响 在第四章中我们在利用贝叶斯过滤器对邮件进行判断的一般过程是计算概率,将概率与阈值比较判断待检测邮件是垃圾邮件还是合法邮件。阈值在这里的作用就象一个“门槛”,概率阈值对贝叶斯过滤器对垃圾邮件的漏判率和正常邮件的误判率有着直接的重要影响,因此如何选择一个合适的阈值是一个重要的问题。如果阈值选取的比较大,可以减少合法邮件被误判为垃圾邮件的可能,但同时垃圾邮件被误判为合法邮件的可能性也增大;如果阈值选取的比较小,可以减少垃圾邮件被误判为合法邮件的可能,但同时合法邮件被误判为垃圾邮件的可能性也增大。这两种情况都是我们所不希望出现的。由此可以看出,阈值的设置很重要,它直接影响到检测结果的准确程度。 本文主要涉及到两个阈值的确定: (1) 第一个是计算词条在类别中出现的概率及计算该词条的RMI值,利用RMI值作为特征向量的分量词条,构成该类别的特征向量。 做法是取前K个词条作为该类别的特征,K就是阈值,这个阈值的选取是通过对样本集的实验得出的。 (2) 第二个是利用概率公式计算目标邮件是垃圾邮件的概率时,将概率与阈值比较判断目标邮件是否为垃圾邮件。该阈值也是通过大量的实验找出阈值与检测结果的准确程度的关系,并利用这个关系得到合适的阈值设置。 最优的阈值是和数据集相关的,每一个用户的贝叶斯过滤系统的最优阈值都是不同的。贝叶斯过滤系统应根据特定的数据集来确定最优的概率阈值。不同的阈值下检测的结果的准确程度是不同的。 5.3.3实验数据 本文选取100封中文合法邮件和200封中文垃圾邮件做为测试样本。 根据样本集进行测试,分析不同阈值的选取对贝叶斯过滤器的影响很大,下面是不同阈值的分析: (1) 阈值对数据结果的影响 本文对邮件样本集进行邮件训练实验,在不同特征项数量、不同阈值等因素下,都对评估指标产生了影响,显示了不同的查全率和查准率,经不断调整阈值,直至达到较理想的查全率与查准率。 样本集中选定不同的阈值时对不同指标产生的影响。 如下表5-2所示: 表5-2不同阈值对指标的影响 概率阈值 特征阈值 查全率(Recall) 正确率(Precision) 精确率(Accuracy) 0.41 22 97.7% 89.7% 95% 0.49 95.6% 90.5% 93.5% 0.51 93.4% 88.7% 92.9% 0.42 15 95.8% 94.7% 95.3% 0.48 94.1% 92.1% 94.2% 0.49 90.6% 90.8% 92.3% 0.45 10 93.6% 93.2% 93.7% 0.48 92.4% 92.8% 92.4% 0.50 84.9% 81.9% 89.8% 从表5-2中可以看出,训练集特征选取的大小对查全率和查准率都有较大的影响,直接影响到过滤器的精确度。一般来说选取的特征过大,特供的关键词数量过多,会导致对合法邮件的误判率增大,正确率减小;如果特征选取太小,提供判别依据有限,会漏掉大量的影响判别的特征项,对最后的判别产生影响,查全率与精确率都较低。 由表5-2可以看出,不同的特征数量的选取,不同的概率阈值有不同的查全率、正确率及精确率。根据表中数据,当选取特征数量为22时, 概率阈值由0.41变化为0.51时,垃圾邮件的查全率和正常邮件的误判率随之也发生变化,查全率逐渐减小,正确率虽然有明显的提高,但随着概率阈值的增加,正确率逐渐减小,精确率逐渐减小,0.41为选取特征数量为22时的最优的概率阈值;当选取特征数量为15的情况下,概率阈值由0.42变化为0.49时,垃圾邮件的查全率和正常邮件的误判率发生明显的变化,查全率、正确率及精确率逐渐减小,0.42为选取特征数量为15时的最优的概率阈值;当选取特征数量为10的情况下,概率阈值由0.45变化为0.5时,查全率、正确率及精确率逐渐减小,0.45为选取特征数量为10时的最优的概率阈值。 (2) 最优阈值的分析 贝叶斯过滤器应根据特定的数据集来确定最优的概率阈值。通过表5-3可以看到不同特征数量的情况选取最优阈值对查杀邮件的查全率、正确率及精确率的影响。 表5-3不同的概率阈值对指标的影响 特征阈值 概率阈值 查全率(Recall) 正确率(Precision) 精确率(Accuracy) 22 0.41 97.7% 89.7% 95% 15 0.42 95.8% 94.7% 95.3% 10 0.58 93.6% 93.2% 93.7% 表5-3显示了实验中采用了不同的特征数量和不同的概率阈值有不同的查全率、正确率及精确率。选择概率阈值最优的前提下,不同的特征数量的选取直接影响到过滤器的精确度。特征数量为22时,垃圾邮件的查全率很大,但是由于样本的特征数量过大时,其间特征项依赖关系过大,会导致合法邮件的误判率增加,从而影响了正确率;特征数量为15时,有很好的查全率、正确率及精确率,数值波动很小;特征数量为10时,由于样本的特征数量很小,将会导致垃圾邮件的漏判率增加,影响了垃圾邮件的查全率、正确率及精确率。由此可以看出,选取特征数量为15,概率阈值为0.42的情况下,可以保证有较好的查全率和正确率。它们是本次实验的最优阈值。 最后我们对本次实验进行分析:在本章开始我们介绍了基于贝叶斯算法的垃圾邮件过滤器的总体结构的设计,使我们更深一步认识到了过滤器的总体结构及对实验结果有关的两个阈值的取值问题。选取特征的数量对查全率有着比较明显的影响。随着特征数量的减少,查全率会逐渐减小,特征数量如果选取过大,会导致关键词数量增加,从而加大对合法邮件的误判率增大。概率阈值对过滤器影响非常大,选取合理的阈值对质量评价指标有很大的影响,经过反复实验,本文对垃圾邮件的过滤取得了很好的效果。 第六章 总结与展望 6.1论文总结 随着电子邮件的广泛应用,垃圾邮件的增长也越来越快,反垃圾邮件已经成为全世界共同关注的问题,对于垃圾邮件过滤的研究已经取得了一定的成果。本文在分析这些已有的技术的基础上提出一种基于Bayes算法的垃圾邮件过滤系统。 本文的主要工作和研究成果有: (1) 根据当前的垃圾邮件发展状况,分析电子邮件的基本原理、垃圾邮件的危害及目前过滤垃圾邮件的主要技术,其中包括客户端过滤技术和服务器端过滤技术,对现有的主要过滤技术的优缺点进行比较,确定合理运用现有过滤技术的初步方式和方法。 (2) 虽然大量的文献表明,贝叶斯过滤系统有很高的过滤作用,但这些文献都是针对英文的,而对于中文邮件,由于涉及到分词和语言特点的问题,贝叶斯过滤系统不能实现同样高的性能。不过,相比传统的基于规则的垃圾邮件过滤方法,贝叶斯过滤系统还是更加优越的。 本文采用了基于贝叶斯算法的邮件过滤方法。其中,为了尽可能提高过滤效率,贝叶斯过滤器必须用一个比较大的训练样本集来训练,而且对于处理中文文本的问题时,如何进行中文的分词处理在很大程度上会影响到贝叶斯过滤器的性能。本文采取人工的分类方法,对邮件样本集分为八个类别:广告类、网上订票类、网上购物类、网上赚钱类、情趣物品类、色情暴力类、欺诈信息类、销售邮件地址类等。 (3) 设计和实现一个基于贝叶斯算法的过滤模型。需要完成从过滤模型的建立,到具体功能的实现方法和具体步骤,以及过滤算法的实现。 (4) 在实际使用中,完成了训练集的构成以及训练集的自学习功能,依据实验所判定的垃圾邮件反馈信息对邮件训练集进行调整,通过试验对阈值得调整,得到较好的查全率与查准率,使误判损失降到最低。 6.2待改进的问题 本文在垃圾邮件的过滤方面取得一些研究成果,但仍然存在许多不足,有待今后进一步研究,主要表现在: (1) 本文采用的邮件分类方法是人工的分类方法,该方法计算量庞大,效率很低,根据每个人的社会常识的认知程度不同,对分类的效果也会产生影响,在以后的学习过程中逐步完善这个问题,引入一个可行的文本自动分类方法,以便更精确的对邮件进行分类,提高分类效率。 (2) 本文根据朴素贝叶斯原理,该原理是建立在假设基础上的,假设每个向量是相互独立的,未考虑各向量之间的拓扑关系,可能会丢失邮件特征,造成部分邮件的误判。 解决方法:应该根据提取的特征向量,引入特征分布数,解决向量分量之间的拓扑关系。 综合上述,本课题的研究是十分有意义的,但是在研究的过程中我们还是发现了很多不足之处,需要我们在今后的学习中不断努力。 参考文献 [1]Jon Postel,On the Junk Mail Problem,RFC 706,Nov 1975。 [2]中国教育和科研网垃圾邮件处理小组,垃圾邮件的文化与历史,Hhttp://www. ccert.edu.cn/spam_old/culture/history_culture.htm。 [3]中国互联网协会反垃圾邮件中心,《2005第三次中国反垃圾邮件状况调查报告》,2005。 [4]中国互联网协会,中国互联网协会互联网公共电子邮件服务规范, http://www.isc.org.cn。 [5]曹麒麟、张千里,垃圾邮件与反垃圾邮件技术,人民邮电出版社,2003。 [6]赵英、黄九梅,计算机工程与应用,2003。 [7]中国互联网络信息中心[R]。第22次中国互联网络发展状况统计报告,2008。 [8]The Chinese Anti-Spam Alliance, http://www.anti-spam.org.cn。 [9]中国互联网协会,中国互联网协会互联网公共电子邮件服务规范, http://www.isc.org.cn。 [10]http://www.alvestrand.no/x400/standards.html。 [11]Jonathan B.Postel, Simple Mail Transfer Protocol,RFC821,Aug 1982。 [12]Myers J.Post Office Protocol-version 3。RFC1725,Dover Bench Consulting, Inc,1994,1。 [13]Crocker D., Standard for the Format of ARPA Internet Text Messages, RFC 822, Department of Electrical Engineering, University of Delaware, August 1982。 [14]Borenstein N,N Freed, MIME(Multipurpose Internet Mail Extensions)Part one: mechanisms for specifying and describing the format of internet message bodies. RFC1521,Bellcore, Innosof, 1993.9。 [15]SMTP结构及原理,http://www.5dmail.net/html/2003-11-12/2003111295200.htm [16]P.Domingos and M.Pazzani,Beyond Independence:Conditions for theOptimality of the Simple Bayesian Classifier,In:Proc of the13th International Conference on Machine Learning,PP.105-112,Bari,Italy,1996。 [21]潘文峰,基于内容的垃圾邮件过滤研究,中国科学院计算技术研究所,2004。 [22]Netloafer,客户端反垃圾邮件技术,中国反垃圾邮件联盟。 [23]Tanenbaum A S. Computer[M],清华大学出版社,2005。 [24]房子敬,杜绝垃圾邮件,网络安全技术与应用,2004。 [25]江河,对抗垃圾邮件[J],网管员世界,2005。 [26]陈华辉、薛春阳,一种基于贝叶斯网的垃圾邮件过滤器[J],微机发展,2004。 [27]王新梅,基于内容挖掘的垃圾邮件过滤技术,2006。 [28]边肇祺、张学工,模式识别(第2版),2000。 [29]Andrew McCallum,Kamat Nigam.A Comparison of Event Model for Na?ve Bayes TextClassification.http://www-2.cs.emu.edu/people/mccallum/multinomiat-aaai98w.ps,1998。 [30]I.Adnroutsopoulos,G.Paliouras,E.Michelakis,Learning to Filter Unsolicited Commercial E-Mail.Thchnical report 2004,2,NCSR“Demokritos”, 2004。 [31]邹建峰、李律松、李晓栓,ASP.NET,人民邮电出版社,2004,12。 服务器 发件方 收件方 服务器 Internet DNS MDA 邮箱 SMTP SMTP POP/IMAP 图2-1电子邮件传输过程 MUA MTA MTA MTA MDA 邮箱 队列 队列 队列 图2-2电子邮件的存储转发示意图 (3-1) (3-2) (3-3) (3-4) (3-5) (3-6) (3-7) C W1 W2 W3 W4 (3-8) 属于Ci类的邮件数量 邮件样本集总的数量 P(Ci)= (3-9) (3-10) (3-11) 100% 80% 60% 40% 20% 0 68.5% 3.95% 3.8% 3.58% 2.79% 2.39% 0.3% 14.67% 广告 购物 赚钱 欺诈 邮址 色情 订票 情趣 图4-1垃圾邮件种类 邮件样本(已知类别) 每个类别的总词数 取词 Y 计算词出现的频率 计算词出现的概率 存入关键词数据库 结束 完成 Y N N 存入正常数据库 图4-2 分类向量提取流程 P(wi|Cj)= k×Len(wi) Cj的文本量 (4-1) P(Cj)= 第j类文本量之和 M1的文本量 (4-2) (4-4) (4-5) (4-6) (4-7) 邮件样本集 人工分类 提取关键词 样本关键词库 邮件过滤器 正常邮件 转发出去 提取特征 样本特征词库 垃圾邮件 过滤或删除 待分类邮件 提取特征 图5-1 总体结构图 公式:为: 公式:为: 公式:为: 1 4
/
本文档为【基于贝叶斯算法分类的反垃圾邮件系统的改进硕士学位论文】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。 本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。 网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。

历史搜索

    清空历史搜索