毕业论文-Linux系统邮件客户端开发_第1页
毕业论文-Linux系统邮件客户端开发_第2页
毕业论文-Linux系统邮件客户端开发_第3页
毕业论文-Linux系统邮件客户端开发_第4页
毕业论文-Linux系统邮件客户端开发_第5页
已阅读5页,还剩52页未读 继续免费阅读

下载本文档

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

文档简介

1、 太原理工大学毕业设计(论文)用纸 绪论1.1 电子邮件收发软件的历史与现状1.1.1 电子邮件收发软件的历史电子邮件(标志:HYPERLINK /view/26815.htm,也被大家昵称为“HYPERLINK /view/8814.htm伊妹儿”),是种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的HYPERLINK /view/2296101.htm电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。电子邮件可以是文字、图像、声音等多种形式。同时,

2、用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。电子邮件的存在极大的方便了人与人之间的沟通与交流,促进了社会的发展。起源对于世界上第一封电子邮件(e-mail),根据资料,有两种说法:电子邮件第一种说法1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简HYPERLINK /view/24045.htm短消息。据HYPERLINK /view/37506.htm互联网周刊报道世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简HYPERLINK /view/24045.htm短消息(时间应该是1969年10

3、月),这条消息只有两个字母:“LO”。Leonard K.教授因此被称为电子邮件之父。Leonard K.教授解释,“当年我试图通过一台位于HYPERLINK /view/269543.htm加利福尼亚大学的计算机和另一台位于HYPERLINK /view/7407.htm旧金山附近斯坦福研究中心的计算机联系。我们所做的事情就是从一台计算机登录到另一台计算机。当时登录的办法就是键入L-O-G。于是我方键入L,然后问对方:收到L了吗?对方回答:收到了。然后依次键入O和G。还未收到对方收到G的确认回答,系统就HYPERLINK /view/559937.htm瘫痪了。所以第一条网上信息就是LO,意

4、思是你好!”第二种说法1971年,HYPERLINK /view/2398.htm美国国防部资助的HYPERLINK /view/108095.htm阿帕网正在如火如荼的进行当中,一个非常尖锐的问题出现了:参加此项目的科学家们在不同的地方做着不同的工作,但是却不能很好地分享各自的研究成果。HYPERLINK /view/580366.htm原因很简单,因为大家使用的是不同的计算机,每个人的工作对别人来说都是没有用的。他们迫切需要一种能够借助于HYPERLINK /view/3487.htm网络在不同的计算机之间传送数据的方法。为阿帕网工作的HYPERLINK /view/1935.htm麻省理

5、工学院博士Ray Tomlinson把一个可以在不同的HYPERLINK /view/17634.htm电脑网络之间进行拷贝的软件和一个仅用于单他使用这个软件在阿帕网上发送了第一封电子邮件,收件人是另外一台电脑上的自己。尽管这封邮件的内容连Tomlinson本人也记不起来了,但那一刻仍然具备了十足的历史意义:电子邮件诞生了。Tomlinson选择HYPERLINK /view/115742.htm符号作为用户名与地址的间隔,因为这个符号比较生僻,不会出现在任何一个人的名字当中,而且这个符号的读音也有着在的含义。阿帕网的科学家们以极大的热情欢迎了这个石破天惊般的创新。他们天才的想法及研究成果,现

6、在可以用最快的-快得难以觉察-速度来与同事共享了。许多人回想起来,都觉得阿帕网所获得的巨大成功当中,电子邮件HYPERLINK /view/1316097.htm功不可没。(这个说法也是较为广传的。)虽然电子邮件是在70年代发明的,它却是在80年才得以兴起。70年代的沉寂主要是由于当时使用Arpanet网络的人太少,网络的速度也仅为目前56Kbps标准速度的二十分之一。受网络速度的限制,那时的用户只能发送些简短的信息,根本别想象现在那样发送大量照片;到80年代中期,个人电脑兴起,电子邮件开始在电脑迷以及大学生中广泛传播开来;到90年代中期,互联网浏览器诞生,全球网民人数激增,电子邮件被广为使用

