1、 北京邮电大学毕业设Linux系统邮件客户端开发摘 要在日常的生活中,书信往来是我们日常生活中不可缺少的一个环节。随着Internet的普及,传统信件的Internet版本电子邮件已经逐渐步入了我们的生活与工作。但是,目前大多数电子邮件客户端收发软件都功能多样,实现复杂,也或多或少的存在一些缺陷与兼容性等问题。这样的程序在嵌入式等小型化载体上运行十分不便。并且,网络上流行的自制电子邮件客户端收发模块也多是基于Windows操作系统下的集成开发环境编写,很难直接应用到Linux系统中。本文对于Linux系统设计一种简易电子邮件收发客户端。本文首先研究了邮件客户端在Linux中的应用。随后,讲解了
2、与电子邮件相关的各项协议,包括:与发送邮件相关的简单邮件传输协议SMTP(ESMTP),与接收邮件相关的邮局协议POP3,以及对它们进行补充的通用因特网扩充协议MIME。重点编写并完成了对SMTP和POP3协议的相关邮件处理和报文解析。设计中使用了QT C+编程技术,完成了用户图形界面编写与显示。查询了Linux相关磁盘文件操作函数要求,通过硬盘文件进行前后台程序的消息传递,将电子邮件客户端收发模块最终整合起来。本文最后运行简易电子邮件客户端收发模块,并对其进行了多项测试,完成了电子邮件的收发功能,可以实现在网络中的邮件传输通信。关键词:电子邮件客户端;Linux;SMTP; POP3; Qt
3、iLinux system mail client developmentAbstractIn daily life, the correspondence is an indispensable link in our daily life. With the popularity of Internet, the Internet version of the traditional letters, E-mail has gradually stepped into our life and work. But, at present most of the send and recei
4、ve E-mail client software functional diversity, complex, also there are some more or less defects and compatibility and so on. Such programs run on smaller machine is very inconvenient. Popular homemade email client and network transceiver module is also based on the integrated development environme
5、nt to write under the Windows operating system, it is difficult to directly apply to the Linux system. This paper for Linux system design a simple and easy to send and receive E-mail client.This paper studied the mail client application in Linux. Then, explained the E-mail related agreements, includ
6、ing: the simple mail transfer protocol associated with email SMTP (ESMTP), post office protocol related to receive email POP3, and to supplement their general Internet expand agreement MIME. Focus on writing and completed the SMTP and POP3 protocols of the message processing and message parsing.Used
7、 in the design of the QT c + + programming technology, completed the user to compose and display a graphical interface. With the attention to requirement of Linux document operation on disk,the client module is assembled via file communication between Daemon and foreground program.This article final
8、ly run simple email client transceiver module, and have done many tests, completed the email to send and receive function, can realize mail transfer in network communication.Key Words: E-mail client;Linux;SMTP;POP3;Qtii目 录摘 要iAbstractii1 绪论11.1 电子邮件收发软件的历史与现状11.1.1 电子邮件收发软件的历史11.1.2 电子邮件收发软件的现状21.2
9、电子邮件简介21.2.1 电子邮件原理21.2.2 电子邮件工作过程21.2.3 电子邮件地址格式31.2.4 电子邮件特点41.2.5 电子邮件系统41.3 本文的主要研究内容与组织结构51.3.1 本文的主要研究内容51.3.1 本文的组织结构52 电子邮件客户端可行性分析62.1 研究课题的意义62.2 可行性报告62.2.1 编写目地62.2.2 背景62.2.3 需求72.2.4 目标72.2.5 开发语言与环境的选择72.2.6 条件与限制82.2.7 可行性结论83 系统的总体设计93.1 系统总体构成93.2 发送邮件93.3 后台电子邮件传输协议的实现103.4 前台用户界面
10、的显示114 后台电子邮件传输协议的实现124.1 操作系统的选用124.2 Linux套接字(Socket)编程134.2.1 安全套阶层协议简介134.2.2 SSL协议环境搭建144.3 网络应用层编程164.3.1 邮件的发送处理164.3.2 邮件的接收处理184.3.3 报文的收发处理194.3.4 编解码的处理224.3.5 主机I P地址和时间的获取245 前台用户显示界面的实现255.1 Qt界面显示模块的实现255.1.1 Qt对象间的通信255.1.2 Qt界面设计265.2 前后台连接模块的实现295.2.1 QLineEdit组件后台函数295.2.2 QPushBu
11、tton组件后台函数325.2.3 其他组件后台函数336 设计模块的测试与结果346.1 MIME协议发送测试和结果346.2 SSL协议加密后端口测试35结论36参考文献37致 谢38外文文献原文39外文文献翻译4821 绪论1.1 电子邮件收发软件的历史与现状1.1.1 电子邮件收发软件的历史电子邮件(标志:,也被大家昵称为“伊妹儿”),是种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。电子邮件可
12、以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。电子邮件的存在极大的方便了人与人之间的沟通与交流,促进了社会的发展。起源对于世界上第一封电子邮件(e-mail),根据资料,有两种说法:电子邮件第一种说法1969年10月世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息。据互联网周刊报道世界上的第一封电子邮件是由计算机科学家Leonard K.教授发给他的同事的一条简短消息(时间应该是1969年10月),这条消息只有两个字母:“LO”。Leonard K.教授因此被称为电子邮件之父。Leonard K.教授解
13、释,“当年我试图通过一台位于加利福尼亚大学的计算机和另一台位于旧金山附近斯坦福研究中心的计算机联系。我们所做的事情就是从一台计算机登录到另一台计算机。当时登录的办法就是键入L-O-G。于是我方键入L,然后问对方:收到L了吗?对方回答:收到了。然后依次键入O和G。还未收到对方收到G的确认回答,系统就瘫痪了。所以第一条网上信息就是LO,意思是你好!”第二种说法1971年,美国国防部资助的阿帕网正在如火如荼的进行当中,一个非常尖锐的问题出现了:参加此项目的科学家们在不同的地方做着不同的工作,但是却不能很好地分享各自的研究成果。原因很简单,因为大家使用的是不同的计算机,每个人的工作对别人来说都是没有用
14、的。他们迫切需要一种能够借助于网络在不同的计算机之间传送数据的方法。为阿帕网工作的麻省理工学院博士Ray Tomlinson把一个可以在不同的电脑网络之间进行拷贝的软件和一个仅用于单他使用这个软件在阿帕网上发送了第一封电子邮件,收件人是另外一台电脑上的自己。尽管这封邮件的内容连Tomlinson本人也记不起来了,但那一刻仍然具备了十足的历史意义:电子邮件诞生了。Tomlinson选择符号作为用户名与地址的间隔,因为这个符号比较生僻,不会出现在任何一个人的名字当中,而且这个符号的读音也有着在的含义。阿帕网的科学家们以极大的热情欢迎了这个石破天惊般的创新。他们天才的想法及研究成果,现在可以用最快的
15、-快得难以觉察-速度来与同事共享了。许多人回想起来,都觉得阿帕网所获得的巨大成功当中,电子邮件功不可没。(这个说法也是较为广传的。)虽然电子邮件是在70年代发明的,它却是在80年才得以兴起。70年代的沉寂主要是由于当时使用Arpanet网络的人太少,网络的速度也仅为目前56Kbps标准速度的二十分之一。受网络速度的限制,那时的用户只能发送些简短的信息,根本别想象现在那样发送大量照片;到80年代中期,个人电脑兴起,电子邮件开始在电脑迷以及大学生中广泛传播开来;到90年代中期,互联网浏览器诞生,全球网民人数激增,电子邮件被广为使用。1.1.2 电子邮件收发软件的现状时至今日,Google 与几个大
16、型的网络公司都有提供免费或者是付费的邮件服务器,其中,免费的电子邮件账号甚至已经提供高达数个 GB 的邮件储存量!对于一般用户来说真是非常够用了!而对于企业级的大客户,一般选择在IDC中搭建自己的邮件服务器,由专人负责日常的维护。而网络办公平台OA的兴起,也在逐步弱化电子邮件的地位。未来充满了未知,电子邮件的前景尚不明朗。1.2 电子邮件简介1.2.1 电子邮件原理1、电子邮件的发送和接收电子邮件在Internet上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容:当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在
17、地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。2、电子邮件地址的构成电子邮件地址的格式由三部分组成。第一部分“USER”代表用户信箱的帐号,对于同一个邮件接收服务器来说,这个帐号必须是唯一的;第二部分“”是分隔符;第三部分是用户信箱的邮件接收服务器域名,用以标志其所在的位置。1.2.2 电子邮件工作过程1.电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。电子邮件的传输是通
18、过电子邮件简单传输协议(Simple Mail Transfer Protocol,简称SMTP)这一系统软件来完成的,它是Internet下的一种电子邮件通信协议。2.电子邮件的基本原理是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的个电子信箱。并确定个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存档三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。3.
19、电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定帐号从信箱提取。电子邮件的工作过程遵循客户-服务器模式。每份电子邮件的发送都要涉及到发送方与接收方,发送方构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。邮件服务器识将消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。
20、接收者通过邮件客户程序连接到服务器后,就会看到服务器的通知,进而打开自己的电子信箱来查收邮件。通常Internet上的个人用户不能直接接收电子邮件,而是通过申请ISP主机的一个电子信箱,由ISP主机负责电子邮件的接收。一旦有用户的电子邮件到来,ISP主机就将邮件移到用户的电子信箱内,并通知用户有新邮件。因此,当发送一条电子邮件给一另一个客户时,电子邮件首先从用户计算机发送到ISP主机,再到Internet,再到收件人的ISP主机,最后到收件人的个人计算机。ISP主机起着“邮局”的作用,管理着众多用户的电子信箱。每个用户的电子信箱实际上就是用户所申请的帐号名。每个用户的电子邮件信箱都要占用ISP
21、主机一定容量的硬盘空间,由于这一空间是有限的,因此用户要定期查收和阅读电子信箱中的邮件,以便腾出空间来接收新的邮件。1.2.3 电子邮件地址格式domain_name为域名的标识符,也就是邮件必须要交付到的邮件目的地的域名。而somebody则是在该域名上的邮箱地址。后缀一般则代表了该域名的性质,与地区的代码。域名真正从技术上而言是一个邮件交换机,而不是一个机器名。常见的电子邮件协议有以下几种:SMTP(简单邮件传输协议)、POP3(邮局协议)、IMAP(Internet邮件访问协议)。这几种协议都是由TCP/IP协议族定义的。SMTP(Simple Mail Transfer Protoco
22、l):SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。POP(Post Office Protocol):版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。IMAP(Internet Message Access Protocol):版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IM
23、AP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。在大多数流行的电子邮件客户端程序里面都集成了对SSL连接的支持。除此之外,很多加密技术也应用到电子邮件的发送接受和阅读过程中。他们可以提供128位到2048位不等的加密强度。无论是单向加密还是对称密钥加密也都得到广泛支持。1.2.4 电子邮件特点简单来说,即(1)传播速度快(2)非常便捷(3)成本低廉(4)广泛的交流对象(5)信息多样化(6)比较安全1.2.5 电子邮件系统电子邮件服务由专门的服务器提供,Gmail, Hotmail,网易邮箱,新浪邮箱等邮箱服务也是建立在电子邮件服务器
24、基础上,但是大型邮件服务商的系统一般是自主开发或是对其他技术二次开发实现的。主要的电子邮件服务器主要有以下两大块:一、基于Unix/Linux平台的邮件系统1. Sendmail邮件系统(支持SMTP)和dovecot邮件系统(支持POP3)Sendmail可以说是邮件的鼻祖,迄今为止有50多年的历史。本当邮件是其中的一个典型代表2.基于Postfix/Qmail的邮件系统。Postfix/Qmail技术是在Sendmail技术上发展起来的,迄今为止历史不超过10年。 如网易邮箱的MTA 是电子处理软件。基于Postfix,yahoo的邮箱是基于Qmail系统。二. 基于 Windows平台的
25、邮件系统1.微软的Exchange邮件系统。2. IBM Lotus Domino 邮件系统。3. Scalix 邮件系统。4.Zimbra邮件系统。5. MDeamon 邮件系统。其中Exchange 邮件系统由于和Windows 整合,便于管理。是在企业中使用数量最多的邮件系统。 IBM Lotus Domino 则综合功能较强,大型企业使用较多,基于Postfix 的邮件系统则需要有较强的技术力量才能实现,但是性能可以达到非常高,而且安全性很好,同时软件是开源免费的。1.3 本文的主要研究内容与组织结构1.3.1 本文的主要研究内容本文对电子邮件及相关网络技术进行了初步的探索和研究。主要
26、研究内容包括以下几个方面:研究Linux下电子邮件客户端收发软件实现的各种方法。研究电子邮件相关协议和编解码技术。设计一种电子邮件客户端收发模块。1.3.1 本文的组织结构本设计基于Linux系统下的QT集成开发环境编写。组织结构如下:第二章对研究课题的意义及可行性进行分析,确定本软件以目前的条件可以完成。第三章对系统的总体设计进行描述。首先对电子邮件的体系结构进行了简单的介绍,明确了本设计模块在系统中的地位和作用。接着提出了系统的总体设计方案和依据。系统分两大部分进行设计:后台电子邮件传输协议的实现和前台可视用户界面的显示。第四章为后台电子邮件传输协议实现部分的设计。该部分分为网络接口层实现
27、模块、传输层实现模块和应用层实现模块三个层次进行设计。涉及操作系统的选用、Socket编程技术,以及SMTP、POP3和MIME等多种电子邮件传输协议的应用。第五章对前台可视用户界面的显示部分进行设计。该部分由界面显示模块和前后台的连接模块组成。其中,界面显示模块主要使用Qt编程技术,而前后台的连接模块主要涉及对磁盘文件的操作和管理。第六章对本设计中的各个子模块进行了详细测试,并给出了系统的总体运行结果。结论中对现有工作进行了总结,并对简易电子邮件客户端接收模块的实现提出了进行一步的构想。522 电子邮件客户端可行性分析2.1 研究课题的意义现有的电子邮件客户端都是基于台式机或笔记本平台安装的
28、,使用时需大量调用系统类库,资源消耗大,对于目前将程序向嵌入式等小型化载体进行迁移带来许多不便。在日常的工作中,找不到一款简单易用的,且支持企业内部邮箱的手机客户端。目前流行的嵌入式操作系统有Windows CE、IOS、Android和Linux等。前两者使用时会收取一定的费用,而后两者作为开源的操作系统,可以自由传播和修改。而Android是基于Linux内核的操作系统,所以选择Linux操作系统作为简易邮件客户端的运行环境具有很好的扩展性。现有的邮件客户端软件,多是基于Windows操作系统编写,无法直接应用于Linux运行环境,这使得模块设计时无法直接利用他人已经编写好的邮件收发程序。
29、 因此,自制一个运行在Linux操作系统下的简易电子邮件客户端收发模块成为必然。其次,由于是自主开发的电子邮件收发模块,具有很高的可扩展性,未来可以很方便的添加目前流行的电子邮件推送功能,实现邮件接收的自动提醒。或者在邮件安全性方面,也可以非常简单的实现仅基于客户端的自定义垃圾邮件的滤除工作,或特定邮件的选择接收功能。并且结合系统已安装的病毒查杀软件,还可以自动完成邮件接收后的嵌入式软件病毒扫描功能等,为加强电子邮件的安全性和可靠性提供参考意见。2.2 可行性报告2.2.1 编写目地通过本可行性研究报告得出此软件能否开发,可否供试用。2.2.2 背景所建议开发的软件系统的名称:Linux系统邮
30、件客户端开发。开发者:太原理工大学软件工程2010级1017班焦浩。用户:所有需要简易邮件发送客户端的用户。2.2.3 需求功能:实现电子邮件及附件的发送。性能要求:客户端界面简单实用,发送邮件快速便捷。2.2.4 目标主要开发目标:开发完成后,用此客户端可以实现电子邮件,通过SSL连接,smtp协议发字符串。通过发送服务器将邮件发送至邮件接收服务器,并确保用户能收到电子邮件。2.2.5 开发语言与环境的选择开发语言选择为C+,C+语言的有点如下:C+设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C+设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设
31、计、泛型程序设计)。C+设计无需复杂的程序设计环境。C+语言简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比 ,C语言具有可以直接访问物理地址的优点,与汇编语言相比又具有良好的可读性的可移植性。总得来说,C+语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C+比C更安全,C+的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C+的普及和推广。C+语言最有意义的方面是支持面向对象的特征。虽然与C的
32、兼容使得C+具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。出于保证语言的简洁和运行高效等方面的考虑,C+的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,Bjarne Stroustrup的C+语言的设计和演化(1994)里做了详尽的陈述。C+引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括Boost、Qt、MFC、OWL、wxWidgets、WTL就是使用的C+。开发坏境选择Qt 5.2.1。Qt是一个1991年由奇趣科技开发的跨平台C+图形用户界面应用程序开发框架。它既可以开发GUI程序,也可
33、用于开发非GUI程序,比如控制台工具和服务器。Qt是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器(Meta Object Compiler, moc))以及一些宏,易于扩展,允许组件编程。2014年4月,跨平台集成开发环境Qt Creator 3.1.0正式发布,实现了对于iOS的完全支持,新增WinRT、Beautifier等插件,废弃了无Python接口的GDB调试支持,集成了基于Clang的C/C+代码模块,并对Android支持做出了调整,至此实现了全面支持iOS、Android、WP。优良的跨平台特性:Qt支持下列操作系统: Microsoft Windows 95/98
34、, Microsoft Windows NT, Linux, Solaris, SunOS, HP-UX, Digital UNIX (OSF/1, Tru64), Irix, FreeBSD, BSD/OS, SCO, AIX, OS390,QNX 等等。面向对象Qt 的良好封装机制使得 Qt 的模块化程度非常高,可重用性较好,对于用户开发来说是非常 方便的。 Qt 提供了一种称为 signals/slots 的安全类型来替代 callback,这使得各个元件 之间的协同工作变得十分简单。丰富的 APIQt 包括多达 250 个以上的 C+ 类,还提供基于模板的 collections, s
35、erialization, file, I/O device, directory management, date/time 类。甚至还包括正则表达式的处理 功能。支持 2D/3D 图形渲染,支持 OpenGL。大量的开发文档。XML 支持。2.2.6 条件与限制硬件:必须有一台个人计算机开发环境:Qt 5.2.1可利用的信息与资源:网络信息以及一些出版的书刊。2.2.7 可行性结论由于进行开发研究的一些东西都是开源的,成本几乎没有。所以在技术、经济、操作上都具有高度的可行性,可以立即开始进行。3 系统的总体设计3.1 系统总体构成预设计的简单电子邮件客户端发送模块是一个软件包。它包含邮件服
36、务器的连接、用户名密码的验证、SSL协议加密、收件人地址、邮件的文本信息及附件信息。验证成功,发送成功验证邮件信息连接SMTP服务器电子邮件发送模块 图3-1 发送模块工作流程3.2 发送邮件要发送邮件,用户首先通过客户端界面创建邮件。图形化界面文件Qt中的.ui提供在屏幕上显示的模块让用户填写与选择选项,来帮助用户以规定的字段格式撰写电子邮件报文。邮件撰写完成后,由MTA客户端以规定的邮件传输协议发送出去。3.3 后台电子邮件传输协议的实现OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。 OSI的7层从上到下分别是 7 应
37、用层 6 表示层 5 会话层 4 传输层 3 网络层 2 数据链路层 1 物理层 其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。应用层(Application Layer)与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例:telnet,HTTP,FTP,NFS,SMTP等。表示层(Presentation Layer)这一层的主要功能
38、是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等。会话层(Session Layer)它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等。传输层(Transport Layer
39、)这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例:TCP,UDP,SPX。网络层(Network Layer)这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例:IP,IPX等。数据链路层(Data Link Layer)它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例:ATM,FDDI等。物理层(Physical
40、Layer)OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例:Rj45,802.3等。3.4 前台用户界面的显示前台用户界面显示模块由界面编程和前后台连接两个模块组成。界面显示模块(界面文件)提供友好的图形用户界面,允许用户使用键盘和鼠标与系统进行交互。本文使用Qt软件设计,撰写邮件功能设计为弹出式对话框操作。当用户发送成功成功时,会提示发送邮件成功。而如果无法完成邮件的正常发送,则提示连接出现错误。前后台连接模块是前后台消息通信的接口,主要完
41、成界面显示数据与后台邮件操作信息的统一,及时完成对信件的存储或显示界面的更新。4 后台电子邮件传输协议的实现4.1 操作系统的选用Linux是当今发展最为迅速并引起最多关注的操作系统之一。作为一种自由软件,任何人都可以从网上取得它的源代码并按照自己的要求进行修改。Linux支持广大的硬件平台,它的装机量的增长率超过别的操作系统,而且许多著名的软件公司、计算机公司都宣布生产和Linux靠拢的产品。Linux操作系统在短短几年内得到了迅速的发展,这与Linux的良好特性是分不开的,Linux包含了Unix的全部功能和特性。具体而言包括如下几个方面:(1)开放性开放性是指系统遵循开放系统互连(OSI
42、)国际标准。凡遵循该标准所开发的软件和硬件,都可以彼此兼容,并方便的实现互联。(2)多用户多用户是指系统资源可以被不同的用户各自拥有使用,即每个用户对自己的资源:如文件、设备,有特定的权限,互不影响。(3)多任务多任务是现代计算机的最重要的一个特点。它是指计算机在同一时间内可以执行多个程序,并且程序之间不互相妨碍。Linux采用抢占调度多任务的方式,即每个程序都一直运行到操作系统抢占CPU让其它程序运行为止。这使得用户可以充分的利用计算机资源。(4)丰富的网络功能Linux在通信和网络功能方面优于其它的操作系统。因为Linux中包含了紧密的和内核连接在一起的连接网络的能力。其网络功能主要包括:
43、大量支持Interact的软件、已有的简洁的文件传输和远程访问功能。(5)可靠的系统安全Linux采取了许多安全技术措旌,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。(6)良好的可移植性Linux是一种可移植的操作系统,能够从微机到大型计算机的任何环境和任何平台上运行,可移植性为运行Linux的不同计算机平台与其它任何机器进行准确而有效的通信提供了手段。基于以上特点,简易邮件客户端模块平台的确定正是利用了Linux系统强大的网络功能和优良的可移植性以及可靠的系统安全性,并为今后将程序向嵌入式等小型化载体进行迁移打下坚实的基础。
44、Linux不像Windows操作系统,它不是一个由一家商业公司维护的软件,只有一个包装。Linux是可以任意包装自由配置的东西。任何一个人,一家公司都可以按照自己的想法,比如加一点功能,如多种语言支持等,做一个Linux发布套件出来。这些Linux发布套件虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区别比如用一种Linux发布套件硬件容易配置,各种软件也好安装,用另外一种发布套件也许执行速度快,再一种也许支持中文比较好。所以从一开始选择发布套件就必须非常小心,否则很容易重新返工。 4.2 Linux套接字(Socket)编程4.2.1 安全套阶层协议简介电子邮件在传输层使用
45、TCP进行传输,使用TCP传输就是建立一个连接。在TCP的传输中一个连接由两个端点组成,一个连接代表的是发送和接收两端应用程序之间的一个通信。通常,一个连接使用公式(host,port)表示,host是主机,port是端口。对于程序员而言所说的TCP端口实际是数据端口的概念,这种端口其实是软件端口应用程序。TCP端口能被几个应用程序共享,可以理解为一个应用程序可以为不同的连接提供服务。TCP/IP中将端口分为两部分:一部分是保留端口即熟知端口,如Telnet使用23号端口。另一部分是自由端口,可以在通信之前进行申请。Linux中小于1024的所有端口是保留给系统使用的,普通的进程应当使用大于1
46、024且小于65535范围内的端口号。SMTP协议使用25号端口,POP3协议使用110号端。电子邮箱默认使用的TCP端口号如下:表4-1 电子邮箱默认端口协议作用纯文本或加密会话单纯文本会话单纯加密会话POP3收邮件110995IMAP收邮件143993SMTP收邮件25465(非标准)MSA收邮件587套接字(Sockets)最早是作为BSD规范提出来的,并已成为Linux操作系统下TCP/IP网络编程标准,是进行程序间通信的一种方法。套接字是网络通信的基本操作单元,它提供了不同主机间的进程双向通信的端点,这些进程在通信前各自建立一个Socket,并通过对Socket的读/写操作实现网络通
47、信功能。Linux提供3种类型的套接字:流式套接字、数据报套接字、原始报套接字。电子邮件收发使用的是客户端与服务器的通信模型。套接字编程均采用客户端/服务器的协作模式,即由客户进程向服务器进程发出请求,服务器进程执行被请求的任务并将响应结果返回给客户进程。本程序使用SSL安全套接层协议。SSL(Secure Sockets Layer 安全套接层),及其继任者传输层安全(Transport Layer Security,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层: SSL记录协议(SSL Record Protocol):它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。 SSL握手协议(SSL Handshake Protocol):它建立在SSL记录协议之上,