关键词 垃圾邮件;反垃圾邮件系统;过滤;模块
1 引言
国际互联网技术为人们进行交流、协同工作、资源及内容共享等提供了一条崭新途径。随着通信技术及计算机技术的飞速发展,互联网络的使用日益普及,已成为当前信息时代的一种极为重要的信息传播载体,对社会的发展起到了巨大的推进作用,且信息传播及时、便捷。据美国电脑工业年鉴公司估计, 2010年全球互联网用户将超过7.65亿人。互联网络安全涉及到加密、计算机病毒防范、入侵检测、接入控制、网上媒体信息内容监管、安全管理、垃圾邮件处理等众多关键技术问题。在电子邮件为我们提供充分便利的同时,不断产生的垃圾邮件和不良邮件也正在给我们的工作、生活制造着难以计数的麻烦和无法预计的危害。
2004年11月份的数字显示,垃圾邮件的比例接近74%,在发送的垃圾邮件中,钓鱼欺诈性邮件占了24%,这使得它成为了增长速度最快的垃圾邮件类型,其它数量较大的垃圾邮件类型包括广告(23%)、医疗(11%)、色情(14%)。
互联网络上存在着海量媒体信息,皆可能成为邮件的内容,就给邮件的处理带来复杂多样性,文字监管问题也就显得越来越重要,当然也越来越困难。虽然要求尽快建立垃圾邮件相关的法律规范,倡仪通过法律手段制裁垃圾邮件,解决垃圾邮件问题,但建立垃圾邮件相关的法律规范本身就是一个较长时间的一个过程,且垃圾邮件仍然会存在、产生并在传播。
信息产业部、中国互联网协会、中国通信标准化协会2006年6月21日启动12321全国反垃圾邮件总动员活动,普及反垃圾邮件知识,营造绿色网络环境。中国互联网协会反垃圾邮件中心公布的调查结果显示,目前反垃圾邮件工作取得一定成效。从2006年3月到2006年6月,中国互联网用户收到的垃圾邮件比例由63.97%下降到61.99%。用户平均每周收到垃圾邮件数量为17.93封,与2006年3月的每周19.33封相比减少1.4封。这即说明,反垃圾邮件仍是一个持续又长久的过程。尽管《互联网电子邮件服务管理办法》规定业已出台(2006年3月30日起正式施行),但仍要采取各种必要的措施进行预防及使用,这如同法律一样不可缺,既要打击犯罪,又要教育以预防犯罪。对邮件进行适时处理,阻止垃圾邮件的泛滥成灾,通过总结策略,一般采用的是关键字内容过滤技术,采取“截获样本、解析特征、生成规则、规则下发、内容过滤” 这种类似传统杀病毒系统的原理。下面,就对邮件的内容过滤模块作一简单研究分析。
2 内容过滤模块的总体设计
邮件过滤系统设计思想主要是用来监控和拦截网络上传输的含有有害信息的邮件数据报。针对这一设计思想,可以把网络邮件过滤系统的主要功能概括为以下几个模块[4]。
(1)抓取数据报文,即数据的分离过程;
(2)对数据报文进行过滤分析,对邮件(SMTP,POP3)数据包进行组合;
(3)查找设定的邮件地址、IP地址等过滤条件,对邮件内容中的MIME编码进行解码,还原出原始邮件内容,对内容进行分析,检索关键字,对可疑邮件进行记录;
(4)有关人员通过专用的客户端软件查看可疑邮件,并远程对软件的运行进行配置和管理。 

图1 普通电子邮件系统的SMTP服务过程
垃圾邮件有很强的繁殖力,如果不加以整治,就会对合法邮件造成危害,干扰互联网络的正常工作。电子邮件过滤技术是目前反垃圾邮件用到的主要技术。电子邮件过滤通常可以从两方面实现:一种是基于客户端的垃圾邮件过滤,一种是基于服务器端的垃圾邮件过滤。而在网络中对可疑邮件 进行过滤、堵截的最佳方法是基于服务器端的垃圾邮件过滤,即通过在邮件服务器上加设邮件过滤器来实现邮件过滤。
普通电子邮件系统的SMTP服务过程如图1。
加了垃圾邮件过滤模块的电子邮件系统的服务过程如图2:

图2. 加了垃圾邮件过滤模块的电子邮件系统的服务过程
主要在于增添一个邮件数据提取接口。当来自于Internet的邮件被通过POP3等系统接收时,邮件数据提取接口将提取到的邮件数据内容送交邮件过滤服务器,用户暂时不阅览该邮件,而是等待邮件过滤服务器的控制命令。内容过滤模块对邮件信息中的文本内容进行检查与过滤。检查的对象具体为邮件的其他部分内容、正文内容与文本附件内容。邮件过滤服务器根据预定义的策略和规则对邮件内容进行检查,并采用多线程同时处理多封邮件,实现对邮件内容快速扫描,并利用关键词库完成匹配,确定该邮件是否为合法邮件。
3 内容过滤模块中关键技术——多文档文本提取
多文档文本提取技术,主要见图3.All_To_Txt模块所描述的文档模块流程情况,从文档中提取出纯文本流,再结合自动分词、词频统计、关键词提取等过程完成文本的提取。