7、。1.1.2 电子邮件收发软件的现状时至今日,Google 与几个大型的网络公司都有提供免费或者是付费的邮件服务器,其中,免费的电子邮件账号甚至已经提供高达数个 GB 的邮件储存量!对于一般用户来说真是非常够用了!而对于企业级的大客户,一般选择在IDC中搭建自己的邮件服务器,由专人负责日常的维护。而网络办公平台OA的兴起,也在逐步弱化电子邮件的地位。未来充满了未知,电子邮件的前景尚不明朗。1.2 电子邮件简介1.2.1 电子邮件原理1、电子邮件的发送和接收电子邮件在Internet上发送和接收的原理可以很HYPERLINK /view/245411.htm形象地用我们日常生活中邮寄HYPERL

8、INK /view/667146.htm包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的HYPERLINK /view/172136.htm邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子邮件时,这封邮件是由邮件发送HYPERLINK /view/899.htm服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。2、电子邮件地址的构成HYPERLINK /view/126647.htm电子

9、邮件地址的格式由三部分组成。第一部分“HYPERLINK /view/1161303.htmUSER”代表用户信箱的帐号,对于同一个邮件接收HYPERLINK /view/899.htm服务器来说,这个帐号必须是唯一的;第二部分“”是HYPERLINK /view/1268377.htm分隔符;第三部分是HYPERLINK /view/200012.htm用户信箱的邮件接收服务器HYPERLINK /view/43.htm域名,用以标志其所在的位置。1.2.2 电子邮件工作过程1.HYPERLINK /view/2296101.htm电子邮件系统是一种新型的信息系统,是通信技术和HYPERLI

10、NK /view/62176.htm计算机技术结合的产物。电子邮件的传输是通过电子邮件简单HYPERLINK /view/441895.htm传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件HYPERLINK /view/185322.htm通信协议。2.电子邮件的基本原理是在通信网上设立“电子信箱系统”,它实际上是一个HYPERLINK /view/3314.htm计算机系统。系统的HYPERLINK /view/25278.htm硬件是一个高性能、大容量的计算机。HYPERLINK /view/4

11、480.htm硬盘作为信箱的存储介质,在硬盘上为用户分一定的HYPERLINK /view/1375172.htm存储空间作为用户的“信箱”,每位用户都有属于自己的个HYPERLINK /view/54008.htm电子信箱。并确定个用户名和用户可以自己随意修改的口令。HYPERLINK /view/1375172.htm存储空间包含存放所收信件、HYPERLINK /view/28525.htm编辑信件以及信件存档三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。3.电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过

12、键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定HYPERLINK /view/261440.htm帐号从信箱提取。电子邮件的工作过程遵循HYPERLINK /view/88584.htm客户-HYPERLINK /view/899.htm服务器模式。每份电子邮件的发送都要涉及到发送方与接收方,发送方构成客户端,而接收方构成服务器,服务器含有众多用户的HYPERLINK /view/54008.htm电子信箱。发送方通过邮件客户HYPERLINK /view/17674.htm程序,将编辑好的电子邮件向邮局

13、服务器(HYPERLINK /view/5450.htmSMTP服务器)发送。邮局服务器识别接收者的地址,并向管理该地址的HYPERLINK /view/54241.htm邮件服务器(HYPERLINK /view/21929.htmPOP3服务器)发送消息。HYPERLINK /view/54241.htm邮件服务器识将消息存放在接收者的HYPERLINK /view/54008.htm电子信箱内,并告知接收者有新邮件到来。接收者通过邮件客户HYPERLINK /view/5295513.htm程序连接到服务器后,就会看到服务器的通知,进而打开自己的HYPERLINK /view/54008

14、.htm电子信箱来查收邮件。通常Internet上的个人用户不能直接接收电子邮件,而是通过申请HYPERLINK /view/855.htmISPHYPERLINK /view/23880.htm主机的一个HYPERLINK /view/54008.htm电子信箱,由ISP主机负责电子邮件的接收。一旦有用户的电子邮件到来,ISPHYPERLINK /view/23880.htm主机就将邮件移到用户的HYPERLINK /view/54008.htm电子信箱内,并通知用户有新邮件。因此,当发送一条电子邮件给一另一个客户时,电子邮件首先从用户计算机发送到ISPHYPERLINK /view/238

