(信息与通信工程专业论文)基于linux的简易电子邮件客户端收发模块的设计与实现.pdf_第1页
(信息与通信工程专业论文)基于linux的简易电子邮件客户端收发模块的设计与实现.pdf_第2页
(信息与通信工程专业论文)基于linux的简易电子邮件客户端收发模块的设计与实现.pdf_第3页
(信息与通信工程专业论文)基于linux的简易电子邮件客户端收发模块的设计与实现.pdf_第4页
(信息与通信工程专业论文)基于linux的简易电子邮件客户端收发模块的设计与实现.pdf_第5页
已阅读5页,还剩69页未读 继续免费阅读

(信息与通信工程专业论文)基于linux的简易电子邮件客户端收发模块的设计与实现.pdf.pdf 免费下载

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

中文摘要 摘要 伴随着网络办公化的普及和互联网技术的发展,电子邮件已经成为因特网上 使用最多和最受用户欢迎的一种应用。但是,现今使用的大多数的电子邮件客户 端收发软件都功能多样、实现复杂,这使程序向嵌入式等小型化载体进行迁移带 来不便。并且,网络上流行的自制电子邮件客户端收发模块也多是基于w i n d o w s 操作系统下的v c 集成开发环境编写,很难直接应用到l i n u x 系统中。因此,本文 针对l i n u x 操作系统提出一种简易电子邮件收发客户端模块的解决方案。 本文首先研究了电子邮件的体系结构,明晰了电子邮件客户端模块的功能和 作用。根据设计要求,搭建了模块系统的总体结构。其次,搭建l i n u x 系统平台, 了解并实现了l i n u x 下的t c ps o c k e t 网络编程。随后,详细讲解了与电子邮件相 关的各项协议,包括:与发送邮件相关的简单邮件传输协议s m t p ( e s m t p ) ,与接 收邮件相关的邮局协议p o p 3 ,以及对它们进行补充的通用因特网扩充协议m i m e 。 进而研究了协议中编码的有关规定并编程实现。重点设计并完成了对s m t p 和 p o p 3 协议( 含m i m e 协议) 的相关邮件处理和报文解析。 设计中使用了q tc 抖编程技术,完成了用户图形界面的编写和显示。查询了 l i n u x 相关磁盘文件操作函数要求,通过硬盘文件进行前后台程序的消息传递,将 电子邮件客户端收发模块最终整合起来。 本文最后运行简易电子邮件客户端收发模块,并对其进行了多项测试,完成 了电子邮件的发送、接收和邮箱账户管理功能,可以实现在局域网和广域网中的 邮件传输通信。本文所设计的模块全部自主研发,具有高度的可扩展性,因此, 在电子邮件的安全性等热点问题上,今后可以进步的改进和完善。 本文的研究成果已经应用于大连海事大学导航研究所所承担的交通部项目 中,作为为水上交通安全信息系统中的下一代船载终端设备嵌入电子邮件功能而 进行的预研。 关键词:电子邮件客户端;lin u x :s m t p ;p o p 3 ;0 t 英文摘要 a b s t r a c t w i 廿lt h ep o p u l a r i t yo fn e t w o r ko f f i c ea n dd e v e l o p m e n to fi n t e m e tt e c h n o l o g y , e - m a i lh a sb e c o m et h em o s tp r e v a l e n ta p p l i c a t i o no nt h en e t b u tn o w a d a y s ,b e c a u s eo f t h ec o m p l e x i t yo fm o s te - m a i lc l i e n ts o f t w a r e ,i ti su n e a s yt om o v et h ep r o g r e s st os m a l l d e v i c e s a n di ti sa l s oh a r dt oa p p l yt h es e l f - m a d ee - m a i lc l i e n tm o d u l e st ol i n u xo s w h i c hc a l lb ed o w n l o a d e de a s i l yo nn e tb u tm a d eu n d e rv ci d ei nw i n d o w so s s oa s i m p l ec l i e n tm o d u l eo fe - m a i ls e n d i n g r e c e i v i n gf o rl i n u xo si sp u tf o r w a r di nt h i s p a p e r f i r s t ,t h ea r c h i t e c t u r eo fe - m a i ls y s t e mi sd i s c u s s e dw h i c hm a k et h ef u n c t i o no ft h e c l i e n tm o d u l ec l e a r a n da c c o r d i n gt oi t ,t h eo v e r a l ls t r u c t u r eo ft h ed e s i g ni ss e tu p s e c o n d ,t c ps o c k e tp r o g r a mi sf i n i s h e da f t e rl i n u xo sp l a t f o r mh a sb e e nb u i l t w h e r e a n a g r e e m e n t sa r ei l l u m i n a t e dw h i c hi n c l u d es i m p l em e s s a g et r a n s f e rp r o t o c o l s m t p ( e s m t p ) r e l a t i n gt oe - m a i ls e n d i n g ,p o s to 衔c ep r o t o c o l3p o p 3c o n c e r n e d 谢t l le - m a i l r e c e i v i n g ,a n dm u l t i - p u r p o s e i n t e r n e tm a i le x t e n s i o nm m e c o m p l e m e n t i n gt ob o t ho ft h e m f u r t h e r m o r e , t h ee n c o d i n gm e t h o d sm e n t i o n e di nt h e a b o v ea g r e e m e n t sa r ec o m p r e h e n d e da n dr e a l i z e d n ed i s p o s a lo fe - m a i lw i t hs m t p a n dp o p 3 ( c o n t a i n i n gm i m e ) i st h ef o c u s i nt h ed e s i g n ,q tc + + p r o g r a m m i n gt e c h n o l o g yi su s e dt oa c c o m p l i s ht h eg u i p r o c e s s 、聃t ht h ea t t e n t i o nt or e q u i r e m e n to fl i n u xd o c u m e n to p e r a t i o no nd i s k ,t h e c l i e n tm o d u l ei sa s s e m b l e dv i af i l ec o m m u n i c a t i o nb e t w e e nd a e m o na n df o r e g r o u n d p r o g r a m a tl a s t ,t h es i m p l ec l i e n tm o d u l eo fe - m a i ls e n d i n g r e c e i v i n gi sr u nf o rt e s t i t a c h i e v e st h em a n a g e m e n to fm a i l b o x ,a n dc a na l s os e n da n dr e c e i v ee - m a i lb o t hi nl a n a n dw 埘i th a sa h i g hd e g r e eo fe x t e n d i n ga b i l i t yf o ri n d e p e n d e n tr & d t h u s ,t h e r e i sc o n s i d e r a b l er o o mf o ri m p r o v e m e n ti nt h ef u t u r e ,e s p e c i a l l yo ns o m eh o tt o p i c ss u c h a se - m a i ls e c u r i t y 砀er e s u l th a sb e e na p p l i e dt ot h em i n i s t r yo fc o m m u n i c a t i o n s p r o j e c tw h i c hi s u n d e r t a k e nb yg n s si n s t i t u t ei nd a l i a nm a r i t i m eu n i v e r s i t y i ti st h ep r e - r e s e a r c ht o a d de - m a i li n t ot h en e x tg e n e r a t i o no fs h i p - b o m ed e v i c ei nw a t e rs a f e t yi n f o r m a t i o n 英文摘要 s y s t e m k e yw o r d s :e - m a i lc l i e n t ;l in u x :s m t p ;p o p 3 ;o t 大连海事大学学位论文原创性声明和使用授权说明 原创性声明 本人郑重声明:本论文是在导师的指导下,独立进行研究工作所取得的成果, 撰写成硕士学位论文= = 基王坠i 避的篮易鱼王整鲑窒应竭蝗筮搓迭的遮让生塞 贮。除论文中已经注明引用的内容外,对论文的研究做出重要贡献的个人和集 体,均已在文中以明确方式标明。本论文中不包含任何未加明确注明的其他个人 或集体已经公开发表或未公开发表的成果。本声明的法律责任由本人承担。 学位论文作者签名: 毒篷睦 学位论文版权使用授权书 本学位论文作者及指导教师完全了解大连海事大学有关保留、使用研究生学 位论文的规定,即:大连海事大学有权保留并向国家有关部门或机构送交学位论 文的复印件和电子版,允许论文被查阅和借阅。本人授权大连海事大学可以将本 学位论文的全部或部分内容编入有关数据库进行检索,也可采用影印、缩印或扫 描等复制手段保存和汇编学位论文。同意将本学位论文收录到中国优秀博硕士 学位论文全文数据库( 中国学术期刊( 光盘版) 电子杂志社) 、中国学位论文全 文数据库( 中国科学技术信息研究所) 等数据库中,并以电子出版物形式出版发 行和提供信息服务。保密的论文在解密后遵守此规定。 本学位论文属于:保密口在年解密后适用本授权书。 不保密( 请在以上方框内打“4 ) 论文作者签名:砖段需导师签名:弗 日期:x ,。罗年7 月石日 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 第1 章绪论 1 1 电子邮件收发软件的历史和现状 电子邮件( e l e c t r o n i cm i l l ,e m a i l ) 最初是作为两个人之间进行通信的一种机制 来设计的,在浏览器技术产生之前,i n t e r n e t 网上用户之间的交流大多是通过电子 邮件方式进行的。电子邮件虽然诞生于2 0 世纪7 0 年代,但是直到到8 0 年代中期 由于个人电脑的兴起,电子邮件才开始在电脑迷和大学生中广泛传播开来。到9 0 年代中期,联网浏览器诞生,全球网民人数激增,人们通过任何联网的计算机都 可以在邮件网站上维护邮件帐号,而不是只能在家中或公司的特定联网电脑上使 用邮件,电子邮件被广为使用【l 】。 使电子邮件成为主流的第一个程序是e u d o r a ,是由史蒂夫道纳尔在1 9 8 8 年编 写的,由于e u r o d a 是第一个有图形界面的电子邮件管理程序,它很快就成为各公 司和大学校园内的主要使用的电子邮件程序。随着互联网的兴起,n e t s c a p e 和微软 相续推出了它们的浏览器和相关程序,例如著名的h o t m a i l 网站,使e u r o d a 逐渐走 向衰落【l 】。在现今的w i n d o w s 操作系统中,比较流行的电子邮件客户端软件有: o u t l o o k 、f o x m a i l 以及d r e a m m a i l 等等,而l i n u x 系统下比较著名的邮件客户端软 件包括:e v o l u t i o n 、m o z i l l am i l l 、k m a i l 和i n u t t 等。 在经历了漫长的发展过程之后,电子邮件现在已经演变成为一个复杂并丰富 得多的系统,可以传送声音、图片、视频等多媒体信息,以至于如数据库或帐目 报告等更加专业化的文件都可以以附件的形式在网上分发。现在,电子邮件已成 为许多商家和组织机构的生命血脉,用户可以通过电子邮件形式的讨论会进行项 目管理,或根据交换的电子邮件信息进行重要的决策行动。此外,目前许多网络 开发商亦增加了依附于电子邮件系统的增值服务系统,如帐务报表管理服务、多 种付费方式管理服务、网络新闻服务等。同时,伴随着电子邮件使用的普及,电 子邮件客户端收发软件逐渐被应用于通信行业的各种载体之上,如手机、机项盒、 p d a 等等【2 1 。 在电子邮件广泛传播的同时,大量的垃圾邮件和病毒邮件也应运而生,在2 0 0 8 年5 月的垃圾邮件现状报告中,该月垃圾邮件占所有邮件的8 0 以上,甚至在5 1 2 汶川地震之后有人针对四川灾区发送一些虚假募捐邮件骗取钱财。而利用邮件传 第l 章绪论 播的各种网络蠕虫病毒也早已屡见不鲜,电子邮件的安全性和可信度已经遭到广 泛的质疑【”。基于此,本文将对l i n u x 系统下公共电子邮件客户端收发模块的实现 及其相关的邮件安全性问题加以讨论。 1 2 研究课题的意义 现有的电子邮件客户端软件都是基于台式机或笔记本平台安装的,使用时需 大量调用系统类库,资源消耗量较大,对于今后将程序向嵌入式等小型化载体进 行迁移带来诸多不便【4 】。 2 0 0 7 年大连海事大学导航研究所推出第一代水上交通安全信息系统船载终 端,以片上系统单片机为主处理器,其主要功能为通过c d m a 或g s m 网络使用 g p r s 业务进行无线数据通信。近两年来,随着用户对信息服务的种类和功能的要 求越来越多,对该i n t e r n e t 终端设备的信息处理能力的要求也不断提升。研究所 也已经进入到下一代以嵌入式系统为核心的嵌入式船载终端的研发工作中。及时 的电子邮件收发也是下一代移动终端所必备的功能之一。本文中的模块设计工作 就是为该功能的添加所进行的预研。 目前流行的嵌入式操作系统有v x w o r k s 、“c o s 、w i n d o w sc e 和嵌入式l i n u x 等。前三个系统作为商用系统环境使用时都会收取一定的费用,这将会造成产品 成本的增加,而嵌入式l i n u x 系统源代码开发,可以自由传播和修改,因此成为下 一代船载终端所选用的核心操作系统f 5 1 。作为前期的开发工作,必然也选择l i n u x 操作系统作为简易客户端收发模块的运行环境。 但是现有的自行研发的简易邮件客户端软件,多是基于w i n d o w s 操作系统编 写,尤其是用户界面框架组成,无法直接应用于l i n u x 运行环境,这使得模块设计 时无法直接利用他人已经编写好的邮件收发程序。因此,自编制一个运行在l i n u x 操作系统下的简易电子邮件客户端收发模块成为必然。 其次,由于是自主开发的电子邮件收发模块,具有高度的可扩展性,未来可 以很方便的添加目前流行的电子邮件推送功能,实现邮件接收的自动提醒【6 】。或者 在邮件安全性等方面,也可以非常简单的实现仅基于客户端的自定义垃圾邮件的 滤除工作,或特定邮件的选择接收功能。并且结合系统已安装的病毒查杀软件, 还可以自动完成邮件接收后的嵌入式软件病毒扫描功能等,为加强电子邮件的安 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 全性和可靠性提供参考意见。 1 3 本文的主要研究内容与组织结构 本文对电子邮件及相关网络技术进行了初步的探索和研究。主要研究内容包 括以下几个方面: ( 1 ) 研究l i n u x 下电子邮件客户端收发软件实现的各种方法。 ( 2 ) 根据具体情况,设计一种公众电子邮件客户端收发模块。 ( 3 ) 研究电子邮件相关协议和编解码技术。 ( 4 ) 对现有邮件客户端采用的安全电子邮件技术进行了解,为设计的简易电子 邮件客户端收发模块提供优化方案。 本设计基于l i n u x 系统下的q t 集成开发环境编写。组织结构如下: 第二章对系统的总体设计进行描述。首先对电子邮件的体系结构进行了简单 的介绍,明确了本设计模块在系统中的地位和作用。接着提出了系统的总体设计 方案和依据。系统分两大部分进行设计:后台电子邮件传输协议的实现和前台可 视用户界面的显示。 第三章为后台电子邮件传输协议实现部分的设计。该部分分为网络接口层实 现模块、传输层实现模块和应用层实现模块三个层次进行设计。涉及操作系统的 选用、s o c k e t 编程技术,以及s m t p 、p o p 3 和m i m e 等多种电子邮件传输协议的 应用。 第四章对前台可视用户界面的显示部分进行设计。该部分由界面显示模块和 前后台的连接模块组成。其中,界面显示模块主要使用q t 编程技术,而前后台的 连接模块主要涉及对磁盘文件的操作和管理。 第五章对本设计中的各个子模块进行了详细测试,并给出了系统的总体运行 结果。 结论中对现有工作进行了总结并为简易电子邮件客户端收发模块安全性的提 高提出了进行一步的构想。 第2 章系统的总体设计 第2 章系统的总体设计 2 1 电子邮件的体系结构 由简单到复杂,电子邮件的体系结构般有4 种情况。下面从最简单的情况 进行介绍,仅以一个方向的邮件收发为例m 。 国 系统 图2 1 电子邮件的体系结构第一种情况 f i g 2 1t h ef i s tc a g oo fe - m a i la r c h i t e c t u r e 第一种情况是电子邮件的发送方和接收方都是在同一个系统上的用户( 或应用 程序) :它们连接在一个共享系统上。如图2 1 所示,管理员为每一个用户创建一 个邮箱,每个邮箱都是本地硬盘的一部分,是具有准许限制的特殊文件。这种情 况多用见于办公室、实验室或机房中的信息交流与共享。此时,a 用户与b 用户 之间需要两个邮件用户代理( m a i lu s e r a g e n t ,m u a ) 来创建或阅读邮件。 = 邮件 i 悬队列 黼”。 回戮 系统 ( 邮件服务器) 割 囹 因特网卜 、。 圆- - - 月m m 分t a 器 系统 ( 邮件服务器) 图2 2 电子邮件的体系结构第二种情况 f i g 2 2t h es e c o n dc a s eo fe - m a i la r c h i t e c t u r e b 第二种情况是电子邮件的发送方和接收方是在两个不同系统上的用户( 或应用 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 程序) ,如图2 2 所示。此时,报文需要通过因特网来发送。在该情况下,邮件服 务器使用一个队列存储等待发送的邮件,系统需要两个邮件用户代理( m u a ) 和两 个报文传送代理( m a i lt r a n s f e ra g e n t ,m t a ) ,一个作为m t a 客户端,一个作为m t a 服务器,像大多数因特网上的客户端服务器程序一样,服务器需要一直不停 的运行,等待客户端的连接请求。另一方面,当邮件存储队列中有报文要发送时, 系统就会触发m t a 客户端传送邮件。 l = 二l l l i j a 国擞 = 邮件 斟 圄 ;罴队列 嘲”。 画茹 幽圃- 服m 务t a 器 系统系统 ( 邮件服务器)( 邮件服务器) 图2 3 电子邮件的体系结构第三种情况 f i g 2 3t h en l 砷c a s eo fe - m a i la r c h i t e c t u r e b 第三种情况如图2 3 所示,用户b 直接连接到自己的邮件服务器上,但是a 用户则和他的系统是分开的。在实际情况下,a 用户或者是通过一个点对点的广 域网( 如拨号上网的调制解调器、d s l 或电缆调制解调器) ,或者是连接到一个组织 的局域网中,间接与他所使用的邮件服务器相接。此时,用户a 仍然需要先使用 m u a 来准备他的报文,接着调用m t a 客户端并与己方的m t a 服务器建立连接, 系统把所有收到的报文进行排队,然后再使用邮件服务器中的m t a 客户端将报文 发向b 用户那边,b 用户一边的邮件服务器收到报文后,存储在b 用户的邮箱中, 等待b 用户通过其m u a 读取这个报文。在这种情况下,整个系统包含两对m t a 客户端和服务器程序。 第四种情况是在实际中最为常见的。比照上一种情况,用户b 也是通过广域 网或局域网连接到他的邮件服务器上。在报文到达b 方的邮件服务器后,b 用户 为了读取它,需要在己方添加一组客户端服务器代理,称为报文读取代理( m a i l a c c e s sa g e n t ,m a a ) 。b 用户使用m a a 客户端发出读取报文命令,m a a 客户端 再向b 方的m a a 服务器发送报文传送请求,图2 4 给出了这种情况的示意图。需 第2 章系统的总体设计 要注意的是,m a a 与m t a 并不能相互混淆,m t a 客户端服务器程序是一个 推送程序:客户端将报文推送给服务器;而m a a 客户端服务器程序是一个拉 取程序:客户端要把报文从服务器中拉取过来。 目 a 国溅 国服m 务a a 器 篁邮件 g 寓 ;悬队列 隧叭川 。匾到- - - 客m 户t a 端国擞 系统系统 ( 邮件服务器)( 邮件服务器) 图2 4 电子邮件的体系结构第四种情况 f i g 2 4t h ef o u r t hc a s co fe - m a i la r c h i t e c t u r e m u a 目 b 本文设计的电子邮件收发客户端模块实现的就是m u a 、m t a 客户端和m a a 客户端的功能。尤其在第四种普遍情况下的电子邮件的体系结构中m u a 、m t a 和m a a 是不可或缺的。因此,在对电子邮件的应用实现中,邮件收发客户端模块 是重要的部件之一。 2 2 系统总体构成 预设计的简易电子邮件收发客户端模块是一个软件包,它应该包含邮件的发 送、接收和显示功能,还可以对用户邮箱进行处理。图2 5 给出了电子邮件收发客 户端模块的服务示意图。 ( 1 ) 发送邮件 图2 5 电子邮件客户端收发模块的服务 f i g 2 5t h es e r v i c eo fe - m a i ls e n d i n g r e c e i v i n gc l i e n t 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 要发送邮件,用户首先通过m u a 创建邮件。m u a 通过提供在屏幕上显示的 模板让用户填写,来帮助用户以规定的字段格式撰写电子邮件报文。邮件撰写完 成后,由m t a 客户端以规定的邮件传输协议发送出去。 ( 2 ) 接收邮件 接收电子邮件时,用户触发m u a 进行操作。m u a 通知m a a 发出规定的收 信指令。若用户有新的邮件,m u a 就通知用户,m a a 进行接收。 ( 3 ) 阅读邮件 若用户准备读取邮件,m u a 对邮件的编号、标志字段、发送方、主题字段等 进行处理,提供邮件的显示清单,其中每一行都包含邮件的信息概要。用户可以 选择这些邮件中的任何一个,并把它的内容显示在屏幕上。 ( 4 ) 管理邮箱 通常m u a 可以对用户的不同邮箱进行管理,为每个邮箱建立对应的账户。每 个账户中保留对应邮箱中所有已接收的电子邮件,直到它们被用户删除为止。 根据以上对简易电子邮件收发客户端模块功能的描述,软件的总体设计包块 两大部分:后台电子邮件传输协议的实现和前台可视用户界面的显示,如图2 6 所 示。其中后台电子邮件传输协议的实现部分提供m t a 客户端和m a a 客户端的功 能,而前台可视用户界面的显示对应着m u a 功能的实现。 后台电子邮件传输协议 前台用户界面 实现部分( m t a m 从) ( m u a ) 应用层实现模块 i 1 前后台 连接 传输层实现模块 模块 网络层 缓黝 图2 6 总体设计框图 f i g 2 6o v e r a l ld e s i g nd i a g r a m 第2 章系统的总体设计 ( 1 ) 后台电子邮件传输协议的实现 t c p i p 网络模型自下而上由4 层组成:网络接口层、网络层、传输层和应用 层【7 】。后台电子邮件传输协议实现时,按照t c p i p 四层网络模型自下而上逐级考 虑实现。设计重点在传输层模块实现和应用层模块实现上。 网络接口层也叫数据链路层,通常包括操作系统中的设备驱动程序和计算机中 对应的网络接口卡,它们一起处理与传输媒介的物理接口细节。体现在设计初期 对操作系统的选用和基本网络环境的搭建。 网络层也叫互联网层,处理路由选择等分组在网络中的活动。设计中虽然涉及 到网际协议( i p ) 的相关概念,但是由于上层计划使用传输控制协议( t c p ) ,其特有 的传输控制特性使得对于m 中的最大传送单元( m t u ) 等参数设置没有特殊要求, 因此在设计中对该层可以不必仔细考虑。 传输层主要功能是为两台主机上的应用程序提供端到端的通信。在t c p i p 协 议组件中,有两个互不相同的传输协议:传输控制协议( t c p ) 和用户数据报协议 ( u d p ) 。电子邮件的传输使用t c p 进行,由于其已经提供了数据传输的高可靠性, 应用层的编程不用再考虑这一问题。 应用层负责处理特定的应用程序。t c p i p 提供了大量的应用程序,设计中主 要使用了s m t p ( e s m t p ) 、p o p 3 、m i m e 、d n s 解析协议等,以完成对邮件的接 收和发送功能。 ( 2 ) 前台用户界面的显示 前台用户界面显示模块由界面编程和前后台连接两个模块组成。 界面显示模块提供友好的图形用户界面( g u t ) ,允许用户使用键盘和鼠标与系 统进行交互。本文使用q t 软件设计,模仿f o x m a i l 软件界面,邮箱账户列表、邮 件列表和邮件内容都在主界面中显示,撰写邮件和创建邮箱功能设计为弹出式对 话框操作。 前后台连接模块是前后台消息通信的接口,主要完成界面显示数据与后台邮 件操作信息的统一,及时完成对信件的存储或显示界面的更新。还要完成对现有 邮箱帐户信息的管理和磁盘存储,以方便再次访问本设计模块时的数据调用。 整个设计采用c 与c h 混合编程的方法,显示界面采用c 卜 编写,使用现有 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 a p i 函数简化编程,其余后台程序多使用c 函数编写,设计中侧重对报文的收发 处理、编解码的实现。 第3 章后台电子邮件传输协议的实现 第3 章后台电子邮件传输协议的实现 3 1 操作系统的选用 l i n u x 是当今发展最为迅速并引起最多关注的操作系统之一。作为一种自由软 件,任何人都可以从网上取得它的源代码并按照自己的要求进行修改。l i n u x 支持 广大的硬件平台,它的装机量的增长率超过别的操作系统,而且许多著名的软件 公司、计算机公司都宣布生产和l i n u x 靠拢的产品。l i n u x 操作系统在短短几年内 得到了迅速的发展,这与l i n u x 的良好特性是分不开的,l i n u x 包含了u n i x 的全 部功能和特性。具体而言包括如下几个方面【8 】: ( 1 ) 开放性 开放性是指系统遵循开放系统互连( o s i ) 国际标准。凡遵循该标准所开发的软 件和硬件,都可以彼此兼容,并方便的实现互联。 ( 2 ) 多用户 多用户是指系统资源可以被不同的用户各自拥有使用,即每个用户对自己的 资源:如文件、设备,有特定的权限,互不影响。 ( 3 ) 多任务 多任务是现代计算机的最重要的一个特点。它是指计算机在同一时间内可以 执行多个程序,并且程序之间不互相妨碍。l i n u x 采用抢占调度多任务的方式,即 每个程序都一直运行到操作系统抢占c p u 让其它程序运行为止。这使得用户可以 充分的利用计算机资源。 ( 4 ) 丰富的网络功能 l i n u x 在通信和网络功能方面优于其它的操作系统。因为l i n u x 中包含了紧密 的和内核连接在一起的连接网络的能力。其网络功能主要包括:大量支持i n t e r a c t 的软件、已有的简洁的文件传输和远程访问功能。 ( 5 ) 可靠的系统安全 l i n u x 采取了许多安全技术措旌,包括对读、写进行权限控制、带保护的子系 统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保 障。 ( 6 ) 良好的可移植性 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 l i n u x 是一种可移植的操作系统,能够从微机到大型计算机的任何环境和任何 平台上运行,可移植性为运行l i n u x 的不同计算机平台与其它任何机器进行准确而 有效的通信提供了手段。 基于以上特点,简易邮件客户端模块平台的确定正是利用了l i n u x 系统强大的 网络功能和优良的可移植性以及可靠的系统安全性,并为今后将程序向嵌入式等 小型化载体进行迁移打下坚实的基础。 l i n u x 不像w i n d o w s 操作系统,它不是一个由一家商业公司维护的软件,只有 一个包装。l i n u x 是可以任意包装自由配置的东西。任何一个人,一家公司都可以 按照自己的想法,比如加一点功能,如多种语言支持等,做一个l i n u x 发布套件出 来。这些l i n u x 发布套件虽然核心部分都一样,但是他们所带的各种软件,缺省 的配置都不一样。区别比如用一种l i n u x 发布套件硬件容易配置,各种软件也好 安装,用另外一种发布套件也许执行速度快,再一种也许支持中文比较好。所以 从一开始选择发布套件就必须非常小心,否则很容易重新返工1 9 】。 现在比较著名的l i n u x 发布套件有:r e d h a t 、d e b i a n 、s l a c k w a r el i n u x 等。 r e d h a t 是在国内学术界应用最为广泛的操作系统,于2 0 0 3 年发布最后的更新版本, 从此再无升级。相对近年来电子技术的日新月异,计算机配置的快速更新,r e d h a t 已经无法对现有的硬件配置进行良好的驱动( 如多核c p u 和u s b 接口鼠标等) ,逐 渐退出了历史舞台。 目前流行而可以免费下载使用的l i n u x 操作系统主要有f e d o r ac o r e 、u b u n t u 和o p e n s u s el i n u x 。f e d e r o ac o r e 操作系统实际是r e d h a t 的变相延伸,2 0 0 3 年9 月红帽公司( r e dh a t ) 转而投资于收费的r e d h a t 企业版( e n t e r p r i s e ) 的升级和实验新 技术的f e d e r o a 项目,该项目将r e d h a t 与f e d o r a 工程合并,不断推出f e d o r ac o r e 操作系统的新版本。但这也造成了f e d o r a 的版本更新周期严重缩短,仅为6 个月, 且该操作系统对多媒体的支持也相对欠佳,安装相对复杂,因此在设计初期没有 选用。u b u n t u 基于d e b i a n 发行版创建,g n o m e 图形界面系统使安装近于傻瓜式, 但是系统更新周期也为6 个月,而且其缺省套件较少,不能满足进一步的开发要 求,u b u n t ul i n u x 还未建立成熟的商业模式,设计中也将该操作系统排除【9 1 。 o p e n s u s el i n u x 是以s l a c k w a r el i n u x 为基础构建的s u s el i n u x 的o s s ( 完全开 第3 章后台电子邮件传输协议的实现 源码) 版【l o 】,系统更新周期为1 年多,全中文化的图形安装界面使安装过程十分简 便,可选的k d e 、g n o m e 和无图形化桌面环境方便各种用户的使用需求。该系 统还可以对可识别硬件进行自动加载,如移动硬盘、u 盘、光驱等,省去了在传 统l i n u x 操作系统中必须通过命令行手动加载的烦恼。安装盘中已经收录了多种开 发组件,使用自带的y a s t 工具软件就可以进行简单的选择安装和管理,与w i n d o w s 下的控制面板类似,并可自动进行软件列表的自动联网更新,十分适于初学者使 用。在本设计中选择安装的是o p e n s u s el i n u x11 ,l 版本,桌面环境选择安装k d e 4 。 选择了操作系统以后,下面需要进行网络的配置。由于我校采用g s 网关计费 系统,暂不提供l i n u x 操作系统下的g s 客户端软件,在l i n u x 下编程时无法连接 校外网进行查询,这是十分不便的。因此设计时采用将虚拟工作站( v m w a r e w o r k s t a t i o n ) 安装在w i n d o w s 操作系统之下,工作站中虚拟安装l i n u x 系统的方法。 虚拟工作站是支持多操作系统并行运行在单个物理服务器上的一种系统,能够 提供更加有效的底层硬件使用。在工作站中安装的虚拟机,中央处理器芯片从系 统其它部分划分出一段存储区域,操作系统和应用程序运行在“保护模式”环境下。 如果在某虚拟机中出现程序冻结现象,这并不会影响运行在虚拟机外的程序操作 和操作系统的正常工作【l l 】。在本设计中,w i n d o w s 作为主机( h o s t ) 系统,l i n u x 作 为虚拟机系统,网络环境为通过校园网上网。将虚拟机的网络适配器( n e t w o r k a d a p t e r ) 设置为n a t 模式,与主机共享球地址。虚拟网络适配器v m n e t 8 桥接在 默认的n a t 服务上,在w i n d o w s 系统下打开v m n e t 8 上的网络共享功能,记录虚 拟工作站n a t 标签下的网关口地址,并在l i n u x 虚拟机中点击网络设置,将默认 网关的地址设置为记录的口地址。在l i n u x 下设置静态m 地址,其与网关地址应 在同一网段。d n s 域名服务器使用w i n d o w s 下的网络连接域名服务器即可。 3 2lir l l i x 套接字( s o c k e t ) 编程 电子邮件在传输层使用t c p 进行传输,使用t c p 传输就是建立一个连接。在 t c p 的传输中一个连接由两个端点组成,一个连接代表的是发送和接收两端应用 程序之间的一个通信。通常,一个连接使用公式( h o s t ,p o r t ) 表示,h o s t 是主机,p o r t 是端口。对于程序员而言所说的t c p 端口实际是数据端口的概念,这种端口其实 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 是软件端口应用程序。t c p 端口能被几个应用程序共享,可以理解为一个应 用程序可以为不同的连接提供服务。t c p i p 中将端口分为两部分:一部分是保留 端口即熟知端口,如t e l n e t 使用2 3 号端口。另一部分是自由端口,可以在通信之 前进行申请。l i n u x 中小于1 0 2 4 的所有端口是保留给系统使用的,普通的进程应 当使用大于1 0 2 4 且小于6 5 5 3 5 范围内的端口号。s m t p 协议使用2 5 号端口,p o p 3 协议使用1 1 0 号端e l i l 2 1 。 套接字( s o c k e t s ) 最早是作为b s d 规范提出来的,并已成为l i n u x 操作系统下 t c p i p 网络编程标准,是进行程序间通信( 口c ) 的一种方法。套接字是网络通信的 基本操作单元,它提供了不同主机间的进程双向通信的端点,这些进程在通信前 各自建立一个s o c k e t ,并通过对s o c k e t 的读写操作实现网络通信功能。l i n u x 提 供3 种类型的套接字:流式套接字、数据报套接字、原始报套接字。在本设计中 使用的是流式套接字【1 2 1 。 电子邮件收发使用的是客户端与服务器的通信模型。套接字编程均采用客户端 服务器的协作模式,即由客户进程向服务器进程发出请求,服务器进程执行被请 求的任务并将响应结果返回给客户进程。客户端进程与服务器进程交互的流程图 如图3 1 所示【1 2 1 。 ( 1 ) 服务器端程序的编写: 设计测试时使用的是并发式服务器,即每一个客户端的请求由服务器主进程 创建一个子进程来处理。首先调用s o c k e t 函数创建一个用于通信的套接字。然后 给已经创建的套接字绑定一个端口号。调用l i s t e n ( ) i 垂i 数使套接字成为一个监听套 接字。使用a c c e p t ( ) 等待客户端的连接。当检测到客户端的连接请求后,服务器当 前进程创建一个子进程用来处理客户端的输入和输出请求,而父进程则继续等待 其他客户端的接入请求。当子进程终止连接后,父进程负责收回予进程占用的资 源。 ( 2 ) 客户端程序的编写: 跟服务器程序一样,调用s o c k e t 函数创建一个用于通信的套接字,设置套接 字地址结构,使用服务器的p 地址和端口号。调用c o n n e c t 函数来建立与服务器 的连接。此时,可以调用读写函数进行数据的收发操作。操作完毕后,关闭该套 第3 章后台电子邮件传输协议的实现 接字,终止连接。 图3 1 客户端进程与服务器进程交互 f i g 3 1t h ei n t e r a c t i o no f c l i e n tp r o c e s sa n ds e r v e rp r o c e s s ( 3 ) 设计中使用的基本套接字函数如下1 1 3 1 : m ts o c k e t ( i n td o m a i n ,i n tt y p e ,i n tp r o t o c 0 1 ) j 蟊数用于创建一个套接字,d o m a i n 参 1 4 基于l i n u x 的简易电子邮件客户端收发模块的设计与实现 数为支持的协议族,t y p e 用来指明套接字的类型,p r o t o c l 指定在s o c k e t 上使用的 特定协议。设计中这三个参数设置为:a fi n e t ,s o c ks t r e a m ,0 。若套接字 创建成功,s o c k e t 分配给程序一个套接字编号,后面调用传输函数时,就可以把它 像文件指针一样引用。 i n tb i n d ( i n ts o c k f d s t r u c ts o c k a d d r * m y a d d r , i n ta d d r l e n ) 函数将创建的套接字绑 定到一定的端口号上。s o c k f d 为服务器进程创建的套接字,m ya d d r 是指向数据结 构s t r u c ts o c k a d d r 的指针,它保存本地套接字的地址( 即服务器的端口和口地址) 信息。a d d l e n 设置为s i z e o f f s t r u c ts o c k a d d r ) ,即套接字地址的长度。 i n tl i s t e n ( i n ts o c k f d ,i n tb a c k l o g ) 数将一个套接字转换为被动侦听套接字 ( 1 i s t e n i n gs o c k e t ) ,并且在套接字指定的端口上开始侦听。参数b a c k l o g 指定在请求 队列中允许的最大请求数。进入的连接请求将在队列中等待a c c e p t 函数( 参考下文) 调用接收连接。 i n ta c c e p t ( i n ts o c k f d , s t r u c ts o c k a d d r * a d d r , i n t * a d d r l e n ) 函数从侦听套接字的连 接队列中接收一个连接。参数a d d r 是一个指向套接字地址结构的指针变量,该变 量用来存放提出连接请求服务的客户端进程的地址信息。a d d r l e n 为一个指向值为 s i z e o f 【s t r u c ts o c k a d d r ) 的整型指针变量。在设计过程中服务器进程仅用于测试使用, 并不需要获知连接请求方的地址信息,因此将参数a d d r 和a d d f l e n 都设置为n u l l 。 i n tc o n n e c t ( i n ts o c k f d ,s t r u c ts o c k a d d r * s e r v _ a d d r , i n ta d d r l e n ) 函数用来与远端服 务器建立一个t c p 连接请求。参数s o c k f d 是由客户端进程创建的套接字,s o c k a d d r 由于指定远程服务器的i p 地址和端口号。a d d d e n 是这个套接字地址的长度,通常 设置为s i z e o f f s t r u c ts o c k a

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论