图3. All_To_Txt模块(文档模块)
3.1 HTML文档的文本提取技术
超文本标记语言HTML是Web的通用语言,是创建Web页和发布Web信息的格式,是Web设计的基础,是控制Web浏览器在屏幕上显示内容的核心技术。HTML用于编制可以在不同的平台上实施链接的超文本文件。HTML的标记可以表达超文本的新闻、邮件、文档及超媒体——包含在线的图形、视像的信息体。
HTML文档具有最基本的结构框架“头”和“体”。HTML文档均用于在浏览器上显示,而支持HTTP的浏览器均为WINDOWS式的图形用户接口(GUI)界面,因此HTML文档的基本结构是依据这一要求而设计确定的。一个GUI的视窗通常由标题栏和窗口体作为其最基本的构成。HTML文档结构的“头”和“体”正应于这一要求。
(1)HTML容器标记
HTML文档的第一个标记<HTML>是HTML的容器标记,它向浏览器指示,其后的代码应使用由HTML制定的语法和结构规则来处理。相应的结束标记</HTML>出现在文件的结尾处。
注意:不要把HTML文档的任何文本放置在这两个标记的外面,否则其结果是不可预见的。
(2)头标记(head)
<HEAD>和</HEAD>是一对头标签,是标记文件头区域的分界线(<head>….</head>),它包含着不在网页上直接实施或显示的项目。有在浏览器的标题栏中显示的文档标题名称(title)和该文档有关的属性参数。它是HTML文档的第一个部分,是一个可选项。(尽管HTML规定一些元素只能在它的内部使用。)在文档头中能用于浏览显示的元素仅有标题(title),其他的元素均不显示。
TITLE(标题)也是一个可选元素,用一对标签(<TITLE>…</TITLE>)标记定义了在浏览器的标题栏中显示的内容。标题元素总是嵌套在头元素中的。
(3)体标记(body)
体(BODY)是HTML文档中的主体,反映在浏览器的屏幕的正文区域,它包含了文档的内容——即在网页上可见的资料。
<BODY>和</BODY>是一对体标签,用于标记(<BODY>…</BODY>)除了头以外的其余的文档内容。与头元素一样是一个复合元素,可在体标签内嵌套其他的字符和元素。
(4)一个最简单的HTML文档的组成
头和体结合就能组成一个HTML文档。
3.2 PDF文档的文本提取技术
PDF的文件结构(即物理结构)包括四个部分:文件头、文件体、交叉引用表和文件尾。
文件头(Header)指明了该文件所遵从PDF规范的版本号,它出现在PDF文件的第一行。如%PDF-1.2表示该文件格式符合PDF1.2规范。文件体(Body)由一系列的PDF间接对象组成。这些间接对象构成了PDF文件的具体内容如字体、页面、图像等等。交叉引用表(Cross-reference Table)则是为了能对间接对象进行随机存取而设立的一个间接对象地址索引表。文件尾(Trailer)声明了交叉引用表的地址,指明文件体的根对象(Catalog),还保存了加密等安全信息。根据文件尾提供的信息,PDF的浏览器可以找到交叉引用表和整个PDF文件的根对象,从而实现整个PDF文件的随机存取。
PDF文件主体文档架构反映了文件体中间接对象间的等级层次关系。PDF的文档结构是一种树型结构。树的根节点就是PDF文件的根对象(Catalog)。根节点下有四个子树:页面树(Pages Tree)、书签树(Outline Hierarchy)、线程树(Article Threads)、名字树(Named Destination)。
PDF文本的物理格式主要描速文字如何显示在页面上,包括文字的字体、大小、颜色、位置等属性,在多数的PDF文件中一般为了减少文件的大小,都会对文本流进行压缩编码,常见是deflate压缩编码。压缩的文本流需要先进行解码,然后才可以得到便于理解的文本流。PDF文件文本内容的基本提取过程为:先读取PDF文件,可以根据查找、匹配特征标识符来查找到文本对象(Text Object),分离出文本流(Text Stream),进行Deflate解码,得到含有文本内容的文本流,根据语法分析,生成正确的text 格式。
PDF文件的版本一般存放在文件的头部,PDF文件的其他一些信息,可以根据交叉应用表,也可以根据特征标识符,定位该部分信息。文件信息的提取,主要是通过文件结构找出文件信息所在的位置,然后通过语法分析分离出我们需要的部分,在通过编码或语法转换,使生成正确的格式。由于文件的交叉引用表可能会出现损害,可以根据特征标识符来定位文件的信息存放的位置。