15、80.htm主机,再到Internet,再到收件人的ISP主机,最后到收件人的HYPERLINK /view/920814.htm个人计算机。ISPHYPERLINK /view/23880.htm主机起着“HYPERLINK /view/172136.htm邮局”的作用,管理着众多用户的电子信箱。每个用户的HYPERLINK /view/54008.htm电子信箱实际上就是用户所申请的帐号名。每个用户的电子邮件信箱都要占用ISPHYPERLINK /view/23880.htm主机一定容量的硬盘空间,由于这一空间是有限的,因此用户要定期查收和阅读HYPERLINK /view/54008.h

16、tm电子信箱中的邮件,以便腾出空间来接收新的邮件。1.2.3 电子邮件地址格式domain_name为HYPERLINK /view/43.htm域名的HYPERLINK /view/390932.htm标识符,也就是邮件必须要交付到的邮件目的地的HYPERLINK /view/43.htm域名。而somebody则是在该HYPERLINK /view/43.htm域名上的邮箱地址。后缀一般则代表了该HYPERLINK /view/43.htm域名的性质,与地区的代码。HYPERLINK /view/43.htm域名真正从技术上而言是一个邮件HYPERLINK /view/1077.htm交换

17、机,而不是一个机器名。常见的电子邮件HYPERLINK /view/36190.htm协议有以下几种:HYPERLINK /view/5450.htmSMTP(HYPERLINK /view/576460.htm简单邮件传输协议)、HYPERLINK /view/5404.htmPOP3(HYPERLINK /view/544380.htm邮局协议)、HYPERLINK /view/17877.htmIMAP(Internet邮件访问协议)。这几种协议都是由HYPERLINK /view/7729.htmTCP/IP协议族定义的。HYPERLINK /view/5450.htmSMTP(Sim

18、ple Mail Transfer Protocol):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。HYPERLINK /view/33001.htmPOP(Post Office Protocol):版本为HYPERLINK /view/5404.htmPOP3,POP3是把邮件从HYPERLINK /view/8622.htm电子邮箱中传输到本地计算机的协议。HYPERLINK /view/17877.htmIMAP(Internet Message Access Protocol):版本为HYPERLINK /view/718489.htmIMAP4,是POP3的

19、一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标题摘要,从邮件HYPERLINK /view/930.htm客户端HYPERLINK /view/37.htm软件就可以对HYPERLINK /view/899.htm服务器上的邮件和HYPERLINK /view/386894.htm文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了HYPERLINK /view/1522.htm垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在HYPERLINK /view/129742

20、4.htm脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。在大多数流行的电子HYPERLINK /view/2318149.htm邮件客户端程序里面都集成了对HYPERLINK /view/16147.htmSSL连接的支持。除此之外,很多HYPERLINK /view/40927.htm加密技术也应用到电子邮件的发送接受和阅读过程中。他们可以提供128位到2048位不等的加密强度。无论是单向加密还是HYPERLINK /view/1145164.htm对称密钥加密也都得到广泛支持。1.2.4 电子邮件特点简单来说,即(1)传播速度快(2)非常便捷(3)

21、成本低廉(4)广泛的交流对象(5)信息多样化(6)比较安全1.2.5 电子邮件系统电子邮件服务由专门的服务器提供,Gmail, Hotmail,网易HYPERLINK /view/47477.htm邮箱,HYPERLINK /view/706628.htm新浪邮箱等邮箱服务也是建立在HYPERLINK /view/921572.htm电子邮件服务器基础上,但是大型邮件服务商的系统一般是自主开发或是对其他技术二次开发实现的。主要的HYPERLINK /view/576456.htm电子邮件服务器主要有以下两大块:一、基于Unix/Linux平台的邮件系统1. Sendmail邮件系统(支持SMT

22、P)和dovecot邮件系统(支持POP3)Sendmail可以说是邮件的鼻祖,迄今为止有50多年的历史。本当邮件是其中的一个典型代表2.基于Postfix/Qmail的邮件系统。Postfix/Qmail技术是在Sendmail技术上发展起来的,迄今为止历史不超过10年。 如网易邮箱的MTA 是电子处理软件。基于Postfix,yahoo的邮箱是基于Qmail系统。二. 基于 Windows平台的邮件系统1.HYPERLINK /view/2353.htm微软的ExchangeHYPERLINK /view/1677840.htm邮件系统。2. IBM Lotus Domino 邮件系统。3

