linux系统邮件客户端开发_第1页
linux系统邮件客户端开发_第2页
linux系统邮件客户端开发_第3页
linux系统邮件客户端开发_第4页
linux系统邮件客户端开发_第5页
已阅读5页,还剩53页未读 继续免费阅读

下载本文档

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

文档简介

LINUX系统邮件客户端开发摘要在日常的生活中,书信往来是我们日常生活中不可缺少的一个环节。随着INTERNET的普及,传统信件的INTERNET版本电子邮件已经逐渐步入了我们的生活与工作。但是,目前大多数电子邮件客户端收发软件都功能多样,实现复杂,也或多或少的存在一些缺陷与兼容性等问题。这样的程序在嵌入式等小型化载体上运行十分不便。并且,网络上流行的自制电子邮件客户端收发模块也多是基于WINDOWS操作系统下的集成开发环境编写,很难直接应用到LINUX系统中。本文对于LINUX系统设计一种简易电子邮件收发客户端。本文首先研究了邮件客户端在LINUX中的应用。随后,讲解了与电子邮件相关的各项协议,包括与发送邮件相关的简单邮件传输协议SMTP(ESMTP),与接收邮件相关的邮局协议POP3,以及对它们进行补充的通用因特网扩充协议MIME。重点编写并完成了对SMTP和POP3协议的相关邮件处理和报文解析。设计中使用了QTC编程技术,完成了用户图形界面编写与显示。查询了LINUX相关磁盘文件操作函数要求,通过硬盘文件进行前后台程序的消息传递,将电子邮件客户端收发模块最终整合起来。本文最后运行简易电子邮件客户端收发模块,并对其进行了多项测试,完成了电子邮件的收发功能,可以实现在网络中的邮件传输通信。关键词电子邮件客户端;LINUX;SMTPPOP3QTLINUXSYSTEMMAILCLIENTDEVELOPMENTABSTRACTINDAILYLIFE,THECORRESPONDENCEISANINDISPENSABLELINKINOURDAILYLIFEWITHTHEPOPULARITYOFINTERNET,THEINTERNETVERSIONOFTHETRADITIONALLETTERS,EMAILHASGRADUALLYSTEPPEDINTOOURLIFEANDWORKBUT,ATPRESENTMOSTOFTHESENDANDRECEIVEEMAILCLIENTSOFTWAREFUNCTIONALDIVERSITY,COMPLEX,ALSOTHEREARESOMEMOREORLESSDEFECTSANDCOMPATIBILITYANDSOONSUCHPROGRAMSRUNONSMALLERMACHINEISVERYINCONVENIENTPOPULARHOMEMADEEMAILCLIENTANDNETWORKTRANSCEIVERMODULEISALSOBASEDONTHEINTEGRATEDDEVELOPMENTENVIRONMENTTOWRITEUNDERTHEWINDOWSOPERATINGSYSTEM,ITISDIFFICULTTODIRECTLYAPPLYTOTHELINUXSYSTEMTHISPAPERFORLINUXSYSTEMDESIGNASIMPLEANDEASYTOSENDANDRECEIVEEMAILCLIENTTHISPAPERSTUDIEDTHEMAILCLIENTAPPLICATIONINLINUXTHEN,EXPLAINEDTHEEMAILRELATEDAGREEMENTS,INCLUDINGTHESIMPLEMAILTRANSFERPROTOCOLASSOCIATEDWITHEMAILSMTPESMTP,POSTOFFICEPROTOCOLRELATEDTORECEIVEEMAILPOP3,ANDTOSUPPLEMENTTHEIRGENERALINTERNETEXPANDAGREEMENTMIMEFOCUSONWRITINGANDCOMPLETEDTHESMTPANDPOP3PROTOCOLSOFTHEMESSAGEPROCESSINGANDMESSAGEPARSINGUSEDINTHEDESIGNOFTHEQTCPROGRAMMINGTECHNOLOGY,COMPLETEDTHEUSERTOCOMPOSEANDDISPLAYAGRAPHICALINTERFACEWITHTHEATTENTIONTOREQUIREMENTOFLINUXDOCUMENTOPERATIONONDISK,THECLIENTMODULEISASSEMBLEDVIAFILECOMMUNICATIONBETWEENDAEMONANDFOREGROUNDPROGRAMTHISARTICLEFINALLYRUNSIMPLEEMAILCLIENTTRANSCEIVERMODULE,ANDHAVEDONEMANYTESTS,COMPLETEDTHEEMAILTOSENDANDRECEIVEFUNCTION,CANREALIZEMAILTRANSFERINNETWORKCOMMUNICATIONKEYWORDSEMAILCLIENTLINUXSMTPPOP3QT目录摘要IABSTRACTII1绪论111电子邮件收发软件的历史与现状1111电子邮件收发软件的历史1112电子邮件收发软件的现状212电子邮件简介2121电子邮件原理2122电子邮件工作过程2123电子邮件地址格式3124电子邮件特点4125电子邮件系统413本文的主要研究内容与组织结构5131本文的主要研究内容5131本文的组织结构52电子邮件客户端可行性分析621研究课题的意义622可行性报告6221编写目地6222背景6223需求7224目标7225开发语言与环境的选择7226条件与限制8227可行性结论83系统的总体设计931系统总体构成932发送邮件933后台电子邮件传输协议的实现1034前台用户界面的显示114后台电子邮件传输协议的实现1241操作系统的选用1242LINUX套接字SOCKET编程13421安全套阶层协议简介13422SSL协议环境搭建1443网络应用层编程16431邮件的发送处理16432邮件的接收处理18433报文的收发处理19434编解码的处理22435主机IP地址和时间的获取245前台用户显示界面的实现2551QT界面显示模块的实现25511QT对象间的通信25512QT界面设计2652前后台连接模块的实现29521QLINEEDIT组件后台函数29522QPUSHBUTTON组件后台函数32523其他组件后台函数336设计模块的测试与结果3461MIME协议发送测试和结果3462SSL协议加密后端口测试35结论36参考文献37致谢38外文文献原文39外文文献翻译481绪论11电子邮件收发软件的历史与现状111电子邮件收发软件的历史电子邮件(标志,也被大家昵称为“伊妹儿”),是种用电子手段提供信息交换的通信方式,是互联网应用最广的服务。通过网络的电子邮件系统,用户可以以非常低廉的价格(不管发送到哪里,都只需负担网费)、非常快速的方式(几秒钟之内可以发送到世界上任何指定的目的地),与世界上任何一个角落的网络用户联系。电子邮件可以是文字、图像、声音等多种形式。同时,用户可以得到大量免费的新闻、专题邮件,并实现轻松的信息搜索。电子邮件的存在极大的方便了人与人之间的沟通与交流,促进了社会的发展。起源对于世界上第一封电子邮件EMAIL,根据资料,有两种说法电子邮件第一种说法1969年10月世界上的第一封电子邮件是由计算机科学家LEONARDK教授发给他的同事的一条简短消息。据互联网周刊报道世界上的第一封电子邮件是由计算机科学家LEONARDK教授发给他的同事的一条简短消息时间应该是1969年10月,这条消息只有两个字母“LO”。LEONARDK教授因此被称为电子邮件之父。LEONARDK教授解释,“当年我试图通过一台位于加利福尼亚大学的计算机和另一台位于旧金山附近斯坦福研究中心的计算机联系。我们所做的事情就是从一台计算机登录到另一台计算机。当时登录的办法就是键入LOG。于是我方键入L,然后问对方收到L了吗对方回答收到了。然后依次键入O和G。还未收到对方收到G的确认回答,系统就瘫痪了。所以第一条网上信息就是LO,意思是你好”第二种说法1971年,美国国防部资助的阿帕网正在如火如荼的进行当中,一个非常尖锐的问题出现了参加此项目的科学家们在不同的地方做着不同的工作,但是却不能很好地分享各自的研究成果。原因很简单,因为大家使用的是不同的计算机,每个人的工作对别人来说都是没有用的。他们迫切需要一种能够借助于网络在不同的计算机之间传送数据的方法。为阿帕网工作的麻省理工学院博士RAYTOMLINSON把一个可以在不同的电脑网络之间进行拷贝的软件和一个仅用于单他使用这个软件在阿帕网上发送了第一封电子邮件,收件人是另外一台电脑上的自己。尽管这封邮件的内容连TOMLINSON本人也记不起来了,但那一刻仍然具备了十足的历史意义电子邮件诞生了。TOMLINSON选择“符号作为用户名与地址的间隔,因为这个符号比较生僻,不会出现在任何一个人的名字当中,而且这个符号的读音也有着“在“的含义。阿帕网的科学家们以极大的热情欢迎了这个石破天惊般的创新。他们天才的想法及研究成果,现在可以用最快的快得难以觉察速度来与同事共享了。许多人回想起来,都觉得阿帕网所获得的巨大成功当中,电子邮件功不可没。(这个说法也是较为广传的。)虽然电子邮件是在70年代发明的,它却是在80年才得以兴起。70年代的沉寂主要是由于当时使用ARPANET网络的人太少,网络的速度也仅为目前56KBPS标准速度的二十分之一。受网络速度的限制,那时的用户只能发送些简短的信息,根本别想象现在那样发送大量照片;到80年代中期,个人电脑兴起,电子邮件开始在电脑迷以及大学生中广泛传播开来;到90年代中期,互联网浏览器诞生,全球网民人数激增,电子邮件被广为使用。112电子邮件收发软件的现状时至今日,GOOGLE与几个大型的网络公司都有提供免费或者是付费的邮件服务器,其中,免费的电子邮件账号甚至已经提供高达数个GB的邮件储存量对于一般用户来说真是非常够用了而对于企业级的大客户,一般选择在IDC中搭建自己的邮件服务器,由专人负责日常的维护。而网络办公平台OA的兴起,也在逐步弱化电子邮件的地位。未来充满了未知,电子邮件的前景尚不明朗。12电子邮件简介121电子邮件原理1、电子邮件的发送和接收电子邮件在INTERNET上发送和接收的原理可以很形象地用我们日常生活中邮寄包裹来形容当我们要寄一个包裹时,我们首先要找到任何一个有这项业务的邮局,在填写完收件人姓名、地址等等之后包裹就寄出而到了收件人所在地的邮局,那么对方取包裹的时候就必须去这个邮局才能取出。同样的,当我们发送电子邮件时,这封邮件是由邮件发送服务器(任何一个都可以)发出,并根据收信人的地址判断对方的邮件接收服务器而将这封信发送到该服务器上,收信人要收取邮件也只能访问这个服务器才能完成。2、电子邮件地址的构成电子邮件地址的格式由三部分组成。第一部分“USER”代表用户信箱的帐号,对于同一个邮件接收服务器来说,这个帐号必须是唯一的;第二部分“”是分隔符;第三部分是用户信箱的邮件接收服务器域名,用以标志其所在的位置。122电子邮件工作过程1电子邮件系统是一种新型的信息系统,是通信技术和计算机技术结合的产物。电子邮件的传输是通过电子邮件简单传输协议(SIMPLEMAILTRANSFERPROTOCOL,简称SMTP这一系统软件来完成的,它是INTERNET下的一种电子邮件通信协议。2电子邮件的基本原理是在通信网上设立“电子信箱系统”,它实际上是一个计算机系统。系统的硬件是一个高性能、大容量的计算机。硬盘作为信箱的存储介质,在硬盘上为用户分一定的存储空间作为用户的“信箱”,每位用户都有属于自己的个电子信箱。并确定个用户名和用户可以自己随意修改的口令。存储空间包含存放所收信件、编辑信件以及信件存档三部分空间,用户使用口令开启自己的信箱,并进行发信、读信、编辑、转发、存档等各种操作。系统功能主要由软件实现。3电子邮件的通信是在信箱之间进行的。用户首先开启自己的信箱,然后通过键入命令的方式将需要发送的邮件发到对方的信箱中。邮件在信箱之间进行传递和交换,也可以与另个邮件系统进行传递和交换。收方在取信时,使用特定帐号从信箱提取。电子邮件的工作过程遵循客户服务器模式。每份电子邮件的发送都要涉及到发送方与接收方,发送方构成客户端,而接收方构成服务器,服务器含有众多用户的电子信箱。发送方通过邮件客户程序,将编辑好的电子邮件向邮局服务器(SMTP服务器)发送。邮局服务器识别接收者的地址,并向管理该地址的邮件服务器(POP3服务器)发送消息。邮件服务器识将消息存放在接收者的电子信箱内,并告知接收者有新邮件到来。接收者通过邮件客户程序连接到服务器后,就会看到服务器的通知,进而打开自己的电子信箱来查收邮件。通常INTERNET上的个人用户不能直接接收电子邮件,而是通过申请ISP主机的一个电子信箱,由ISP主机负责电子邮件的接收。一旦有用户的电子邮件到来,ISP主机就将邮件移到用户的电子信箱内,并通知用户有新邮件。因此,当发送一条电子邮件给一另一个客户时,电子邮件首先从用户计算机发送到ISP主机,再到INTERNET,再到收件人的ISP主机,最后到收件人的个人计算机。ISP主机起着“邮局”的作用,管理着众多用户的电子信箱。每个用户的电子信箱实际上就是用户所申请的帐号名。每个用户的电子邮件信箱都要占用ISP主机一定容量的硬盘空间,由于这一空间是有限的,因此用户要定期查收和阅读电子信箱中的邮件,以便腾出空间来接收新的邮件。123电子邮件地址格式DOMAIN_NAME为域名的标识符,也就是邮件必须要交付到的邮件目的地的域名。而SOMEBODY则是在该域名上的邮箱地址。后缀一般则代表了该域名的性质,与地区的代码。域名真正从技术上而言是一个邮件交换机,而不是一个机器名。常见的电子邮件协议有以下几种SMTP(简单邮件传输协议)、POP3(邮局协议)、IMAP(INTERNET邮件访问协议)。这几种协议都是由TCP/IP协议族定义的。SMTP(SIMPLEMAILTRANSFERPROTOCOL)SMTP主要负责底层的邮件系统如何将邮件从一台机器传至另外一台机器。POP(POSTOFFICEPROTOCOL)版本为POP3,POP3是把邮件从电子邮箱中传输到本地计算机的协议。IMAP(INTERNETMESSAGEACCESSPROTOCOL)版本为IMAP4,是POP3的一种替代协议,提供了邮件检索和邮件处理的新功能,这样用户可以完全不必下载邮件正文就可以看到邮件的标题摘要,从邮件客户端软件就可以对服务器上的邮件和文件夹目录等进行操作。IMAP协议增强了电子邮件的灵活性,同时也减少了垃圾邮件对本地系统的直接危害,同时相对节省了用户察看电子邮件的时间。除此之外,IMAP协议可以记忆用户在脱机状态下对邮件的操作(例如移动邮件,删除邮件等)在下一次打开网络连接的时候会自动执行。在大多数流行的电子邮件客户端程序里面都集成了对SSL连接的支持。除此之外,很多加密技术也应用到电子邮件的发送接受和阅读过程中。他们可以提供128位到2048位不等的加密强度。无论是单向加密还是对称密钥加密也都得到广泛支持。124电子邮件特点简单来说,即1传播速度快2非常便捷3成本低廉4广泛的交流对象5信息多样化6比较安全125电子邮件系统电子邮件服务由专门的服务器提供,GMAIL,HOTMAIL,网易邮箱,新浪邮箱等邮箱服务也是建立在电子邮件服务器基础上,但是大型邮件服务商的系统一般是自主开发或是对其他技术二次开发实现的。主要的电子邮件服务器主要有以下两大块一、基于UNIX/LINUX平台的邮件系统1SENDMAIL邮件系统(支持SMTP)和DOVECOT邮件系统(支持POP3)SENDMAIL可以说是邮件的鼻祖,迄今为止有50多年的历史。本当邮件是其中的一个典型代表2基于POSTFIX/QMAIL的邮件系统。POSTFIX/QMAIL技术是在SENDMAIL技术上发展起来的,迄今为止历史不超过10年。如网易邮箱的MTA是电子处理软件。基于POSTFIX,YAHOO的邮箱是基于QMAIL系统。二基于WINDOWS平台的邮件系统1微软的EXCHANGE邮件系统。2IBMLOTUSDOMINO邮件系统。3SCALIX邮件系统。4ZIMBRA邮件系统。5MDEAMON邮件系统。其中EXCHANGE邮件系统由于和WINDOWS整合,便于管理。是在企业中使用数量最多的邮件系统。IBMLOTUSDOMINO则综合功能较强,大型企业使用较多,基于POSTFIX的邮件系统则需要有较强的技术力量才能实现,但是性能可以达到非常高,而且安全性很好,同时软件是开源免费的。13本文的主要研究内容与组织结构131本文的主要研究内容本文对电子邮件及相关网络技术进行了初步的探索和研究。主要研究内容包括以下几个方面研究LINUX下电子邮件客户端收发软件实现的各种方法。研究电子邮件相关协议和编解码技术。设计一种电子邮件客户端收发模块。131本文的组织结构本设计基于LINUX系统下的QT集成开发环境编写。组织结构如下第二章对研究课题的意义及可行性进行分析,确定本软件以目前的条件可以完成。第三章对系统的总体设计进行描述。首先对电子邮件的体系结构进行了简单的介绍,明确了本设计模块在系统中的地位和作用。接着提出了系统的总体设计方案和依据。系统分两大部分进行设计后台电子邮件传输协议的实现和前台可视用户界面的显示。第四章为后台电子邮件传输协议实现部分的设计。该部分分为网络接口层实现模块、传输层实现模块和应用层实现模块三个层次进行设计。涉及操作系统的选用、SOCKET编程技术,以及SMTP、POP3和MIME等多种电子邮件传输协议的应用。第五章对前台可视用户界面的显示部分进行设计。该部分由界面显示模块和前后台的连接模块组成。其中,界面显示模块主要使用QT编程技术,而前后台的连接模块主要涉及对磁盘文件的操作和管理。第六章对本设计中的各个子模块进行了详细测试,并给出了系统的总体运行结果。结论中对现有工作进行了总结,并对简易电子邮件客户端接收模块的实现提出了进行一步的构想。2电子邮件客户端可行性分析21研究课题的意义现有的电子邮件客户端都是基于台式机或笔记本平台安装的,使用时需大量调用系统类库,资源消耗大,对于目前将程序向嵌入式等小型化载体进行迁移带来许多不便。在日常的工作中,找不到一款简单易用的,且支持企业内部邮箱的手机客户端。目前流行的嵌入式操作系统有WINDOWSCE、IOS、ANDROID和LINUX等。前两者使用时会收取一定的费用,而后两者作为开源的操作系统,可以自由传播和修改。而ANDROID是基于LINUX内核的操作系统,所以选择LINUX操作系统作为简易邮件客户端的运行环境具有很好的扩展性。现有的邮件客户端软件,多是基于WINDOWS操作系统编写,无法直接应用于LINUX运行环境,这使得模块设计时无法直接利用他人已经编写好的邮件收发程序。因此,自制一个运行在LINUX操作系统下的简易电子邮件客户端收发模块成为必然。其次,由于是自主开发的电子邮件收发模块,具有很高的可扩展性,未来可以很方便的添加目前流行的电子邮件推送功能,实现邮件接收的自动提醒。或者在邮件安全性方面,也可以非常简单的实现仅基于客户端的自定义垃圾邮件的滤除工作,或特定邮件的选择接收功能。并且结合系统已安装的病毒查杀软件,还可以自动完成邮件接收后的嵌入式软件病毒扫描功能等,为加强电子邮件的安全性和可靠性提供参考意见。22可行性报告221编写目地通过本可行性研究报告得出此软件能否开发,可否供试用。222背景所建议开发的软件系统的名称LINUX系统邮件客户端开发。开发者太原理工大学软件工程2010级1017班焦浩。用户所有需要简易邮件发送客户端的用户。223需求功能实现电子邮件及附件的发送。性能要求客户端界面简单实用,发送邮件快速便捷。224目标主要开发目标开发完成后,用此客户端可以实现电子邮件,通过SSL连接,SMTP协议发字符串。通过发送服务器将邮件发送至邮件接收服务器,并确保用户能收到电子邮件。225开发语言与环境的选择开发语言选择为C,C语言的有点如下C设计成静态类型、和C同样高效且可移植的多用途程序设计语言。C设计直接的和广泛的支持多种程序设计风格(程序化程序设计、资料抽象化、面向对象程序设计、泛型程序设计)。C设计无需复杂的程序设计环境。C语言简洁灵活,运算符的数据结构丰富、具有结构化控制语句、程序执行效率高,而且同时具有高级语言与汇编语言的优点,与其它语言相比,C语言具有可以直接访问物理地址的优点,与汇编语言相比又具有良好的可读性的可移植性。总得来说,C语言的主要特点表现在两个方面,一是尽量兼容C,二是支持面向对象的方法。它操持了C的简洁、高效的接近汇编语言等特点,对C的类型系统进行了改革的扩充,因此C比C更安全,C的编译系统能检查出更多的类型错误。另外,由于C语言的广泛使用,因而极大的促进了C的普及和推广。C语言最有意义的方面是支持面向对象的特征。虽然与C的兼容使得C具有双重特点,但他在概念上完全与C不同,更具面向对象的特征。出于保证语言的简洁和运行高效等方面的考虑,C的很多特性都是以库(如STL)或其他的形式提供的,而没有直接添加到语言本身里。关于此类话题,BJARNESTROUSTRUP的C语言的设计和演化(1994)里做了详尽的陈述。C引入了面向对象的概念,使得开发人机交互类型的应用程序更为简单、快捷。很多优秀的程序框架包括BOOST、QT、MFC、OWL、WXWIDGETS、WTL就是使用的C。开发坏境选择QT521。QT是一个1991年由奇趣科技开发的跨平台C图形用户界面应用程序开发框架。它既可以开发GUI程序,也可用于开发非GUI程序,比如控制台工具和服务器。QT是面向对象的框架,使用特殊的代码生成扩展(称为元对象编译器METAOBJECTCOMPILER,MOC)以及一些宏,易于扩展,允许组件编程。2014年4月,跨平台集成开发环境QTCREATOR310正式发布,实现了对于IOS的完全支持,新增WINRT、BEAUTIFIER等插件,废弃了无PYTHON接口的GDB调试支持,集成了基于CLANG的C/C代码模块,并对ANDROID支持做出了调整,至此实现了全面支持IOS、ANDROID、WP。优良的跨平台特性QT支持下列操作系统MICROSOFTWINDOWS95/98,MICROSOFTWINDOWSNT,LINUX,SOLARIS,SUNOS,HPUX,DIGITALUNIXOSF/1,TRU64,IRIX,FREEBSD,BSD/OS,SCO,AIX,OS390,QNX等等。面向对象QT的良好封装机制使得QT的模块化程度非常高,可重用性较好,对于用户开发来说是非常方便的。QT提供了一种称为SIGNALS/SLOTS的安全类型来替代CALLBACK,这使得各个元件之间的协同工作变得十分简单。丰富的APIQT包括多达250个以上的C类,还提供基于模板的COLLECTIONS,SERIALIZATION,FILE,I/ODEVICE,DIRECTORYMANAGEMENT,DATE/TIME类。甚至还包括正则表达式的处理功能。支持2D/3D图形渲染,支持OPENGL。大量的开发文档。XML支持。226条件与限制硬件必须有一台个人计算机开发环境QT521可利用的信息与资源网络信息以及一些出版的书刊。227可行性结论由于进行开发研究的一些东西都是开源的,成本几乎没有。所以在技术、经济、操作上都具有高度的可行性,可以立即开始进行。3系统的总体设计31系统总体构成预设计的简单电子邮件客户端发送模块是一个软件包。它包含邮件服务器的连接、用户名密码的验证、SSL协议加密、收件人地址、邮件的文本信息及附件信息。图31发送模块工作流程32发送邮件要发送邮件,用户首先通过客户端界面创建邮件。图形化界面文件QT中的UI提供在屏幕上显示的模块让用户填写与选择选项,来帮助用户以规定的字段格式撰写电子邮件报文。邮件撰写完成后,由MTA客户端以规定的邮件传输协议发送出去。电子邮件发送模块连接SMTP服务器验证邮件信息验证成功,发送成功33后台电子邮件传输协议的实现OSI是一个开放性的通行系统互连参考模型,他是一个定义的非常好的协议规范。OSI模型有7层结构,每层都可以有几个子层。OSI的7层从上到下分别是7应用层6表示层5会话层4传输层3网络层2数据链路层1物理层其中高层,即7、6、5、4层定义了应用程序的功能,下面3层,即3、2、1层主要面向通过网络的端到端的数据流。应用层(APPLICATIONLAYER)与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。例如,一个没有通信功能的字处理程序就不能执行通信的代码,从事字处理工作的程序员也不关心OSI的第7层。但是,如果添加了一个传输文件的选项,那么字处理器的程序员就需要实现OSI的第7层。示例TELNET,HTTP,FTP,NFS,SMTP等。表示层(PRESENTATIONLAYER)这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例加密,ASCII等。会话层(SESSIONLAYER)它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例RPC,SQL等。传输层(TRANSPORTLAYER)这层的功能包括是否选择差错恢复协议还是无差错恢复协议,及在同一主机上对不同应用的数据流的输入进行复用,还包括对收到的顺序不对的数据包的重新排序功能。示例TCP,UDP,SPX。网络层(NETWORKLAYER)这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。示例IP,IPX等。数据链路层(DATALINKLAYER)它定义了在单个链路上如何传输数据。这些协议与被讨论的各种介质有关。示例ATM,FDDI等。物理层(PHYSICALLAYER)OSI的物理层规范是有关传输介质的特性标准,这些规范通常也参考了其他组织制定的标准。连接头、帧、帧的使用、电流、编码及光调制等都属于各种物理层规范中的内容。物理层常用多个规范完成对所有细节的定义。示例RJ45,8023等。34前台用户界面的显示前台用户界面显示模块由界面编程和前后台连接两个模块组成。界面显示模块界面文件)提供友好的图形用户界面,允许用户使用键盘和鼠标与系统进行交互。本文使用QT软件设计,撰写邮件功能设计为弹出式对话框操作。当用户发送成功成功时,会提示发送邮件成功。而如果无法完成邮件的正常发送,则提示连接出现错误。前后台连接模块是前后台消息通信的接口,主要完成界面显示数据与后台邮件操作信息的统一,及时完成对信件的存储或显示界面的更新。4后台电子邮件传输协议的实现41操作系统的选用LINUX是当今发展最为迅速并引起最多关注的操作系统之一。作为一种自由软件,任何人都可以从网上取得它的源代码并按照自己的要求进行修改。LINUX支持广大的硬件平台,它的装机量的增长率超过别的操作系统,而且许多著名的软件公司、计算机公司都宣布生产和LINUX靠拢的产品。LINUX操作系统在短短几年内得到了迅速的发展,这与LINUX的良好特性是分不开的,LINUX包含了UNIX的全部功能和特性。具体而言包括如下几个方面1开放性开放性是指系统遵循开放系统互连OSI国际标准。凡遵循该标准所开发的软件和硬件,都可以彼此兼容,并方便的实现互联。2多用户多用户是指系统资源可以被不同的用户各自拥有使用,即每个用户对自己的资源如文件、设备,有特定的权限,互不影响。3多任务多任务是现代计算机的最重要的一个特点。它是指计算机在同一时间内可以执行多个程序,并且程序之间不互相妨碍。LINUX采用抢占调度多任务的方式,即每个程序都一直运行到操作系统抢占CPU让其它程序运行为止。这使得用户可以充分的利用计算机资源。4丰富的网络功能LINUX在通信和网络功能方面优于其它的操作系统。因为LINUX中包含了紧密的和内核连接在一起的连接网络的能力。其网络功能主要包括大量支持INTERACT的软件、已有的简洁的文件传输和远程访问功能。5可靠的系统安全LINUX采取了许多安全技术措旌,包括对读、写进行权限控制、带保护的子系统、审计跟踪、核心授权等,这为网络多用户环境中的用户提供了必要的安全保障。6良好的可移植性LINUX是一种可移植的操作系统,能够从微机到大型计算机的任何环境和任何平台上运行,可移植性为运行LINUX的不同计算机平台与其它任何机器进行准确而有效的通信提供了手段。基于以上特点,简易邮件客户端模块平台的确定正是利用了LINUX系统强大的网络功能和优良的可移植性以及可靠的系统安全性,并为今后将程序向嵌入式等小型化载体进行迁移打下坚实的基础。LINUX不像WINDOWS操作系统,它不是一个由一家商业公司维护的软件,只有一个包装。LINUX是可以任意包装自由配置的东西。任何一个人,一家公司都可以按照自己的想法,比如加一点功能,如多种语言支持等,做一个LINUX发布套件出来。这些LINUX发布套件虽然核心部分都一样,但是他们所带的各种软件,缺省的配置都不一样。区别比如用一种LINUX发布套件硬件容易配置,各种软件也好安装,用另外一种发布套件也许执行速度快,再一种也许支持中文比较好。所以从一开始选择发布套件就必须非常小心,否则很容易重新返工。42LINUX套接字SOCKET编程421安全套阶层协议简介电子邮件在传输层使用TCP进行传输,使用TCP传输就是建立一个连接。在TCP的传输中一个连接由两个端点组成,一个连接代表的是发送和接收两端应用程序之间的一个通信。通常,一个连接使用公式HOST,PORT表示,HOST是主机,PORT是端口。对于程序员而言所说的TCP端口实际是数据端口的概念,这种端口其实是软件端口应用程序。TCP端口能被几个应用程序共享,可以理解为一个应用程序可以为不同的连接提供服务。TCP/IP中将端口分为两部分一部分是保留端口即熟知端口,如TELNET使用23号端口。另一部分是自由端口,可以在通信之前进行申请。LINUX中小于1024的所有端口是保留给系统使用的,普通的进程应当使用大于1024且小于65535范围内的端口号。SMTP协议使用25号端口,POP3协议使用110号端。电子邮箱默认使用的TCP端口号如下表41电子邮箱默认端口协议作用纯文本或加密会话单纯文本会话单纯加密会话POP3收邮件110995IMAP收邮件143993SMTP收邮件25465(非标准)MSA收邮件587套接字SOCKETS最早是作为BSD规范提出来的,并已成为LINUX操作系统下TCP/IP网络编程标准,是进行程序间通信的一种方法。套接字是网络通信的基本操作单元,它提供了不同主机间的进程双向通信的端点,这些进程在通信前各自建立一个SOCKET,并通过对SOCKET的读/写操作实现网络通信功能。LINUX提供3种类型的套接字流式套接字、数据报套接字、原始报套接字。电子邮件收发使用的是客户端与服务器的通信模型。套接字编程均采用客户端/服务器的协作模式,即由客户进程向服务器进程发出请求,服务器进程执行被请求的任务并将响应结果返回给客户进程。本程序使用SSL安全套接层协议。SSLSECURESOCKETSLAYER安全套接层,及其继任者传输层安全(TRANSPORTLAYERSECURITY,TLS)是为网络通信提供安全及数据完整性的一种安全协议。TLS与SSL在传输层对网络连接进行加密。SSL协议位于TCP/IP协议与各种应用层协议之间,为数据通讯提供安全支持。SSL协议可分为两层SSL记录协议(SSLRECORDPROTOCOL)它建立在可靠的传输协议(如TCP)之上,为高层协议提供数据封装、压缩、加密等基本功能的支持。SSL握手协议(SSLHANDSHAKEPROTOCOL)它建立在SSL记录协议之上,用于在实际的数据传输开始前,通讯双方进行身份认证、协商加密算法、交换加密密钥等。SSL协议所提供的服务有1)认证用户和服务器,确保数据发送到正确的客户机和服务器;2)加密数据以防止数据中途被窃取;3)维护数据的完整性,确保数据在传输过程中不被改变。422SSL协议环境搭建本程序使用OPENSSL密码库。OPENSSL是一个强大的安全套接字层密码库,囊括主要的密码算法、常用的密钥和证书封装管理功能及SSL协议,并提供丰富的应用程序供测试或其它目的使用。OPENSSL采用C语言作为开发语言,这使得OPENSSL具有优秀的跨平台性能,这对于广大技术人员来说是一件非常美妙的事情,可以在不同的平台使用同样熟悉的东西。OPENSSL支持LINUX、WINDOWS、BSD、MAC、VMS等平台,这使得OPENSSL具有广泛的适用性。但习惯C语言总比使用C重新写一个跟OPENSSL相同功能的软件包轻松不少。基本功能OPENSSL整个软件包大概可以分成三个主要的功能部分SSL协议库、应用程序以及密码算法库。OPENSSL的目录结构自然也是围绕这三个功能部分进行规划的。作为一个基于密码学的安全开发包,OPENSSL提供的功能相当强大和全面,囊括了主要的密码算法、常用的密钥和证书封装管理功能以及SSL协议,并提供了丰富的应用程序供测试或其它目的使用。辅助功能BIO机制是OPENSSL提供的一种高层IO接口,该接口封装了几乎所有类型的IO接口,如内存访问、文件访问以及SOCKET等。这使得代码的重用性大幅度提高,OPENSSL提供API的复杂性也降低了很多。OPENSSL对于随机数的生成和管理也提供了一整套的解决方法和支持API函数。随机数的好坏是决定一个密钥是否安全的重要前提。OPENSSL还提供了其它的一些辅助功能,如从口令生成密钥的API,证书签发和管理中的配置文件机制等等。如果你有足够的耐心,将会在深入使用OPENSSL的过程慢慢发现很多这样的小功能,让你不断有新的惊喜。功能OPENSSL的应用程序已经成为了OPENSSL重要的一个组成部分,其重要性恐怕是OPENSSL的开发者开始没有想到的。如OPENCA,就是完全使用OPENSSL的应用程序实现的。OPENSSL的应用程序是基于OPENSSL的密码算法库和SSL协议库写成的,所以也是一些非常好的OPENSSL的API使用范例,读懂所有这些范例,你对OPENSSL的API使用了解就比较全面了,当然,这也是一项锻炼你的意志力的工作。OPENSSL的应用程序提供了相对全面的功能,在相当多的人看来,OPENSSL已经为自己做好了一切,不需要再做更多的开发工作了,所以,他们也把这些应用程序成为OPENSSL的指令。OPENSSL的应用程序主要包括密钥生成、证书管理、格式转换、数据加密和签名、SSL测试以及其它辅助配置功能。机制ENGINE机制ENGINE机制的出现是在OPENSSL的096版的事情,开始的时候是将普通版本跟支持ENGINE的版本分开的,到了OPENSSL的097版,ENGINE机制集成到了OPENSSL的内核中,成为了OPENSSL不可缺少的一部分。ENGINE机制目的是为了使OPENSSL能够透明地使用第三方提供的软件加密库或者硬件加密设备进行加密。OPENSSL的ENGINE机制成功地达到了这个目的,这使得OPENSSL已经不仅仅使一个加密库,而是提供了一个通用地加密接口,能够与绝大部分加密库或者加密设备协调工作。当然,要使特定加密库或加密设备OPENSSL协调工作,需要写少量的接口代码,但是这样的工作量并不大,虽然还是需要一点密码学的知识。ENGINE机制的功能跟WINDOWS提供的CSP功能目标是基本相同的。包括CRYPTOSWIFT、NCIPHER、ATALLA、NURON、UBSEC、AEP、SUREWARE以及IBM4758CCA的硬件加密设备。当然,所有上述ENGINE接口支持不一定很全面,比如,可能支持其中一两种公开密钥算法。WIN32OPENSSL安装项目是致力于提供一个简单的安装OPENSSL。很容易通过简单的设置和使用方便,有效的安装程序。不需要编译或跳过任何步骤,只需点击几次安装,让你做真正的工作。下载完成后无需编译,直接将BIN目录下的一些DLL文件复制在QT目录的BIN目录下即可。图41OPENSSL文件复制43网络应用层编程为了交付邮件,电子邮件处理系统必须使用唯一的编址系统。因特网的邮件地址包括两个部分本地部分和域名,并且用符号分隔开。本地部分定义了一个特殊文件的名字,叫做用户邮箱。在用户邮箱中存储了所有收到的用户邮件,以便用户代理进行读取。地址的第二部分是域名,一个组织通常选择一个或多个主机来接收和发送电子邮件,这些主机通常叫做邮件服务器或邮件交换器MAILEXCHANGER。指派给每一个邮件交换器的域名或者来自DNS数据库,或者是一个逻辑名字例如该组织的名字。431邮件的发送处理1简单邮件传送协议SMTPSMTP(SIMPLEMAILTRANSFERPROTOCOL)即简单邮件传输协议,它是一组用于由源地址到目的地址传送邮件的规则,由它来控制信件的中转方式。SMTP协议属于TCP/IP协议族,它帮助每台计算机在发送或中转信件时找到下一个目的地。通过SMTP协议所指定的服务器,就可以把EMAIL寄到收信人的服务器上了,整个过程只要几分钟。SMTP服务器则是遵循SMTP协议的发送邮件服务器,用来发送或中转发出的电子邮件。图42SMTP使用模型SMTP简单邮件传输协议(SIMPLEMAILTRANSFERPROTOCOL),是定义邮件传输最常用的协议,它是基于TCP服务的应用层协议,由RFC2821所定义。SMTP协议规定的命令是以明文方式进行的。为了说明SMTP的工作原理,我们以向163发送邮件为实例进行说明。在LINUX环境下,使用“TELNETSMTP163COM25“连接SMTP163COM的25号端口(SMTP的标准服务端口);在WINDOWS下使用TELNET程序,远程主机指定为SMTP163COM,而端口号指定为25,然后连接SMTP163COM交互过程如下SMTPLIXNSLIXTELNETSMTP163COM25220163COMANTISPAMGTFORCOREMAILSYSTEM163COM071018HELOSMTP163COM250OKAUTHLOGIN334DXNLCM5HBWU6USERBASE64加密后的用户名334UGFZC3DVCMQ6PASSBASE64加密后的密码235AUTHENTICATIONSUCCESSFULMAILFROMXXX163COM250MAILOKRCPTTOXXX163COM250MAILOKDATA354ENDDATAWITHQUITSMTP250MAILOKQUEUEDASSMTP5,D9GOWLARIZFIFTPIXFX8AA41385S2HELO是客户向对方邮件服务器发出的标识自己的身份的命令,这里假设发送者为IDEAL;MAILFROM命令用来表示发送者的邮件地址;RCPTTO标识接收者的邮件地址,这里表示希望发送邮件给XXX163COM,如果邮件接收者不是本地用户,例如RCPTTOIDEAL,则说明希望对方邮件服务器为自己转发(RELAY)邮件,若该机器允许转发这样的邮件,则表示该邮件服务器是OPENRELAY的,否则说明该服务器不允许RELAY;DATA表示下面是邮件的数据部分,输入完毕以后,以一个“开始的行作为数据部分的结束标识;QUIT表示退出这次会话,结束邮件发送。这就是一个简单的发送邮件的会话过程,其实当使用OUTLOOKEXPRESS等客户软件发送时,后台进行的交互也是这样的,当然,SMTP协议为了处理复杂的邮件发送情况如附件等等,定义了很多的命令及规定,具体可以通过阅读RFC2821来获得。2扩展简单邮件协议ESMTPESMTPEXTENDEDSMTP,是扩展SMTP就是对标准SMTP协议进行的扩展。它与SMTP服务的区别仅仅是,使用SMTP发信不需要验证用户帐户,而用ESMTP发信时,服务器会要求用户提供用户名和密码以便验证身份。在所有的验证机制中,信息全部采用BASE64编码。验证之后的邮件发送过程与SMTP方式没有两样。3邮件的组成格式创建的电子邮件包含信封和报文两部分。1信封信封通常包含发件人地址、收件人地址以及其他信息。信封部分由前面描述的SMTP协议以命令的形式发送。2报文报文包含首部和主体两个部分。报文的首部定义发件人、收件人、报文的主题,以及一些其他信息。报文的主体包含收件人将要读取的真正内容。报文的首部和主体两个部分之间用空行分隔,否则邮件服务器无法加以区分。信件主体的格式较为简单,仅为预发送的内容陈述。首部结构比较复杂,是多个字段的组合,这些字段为接收服务器和收件人提供了关于信件的基本显示信息。4邮件的发送编程电子邮件的传送共有3个阶段连接建立、邮件传送和连接终止。邮件的发送需及时对MTA服务器返回的代码进行匹配比较,若代码不是预期的正确应答,发送将不能正确执行。对邮件的信封部分发送时,需要检测报文首都中的抄送字段CC的有无,若该字段非空,则应反复调用RCPTTO指令直到该字段关键词后的所有期望的收件地址都被通知至服务器端。图43电子邮件发送流程432邮件的接收处理1邮局协议版本3POP3MAA客户端和MAA服务器之间通常使用两种通信协议邮局协议版本3POP3和因特网邮件读取协议版本4IMAP4。它们都用于邮件的收取过程之中。虽然IMAP4协议功能比POP3协议的更为强大,但是由于其实现的复杂程度,在目前的实践中依然未受到广泛的应用。因此,本设计采用POP3协议从服务器获取邮件,对IMAP4协议不再进行深入的探讨。POP3也使用的命令和响应的形式在客户端和服务器之间进行通信。协议包含12条命令,三种工作状态,即认证状态AUTHORIZATIONSTATE、处理状态TRANSACTIONSTATE以及更新状态UPDATESTATE。命令的格式也是“关键词参数”形式,不同的命令带有不同的参数,适用于不同的状态。POP3拥有两种认证方式USERPASS机制和APOP机制。USERPASS认证机制要求用户端以明文方式依次输入邮箱名称和密码。当许多客户经常连接到服务器检查信件时,访问间隔时间较短,使用USERPASS机制会加大泄密的可能性,于是服务器提供了APOP命令进行认证以增加系统的安全性。APOP使用密钥方式进行通信,但是这就需要服务器的配合工作,实现难度较高。2邮件的收取编程电子邮件的收取也有3个阶段连接建立、邮件收取和连接终止。为利用远程登陆TELNET功能通过端口110对邮件进行接收的过程,C为客户端发送的指令或数据,S为服务器的应答语句。收取邮件时,若设计模块中的邮箱账户刚刚创建,则通过指令“UIDL”创建邮件标识符列表,并接收邮箱中的所有

温馨提示

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

评论

0/150

提交评论