23、. Scalix 邮件系统。4.HYPERLINK /view/1859400.htmZimbra邮件系统。5. MDeamon 邮件系统。其中Exchange 邮件系统由于和Windows 整合,便于管理。是在企业中使用数量最多的邮件系统。 IBM Lotus Domino 则综合功能较强,大型企业使用较多,基于Postfix 的邮件系统则需要有较强的技术力量才能实现,但是性能可以达到非常高,而且安全性很好,同时软件是开源免费的。1.3 本文的主要研究内容与组织结构1.3.1 本文的主要研究内容本文对电子邮件及相关网络技术进行了初步的探索和研究。主要研究内容包括以下几个方面:研究Linux下

24、电子邮件客户端收发软件实现的各种方法。研究电子邮件相关协议和编解码技术。设计一种电子邮件客户端收发模块。1.3.1 本文的组织结构本设计基于Linux系统下的QT集成开发环境编写。组织结构如下:第二章对研究课题的意义及可行性进行分析,确定本软件以目前的条件可以完成。第三章对系统的总体设计进行描述。首先对电子邮件的体系结构进行了简单的介绍,明确了本设计模块在系统中的地位和作用。接着提出了系统的总体设计方案和依据。系统分两大部分进行设计:后台电子邮件传输协议的实现和前台可视用户界面的显示。第四章为后台电子邮件传输协议实现部分的设计。该部分分为网络接口层实现模块、传输层实现模块和应用层实现模块三个层

25、次进行设计。涉及操作系统的选用、Socket编程技术,以及SMTP、POP3和MIME等多种电子邮件传输协议的应用。第五章对前台可视用户界面的显示部分进行设计。该部分由界面显示模块和前后台的连接模块组成。其中,界面显示模块主要使用Qt编程技术,而前后台的连接模块主要涉及对磁盘文件的操作和管理。第六章对本设计中的各个子模块进行了详细测试,并给出了系统的总体运行结果。结论中对现有工作进行了总结,并对简易电子邮件客户端接收模块的实现提出了进行一步的构想。2 电子邮件客户端可行性分析2.1 研究课题的意义现有的电子邮件客户端都是基于台式机或笔记本平台安装的,使用时需大量调用系统类库,资源消耗大,对于目

26、前将程序向嵌入式等小型化载体进行迁移带来许多不便。在日常的工作中,找不到一款简单易用的,且支持企业内部邮箱的手机客户端。目前流行的嵌入式操作系统有Windows CE、IOS、Android和Linux等。前两者使用时会收取一定的费用,而后两者作为开源的操作系统,可以自由传播和修改。而Android是基于Linux内核的操作系统,所以选择Linux操作系统作为简易邮件客户端的运行环境具有很好的扩展性。现有的邮件客户端软件,多是基于Windows操作系统编写,无法直接应用于Linux运行环境,这使得模块设计时无法直接利用他人已经编写好的邮件收发程序。 因此,自制一个运行在Linux操作系统下的简

27、易电子邮件客户端收发模块成为必然。其次,由于是自主开发的电子邮件收发模块,具有很高的可扩展性,未来可以很方便的添加目前流行的电子邮件推送功能,实现邮件接收的自动提醒。或者在邮件安全性方面,也可以非常简单的实现仅基于客户端的自定义垃圾邮件的滤除工作,或特定邮件的选择接收功能。并且结合系统已安装的病毒查杀软件,还可以自动完成邮件接收后的嵌入式软件病毒扫描功能等,为加强电子邮件的安全性和可靠性提供参考意见。2.2 可行性报告2.2.1 编写目地通过本可行性研究报告得出此软件能否开发,可否供试用。2.2.2 背景所建议开发的软件系统的名称:Linux系统邮件客户端开发。开发者:太原理工大学软件工程20

28、10级1017班焦浩。用户:所有需要简易邮件发送客户端的用户。2.2.3 需求功能:实现电子邮件及附件的发送。性能要求:客户端界面简单实用,发送邮件快速便捷。2.2.4 目标主要开发目标:开发完成后,用此客户端可以实现电子邮件,通过SSL连接,smtp协议发字符串。通过发送服务器将邮件发送至邮件接收服务器,并确保用户能收到电子邮件。2.2.5 开发语言与环境的选择开发语言选择为C+,C+语言的有点如下:C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C+设计直接的和广泛的支持多种HYPERLINK /view/431342.htm程序设计风格(程序化程序设计、资料抽象化、HYPE

29、RLINK /view/249254.htm面向对象程序设计、泛型程序设计)。C+设计无需复杂的程序设计环境。C+语言简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,C语言具有可以直接访问物理地址的优点,与汇编语言相比又具有良好的可读性的可移植性。总得来说,C+语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C+的普及和推

30、广。C+语言最有意义的方面是支持面向对象的特征。虽然与C的兼容使得C+具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,HYPERLINK /view/687922.htmBjarne Stroustrup的C+语言的设计和演化(1994)里做了详尽的陈述。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C+。开发坏境选择Qt 5.2

31、.1。Qt是一个1991年由奇趣科技开发的跨平台HYPERLINK /view/824.htmC+HYPERLINK /view/185360.htm图形用户界面HYPERLINK /view/330120.htm应用程序开发框架。它既可以开发HYPERLINK /view/25309.htmGUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。Qt是HYPERLINK /view/125370.htm面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。2014年4月,跨平台集成开发环境Qt

32、 Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C+代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。优良的跨平台特性:Qt支持下列操作系统: Microsoft Windows 95/98, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS3

33、90,QNX 等等。面向对象Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。丰富的 APIQt 包括多达 250 个以上的 C+ 类,还提供基于模板的 collections, serialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。支持 2D/3D 图形渲染,支持 OpenGL。大量的开发文档。XML

34、支持。2.2.6 条件与限制硬件:必须有一台个人计算机开发环境:Qt 5.2.1可利用的信息与资源:网络信息以及一些出版的书刊。2.2.7 可行性结论由于进行开发研究的一些东西都是开源的,成本几乎没有。所以在技术、经济、操作上都具有高度的可行性,可以立即开始进行。3 系统的总体设计3.1 系统总体构成预设计的简单电子邮件客户端发送模块是一个软件包。它包含邮件服务器的连接、用户名密码的验证、SSL协议加密、收件人地址、邮件的文本信息及附件信息。验证成功,发送成功验证邮件信息连接SMTP服务器电子邮件发送模块 图3- SEQ 图3- * ARABIC 1 发送模块工作流程验证成功,发送成功验证邮件

35、信息连接SMTP服务器电子邮件发送模块3.2 发送邮件要发送邮件,用户首先通过客户端界面创建邮件。图形化界面文件Qt中的.ui提供在屏幕上显示的模块让用户填写与选择选项,来帮助用户以规定的字段格式撰写电子邮件报文。邮件撰写完成后,由MTA客户端以规定的邮件传输协议发送出去。3.3 后台电子邮件传输协议的实现OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 HYPERLINK /view/239619.htm应用层 6 HYPERLINK /view/239615.htm表示层 5 会话层 4

36、HYPERLINK /view/239605.htm传输层 3 HYPERLINK /view/239600.htm网络层 2 HYPERLINK /view/239592.htm数据链路层 1 HYPERLINK /view/239585.htm物理层 其中高层,即7、6、5、4层定义了HYPERLINK /view/330120.htm应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的HYPERLINK /view/166248.htm数据流。应用层(Application Layer)与其它计算机进行通讯的一个应用,它是对应HYPERLINK /view/330120.h

37、tm应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,NFS,SMTP等。表示层(Presentation Layer)这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把HYPERLINK /view/300107.htm文本从发送方的HYPERLINK /view/51987.

38、htm字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的HYPERLINK /view/51987.htm字符集。示例:加密,ASCII等。会话层(Session Layer)它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。传输层(Transport Layer)这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一HYPERLINK /view/23880.htm主机

39、上对不同应用的HYPERLINK /view/166248.htm数据流的输入进行复用,还包括对收到的顺序不对的HYPERLINK /view/25880.htm数据包的重新排序功能。示例:TCP,UDP,SPX。网络层(Network Layer)这层对端到端的包传输进行定义,它定义了能够标识所有结点的HYPERLINK /view/893778.htm逻辑地址,还定义了HYPERLINK /view/18655.htm路由实现的方式和学习的方式。为了适应HYPERLINK /view/545115.htm最大传输单元长度小于包长度的HYPERLINK /view/305337.htm传输介

40、质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。数据链路层(Data Link Layer)它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。物理层(Physical Layer)OSI的物理层规范是有关HYPERLINK /view/305337.htm传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。3.4 前台用户界面的显示前台用户界面显示模块由界面编程和前后台连接两

41、个模块组成。界面显示模块(界面文件)提供友好的图形用户界面,允许用户使用键盘和鼠标与系统进行交互。本文使用Qt软件设计,撰写邮件功能设计为弹出式对话框操作。当用户发送成功成功时,会提示发送邮件成功。而如果无法完成邮件的正常发送,则提示连接出现错误。前后台连接模块是前后台消息通信的接口,主要完成界面显示数据与后台邮件操作信息的统一,及时完成对信件的存储或显示界面的更新。4 后台电子邮件传输协议的实现4.1 操作系统的选用Linux是当今发展最为迅速并引起最多关注的操作系统之一。作为一种自由软件,任何人都可以从网上取得它的源代码并按照自己的要求进行修改。Linux支持广大的硬件平台,它的装机量的增

42、长率超过别的操作系统,而且许多著名的软件公司、计算机公司都宣布生产和Linux靠拢的产品。Linux操作系统在短短几年内得到了迅速的发展,这与Linux的良好特性是分不开的,Linux包含了Unix的全部功能和特性。具体而言包括如下几个方面:(1)开放性开放性是指系统遵循开放系统互连(OSI)国际标准。凡遵循该标准所开发的软件和硬件,都可以彼此兼容,并方便的实现互联。(2)多用户多用户是指系统资源可以被不同的用户各自拥有使用,即每个用户对自己的资源:如文件、设备,有特定的权限,互不影响。(3)多任务多任务是现代计算机的最重要的一个特点。它是指计算机在同一时间内可以执行多个程序,并且程序之间不互

43、相妨碍。Linux采用抢占调度多任务的方式,即每个程序都一直运行到操作系统抢占CPU让其它程序运行为止。这使得用户可以充分的利用计算机资源。(4)丰富的网络功能Linux在通信和网络功能方面优于其它的操作系统。因为Linux中包含了紧密的和内核连接在一起的连接网络的能力。其网络功能主要包括:大量支持Interact的软件、已有的简洁的文件传输和远程访问功能。(5)可靠的系统安全Linux采取了许多安全技术措旌,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。(6)良好的可移植性Linux是一种可移植的操作系统,能够从微机到大型计算

44、机的任何环境和任何平台上运行,可移植性为运行Linux的不同计算机平台与其它任何机器进行准确而有效的通信提供了手段。基于以上特点,简易邮件客户端模块平台的确定正是利用了Linux系统强大的网络功能和优良的可移植性以及可靠的系统安全性,并为今后将程序向嵌入式等小型化载体进行迁移打下坚实的基础。Linux不像Windows操作系统,它不是一个由一家商业公司维护的软件,只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司都可以按照自己的想法,比如加一点功能,如多种语言支持等,做一个Linux发布套件出来。这些Linux发布套件虽然核心部分都一样,但是他们所带的各种软件,缺省的配

45、置都不一样。区别比如用一种Linux发布套件硬件容易配置,各种软件也好安装,用另外一种发布套件也许执行速度快,再一种也许支持中文比较好。所以从一开始选择发布套件就必须非常小心,否则很容易重新返工。 4.2 Linux套接字(Socket)编程4.2.1 安全套阶层协议简介电子邮件在传输层使用TCP进行传输,使用TCP传输就是建立一个连接。在TCP的传输中一个连接由两个端点组成,一个连接代表的是发送和接收两端应用程序之间的一个通信。通常,一个连接使用公式(host,port)表示,host是主机,port是端口。对于程序员而言所说的TCP端口实际是数据端口的概念,这种端口其实是软件端口应用程序。

46、TCP端口能被几个应用程序共享,可以理解为一个应用程序可以为不同的连接提供服务。TCP/IP中将端口分为两部分:一部分是保留端口即熟知端口,如Telnet使用23号端口。另一部分是自由端口,可以在通信之前进行申请。Linux中小于1024的所有端口是保留给系统使用的,普通的进程应当使用大于1024且小于65535范围内的端口号。SMTP协议使用25号端口,POP3协议使用110号端。电子邮箱默认使用的TCP端口号如下:表4-1 电子邮箱默认端口协议作用纯文本或加密会话单纯文本会话单纯加密会话POP3收邮件110995IMAP收邮件143993SMTP收邮件25465(非标准)MSA收邮件587

47、套接字(Sockets)最早是作为BSD规范提出来的,并已成为Linux操作系统下TCP/IP网络编程标准,是进行程序间通信的一种方法。套接字是网络通信的基本操作单元,它提供了不同主机间的进程双向通信的端点,这些进程在通信前各自建立一个Socket,并通过对Socket的读/写操作实现网络通信功能。Linux提供3种类型的套接字:流式套接字、数据报套接字、原始报套接字。电子邮件收发使用的是客户端与服务器的通信模型。套接字编程均采用客户端/服务器的协作模式,即由客户进程向服务器进程发出请求,服务器进程执行被请求的任务并将响应结果返回给客户进程。本程序使用SSL安全套接层协议。SSL(Secure

48、 Sockets Layer HYPERLINK /view/525499.htm安全套接层),及其继任者HYPERLINK /view/831898.htm传输层安全(Transport Layer Security,TLS)是为HYPERLINK /view/538641.htm网络通信提供安全及HYPERLINK /view/702953.htm数据完整性的一种安全协议。TLS与SSL在HYPERLINK /view/239605.htm传输层对网络连接进行加密。SSL协议位于HYPERLINK /view/7649.htmTCP/IP协议与各种HYPERLINK /view/23961

49、9.htm应用层协议之间,为HYPERLINK /view/1474554.htm数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的HYPERLINK /view/441895.htm传输协议(如TCP)之上,为高层协议提供HYPERLINK /view/262940.htm数据封装、压缩、加密等基本功能的支持。 SSLHYPERLINK /view/1712962.htm握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行HYPERLINK /view

50、/1014826.htm身份认证、协商HYPERLINK /view/155969.htm加密算法、交换加密HYPERLINK /view/934.htm密钥等。SSL协议所提供的服务有:1)认证用户和服务器,确保数据发送到正确的HYPERLINK /view/285153.htm客户机和HYPERLINK /view/899.htm服务器;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。4.2.2 SSL协议环境搭建本程序使用openssl密码库。OpenSSL 是一个强大的安全套接字层密码库,囊括主要的HYPERLINK /view/8790.htm密

51、码算法、常用的HYPERLINK /view/934.htm密钥和证书封装管理功能及HYPERLINK /view/16147.htmSSL协议,并提供丰富的HYPERLINK /view/330120.htm应用程序供测试或其它目的使用。OpenSSL采用C语言作为开发语言,这使得OpenSSL具有优秀的HYPERLINK /view/469855.htm跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OpenSSL支持Linux、Windows、BSD、Mac、VMS等平台,这使得OpenSSL具有广泛的适用性。但习惯C语言总比使用C+重新写一个

52、跟OpenSSL相同功能的HYPERLINK /view/600107.htm软件包轻松不少。基本功能OpenSSL整个HYPERLINK /view/37.htm软件包大概可以分成三个主要的功能部分:SSL协议库、HYPERLINK /view/330120.htm应用程序以及HYPERLINK /view/8790.htm密码算法库。OpenSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OpenSSL提供的功能相当强大和全面,囊括了主要的HYPERLINK /view/8790.htm密码算法、常用的HYPERLINK /view/934.htm密钥

53、和证书封装管理功能以及SSL协议,并提供了丰富的HYPERLINK /view/330120.htm应用程序供测试或其它目的使用。辅助功能HYPERLINK /view/1160082.htmBIO机制是OpenSSL提供的一种高层IO接口,该接口封装了几乎所有类型的HYPERLINK /subview/1142749/5362454.htmIO接口,如内存访问、文件访问以及Socket等。这使得代码的重用性大幅度提高,OpenSSL提供API的复杂性也降低了很多。OpenSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个HYPERLINK /view

54、/934.htm密钥是否安全的重要前提。OpenSSL还提供了其它的一些辅助功能,如从口令生成HYPERLINK /view/934.htm密钥的API,证书签发和管理中的配置文件机制等等。如果你有足够的耐心,将会在深入使用OpenSSL的过程慢慢发现很多这样的小功能,让你不断有新的惊喜。功能OpenSSL的HYPERLINK /view/330120.htm应用程序已经成为了OpenSSL重要的一个组成部分,其重要性恐怕是OpenSSL的开发者开始没有想到的。如OpenCA,就是完全使用OpenSSL的应用程序实现的。OpenSSL的应用程序是基于OpenSSL的HYPERLINK /vie

55、w/8790.htm密码算法库和SSL协议库写成的,所以也是一些非常好的OpenSSL的API使用范例,读懂所有这些范例,你对OpenSSL的API使用了解就比较全面了,当然,这也是一项锻炼你的意志力的工作。OpenSSL的应用程序提供了相对全面的功能,在相当多的人看来,OpenSSL已经为自己做好了一切,不需要再做更多的开发工作了,所以,他们也把这些应用程序成为OpenSSL的指令。OpenSSL的应用程序主要包括HYPERLINK /view/934.htm密钥生成、证书管理、格式转换、HYPERLINK /view/696431.htm数据加密和签名、SSL测试以及其它辅助配置功能。机制

56、HYPERLINK /view/415282.htmEngine机制 Engine机制的出现是在OpenSSL的0.9.6版的事情,开始的时候是将普通版本跟支持Engine的版本分开的,到了OpenSSL的0.9.7版,Engine机制集成到了OpenSSL的内核中,成为了OpenSSL不可缺少的一部分。 Engine机制目的是为了使OpenSSL能够透明地使用第三方提供的HYPERLINK /view/602315.htm软件加密库或者HYPERLINK /view/602316.htm硬件加密设备进行加密。OpenSSL的Engine机制成功地达到了这个目的,这使得OpenSSL已经不仅仅

57、使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备OpenSSL协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。Engine机制的功能跟HYPERLINK /view/4821.htmWindows提供的CSP功能目标是基本相同的。包括:CryptoSwift、HYPERLINK /view/4511830.htmnCipher、Atalla、Nuron、UBSEC、Aep、SureWare以及IBM 4758 CCA的HYPERLINK /view/602316.htm硬件加密设备。当然,

58、所有上述Engine接口支持不一定很全面,比如,可能支持其中一两种HYPERLINK /view/1145160.htm公开密钥算法。Win32 OpenSSL安装项目是致力于提供一个简单的安装OpenSSL。很容易通过简单的设置和使用方便,有效的安装程序。不需要编译或跳过任何步骤,只需点击几次安装,让你做真正的工作。下载完成后无需编译,直接将bin目录下的一些.dll文件复制在Qt目录的bin目录下即可。图4- SEQ 图4- * ARABIC 2 OpenSSL 文件复制4.3 网络应用层编程为了交付邮件,电子邮件处理系统必须使用唯一的编址系统。因特网的邮件地址包括两个部分:本地部分和域名

59、,并且用符号分隔开。本地部分定义了一个特殊文件的名字,叫做用户邮箱。在用户邮箱中存储了所有收到的用户邮件,以便用户代理进行读取。地址的第二部分是域名,一个组织通常选择一个或多个主机来接收和发送电子邮件,这些主机通常叫做邮件服务器或邮件交换器(Mail Exchanger)。指派给每一个邮件交换器的域名或者来自DNS数据库,或者是一个逻辑名字(例如:该组织的名字)。4.3.1 邮件的发送处理(1)简单邮件传送协议(SMTP)SMTP(Simple Mail Transfer Protocol)即HYPERLINK /view/576460.htm简单邮件传输协议,它是一组用于由源地址到目的地址传

60、送HYPERLINK /view/172138.htm邮件的规则,由它来控制信件的中转方式。HYPERLINK /view/21931.htmSMTP协议属于HYPERLINK /view/7649.htmTCP/IP协议族,它帮助每台HYPERLINK /view/3314.htm计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的HYPERLINK /view/899.htm服务器,就可以把E-mail寄到收信人的服务器上了,整个过程只要几分钟。SMTPHYPERLINK /view/899.htm服务器则是遵循SMTP协议的发送HYPERLINK /view/54241.h

温馨提示

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

评论

0/150

提交评论