版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、摘 要在当今Internet时代,电子邮件已经成为人们提供信息交换的必要的通信方式。电子邮件系统通过连接全世界的Internet,实现各类信号的传送、接收、存贮等处理,将邮件送到世界的各个角落,不只局限于信件的传递,还可用来传递文件、声音及图形、图像等不同类型的信息。本文主要介绍了Linux环境下Web邮件系统的设计和实现过程。在学习邮件系统传输原理的基础上,对qmail邮件系统的收发机制进行了详细的阐述,并在仔细研究qmail源代码的基础上,根据实际需要加入了新的功能模块,实现了一个较为完善的Web邮件系统。对于垃圾邮件的处理,通过用户认证、邮件过滤等手段初步实现了对部份垃圾邮件的过滤功能。
2、关键字:qmail,电子邮件,域名解析,垃圾邮件过滤。AbstractNowadays, in internet era, Email has been the necessary service for people to supply information communication. Electronic Mail System fulfills transmission、receiving、storing and etc management of all kinds of signal by the internet connected all the world, sends t
3、he mail to all the world corner, not only send the letter but also send different kinds of information,such as archive、sound、graphic and image.This paper presents the design and realization of a web mail system on Linux. Based on the study of the mail system transfer theory,it explains the send and
4、receive mechanism of the qmail system, and adds new function module based on the carefully research of the qmail source code, finally it realizes a relative complete web mail system. Aiming to spam mail, using user authentication and mail filter to realize the partly function of spam filter.Key Word
5、s: qmail,email,DNS,spam filter目 录第一章 引言11.1课题背景11.2研究目标和意义11.3研究思路2第二章 研究的理论基础32.1电子邮件系统综述32.2协议介绍42.2.1SMTP协议42.2.2POP3协议52.2.3IMAP协议52.3邮件工作原理62.3.1邮件工作原理简述62.3.2邮件传输过程72.4反垃圾邮件8第三章WEB邮件系统服务原理103.1邮件服务系统整体结构103.1.1WEB邮件服务系统体系结构103.1.2邮件系统功能模块划分103.1.3邮件服务器模块103.2Qmail邮件平台133.2.1Qmail概述133.2.2Qmail
6、的优点133.2.3Qmail的邮件系统结构143.2.4Qmail邮件工作原理153.3认证机制18第四章WEB邮件系统总体设计204.1WEB邮件系统整体构架204.1.1邮件系统服务工作流程204.1.2电子邮件系统结构204.2WEB邮件系统功能模块设计224.2.1电子邮件收发功能224.2.2电子邮件服务功能224.2.3反垃圾邮件功能22第五章WEB邮件系统的实现235.1Qmail的安装和配置235.1.1安装和配置qmail235.1.2安装ucspi-tcp和deamontools245.1.3运行qmail255.2电子邮件的收取模块265.3电子邮件的发送模块265.4
7、客户端模块275.5服务器模块285.5.1 Sadd模块295.5.2 Sdel模块295.5.3 Sdeltemp模块295.5.4 Saddtemp模块305.6反垃圾邮件模块315.6.1垃圾邮件的分类315.6.2用户认证功能315.6.3关闭open-relay功能315.6.4用户邮件过滤33结束语35参考文献36致谢37附录138附录241外文资料原文43翻译文稿48第一章 引言1.1课题背景电子邮件是用户或用户之间通过计算机网络收发信息的服务,1972年由Ray Tomlinson发明。经过30年的发展,电子邮件已经从单纯传递文字信息发展为可以传送各类多媒体信息的通信工具。它
8、以使用方便、快捷、容易存储、管理的特点很快被大众接受,成为传递公文、交换信息、沟通情感的有效工具。同文件传输应用一样,电子邮件的诱人之处在于传递迅速,在ARPANET上,几秒钟就可以完成美国东西海岸间的邮件传递,风雨无阻,比人工邮件快了许多。目前电子邮件已成为网络用户之间比较低廉的现代通信手段,也是Internet上使用最多的网络服务。邮件服务系统是信息沟通的桥梁,是因特网的重要组成部分。随着Internet技术日新月异的发展,现在,电子邮件己经成为学术界、商业界最为流行的一种通信方式,和国外进行学术交流更少不了电子邮件,电子邮件以其方便、快速、廉价和可靠的特点越来越赢得人们的喜爱。通过电子邮
9、件,用户可以与远地用户进行迅速、方便的联系,而且费用低廉,同时,以文本、图像、声音、视频等嵌入方式为传送信心的电子邮件应用也更为普遍,还可以利用数字签名与认证、PGP加密等技术来保证电子邮件传递的安全性与可靠性。正是由于电子邮件系统的这些良好特性,越来越多的用户采用基于电子邮件系统的应用。1.2研究目标和意义伴随着网络的迅速发展,电子邮件已经成为Internet上最普及的应用。随着Internet技术的不断发展,电子邮件已经从单纯传递文字信息进化成可以传送图像、声音及影视片断等各类多媒体信息,成为现代社会生活中不可缺少的组成部分。据统计,在100个Internet用户中,大约有80个人的主要目
10、的就是收发电子邮件。电子邮件以使用方便、快捷、容易存储、管理的特点很快被大众接受,成为传递公文、交换信息、沟通情感的有效工具。然而,随着上网用户越来越多,上网速度越来越快,作为网络基础应用的电子邮件系统所面临的问题也日益突出,不管是使用免费的邮箱如, ,还是等收费的个人邮箱,ISP提供的虚拟主机邮箱等都存在着种种问题。本次课题研究目标:深入了解WEB邮件系统的搭建原理及实际搭建运行操作,同时,在学习现今电子邮件系统基本模块的基础上,对搭建的邮件系统进行技术扩展,使之模块化更为清晰,实现电子邮件的认证和反垃圾邮件功能。本次课题研究意义:一方面能够在操作过程中对当今电子邮件系统的有关理论有较深入的
11、了解;另一方面针对电子邮件安全问题,研究反垃圾邮件的相关技术以及身份认证的内容并应用到设计的邮件系统中,从而在当今电子邮件系统的安全问题上有所突破。 1.3研究思路设计开发Webmail邮件服务系统,首先对Linux系统的相关知识以及Linux环境下的邮件服务系统工作过程这一部分进行一定的了解,研究用户邮件在Linux下的存贮收发方式。学习各类电子邮件协议如SMTP、POP3、IMAP以及与邮件相关的RFC规范,尤其是SMTP、IMAP的交互过程,熟悉这些协议规定的电子邮件传送过程。在掌握相关理论的基础上,学习Qmail邮件平台的安装和配置,以及用户认证的有关知识。在掌握了有关电子邮件服务器系
12、统的有关知识后,开始安装LINUX操作系统并搭建Qmail邮件平台,测试通过后,逐步完善邮件系统的有关模块,同时,着重设计和开发邮件系统的认证系统和反垃圾邮件功能模块。设计过程中,本着功能单一化、操作简单化的设计原则,在相关理论研究的基础上有所创新,并完成了电子邮件系统的大部份功能。第二章 研究的理论基础2.1电子邮件系统综述电子邮件系统是Internet上使用最广泛的一种服务,为用户提供任意用户间的邮件收发服务。邮件内容包含除文本外,还可包含声音、图像、应用程序等各类计算机文件。 电子邮件服务基于客户/服务器模式,其工作过程如下:邮件客户端和邮件服务器通过POP3和IMAP协议收取邮件;通过
13、SMTP传输邮件内容,实现邮件信息交换。SMTP通过用户代理(MUA)和邮件传输代理程序(MTA)实现邮件的传输。 发送方编辑完毕的电子邮件发送给当地的邮件服务器,邮件服务器收到客户送来的邮件,根据收件人的邮件地址发送到对方的邮件服务器中。对方的邮件服务器接收到其他邮件服务器发来的邮件,并根据邮件地址分发到相应的电子邮箱中,这样接受方可通过电子邮箱来读取邮件,并对他们进行相关的处理。一个电子邮件系统的构成包括:电子邮件协议、用户代理、电子邮件服务器。用户代理邮件服务器邮件服务器邮件服务器用户代理用户代理用户代理用户代理用户代理smtp图2-1电子邮件系统整体描述2.2协议介绍2.2.1SMTP
14、协议SMTP(Simple Mail Transfer Protocol)即简单邮件传输协议,是一种提供可靠且有效电子邮件传输的协议。SMTP是建立在FTP文件传输服务上的一种邮件服务,主要用于传输系统之间的邮件信息并提供与来信有关的通知。协议工作原理SMTP是工作在两种情况下:一是电子邮件从客户机传输到服务器:二是从某一个服务器传输到另一个服务器。SMTP也是个请求/响应协议,命令和响应都是基于ASC文本,并以CR和LF符结束。响应包括一个表示返回状态的三位数字代码。SMTP在TCP协议25号端口监听连续请求。 连接和发送过程如下: (1)建立TCP 连接。 (2)客户端发送H
15、ELO命令以标识发件人自己的身份,然后客户端发送MAIL命令;服务器端正希望以OK作为响应,表明准备接收。 (3)客户端发送RCPT命令,以标识该电子邮件的计划接收人,可以有多个RCPT行;服务器端则表示是否愿意为收件人接收邮件。 (4)协商结束,发送邮件,用命令DATA发送。 (5)以“.”号表示结束输入内容一起发送出去,结束此次发送,用QUIT命令退出。协议邮件路由过程SMTP服务器基于域名服务DNS中计划收件人的域名来路由电子邮件。SMTP服务器基于DNS中的MX记录来路由电子邮件,MX记录注册了域名和相关的SMTP中继主机,属于该域的电子邮件都应向该主机发送。若SMTP服
16、务器 收到一封信要发到shuer,则执行以下过程: (1)Sendmail 请求DNS给出主机的CNAME 记录,如有,假若CNAME(别名记录)到,则再次请求的CNAME记录,直到没有为止。 (2)假定被CNAME到,然后sendmail请求 域的DNS给出的MX记录(邮件路由及记录),shmail MX 5 10 。 (3)Sendmail组合请求DNS给出的A记录(主机名(或域名)对应的IP地址记录),即IP地址,若返回值为(假设值)。 (4)Sendmail与连接,传送这封给shuser 的信到 这台服务器的SMTP后台程序。SMTP邮件内容S
17、MTP发送User B(代理)User A(代理)User A的邮件服务器User B的邮件服务器SMTP接收图2-2SMTP工作模式2.2.2POP3协议POP3(Post Office Protocol-Version 3)定义了客户机从邮件服务器上获取邮件的一个简单的方法,它通过一组简单指令和应答实现与用户的交互操作。例如,用户通过user指令和pass指令实现身份认证,认证成功后可以通过retr指令收取邮件等。在POP3协议中有三种状态,认可状态,处理状态,和更新状态。当客户机与服务器建立联系时,一旦客户机提供了自己身份并成功确认,即由认可状态转入处理状态,在完成相应的操作后客户机发出
18、quit命令,则进入更新状态,更新之后最后重返认可状态。具体原理如下图:等待连接身份确认quit命令C|认可|处理|更新|S |_| 重返认可状态2.2.3IMAP协议Internet Mail Access Protocol(交互式邮件存取协议)IMAP是斯坦福大学在1986年开发的研发的一种邮件获取协议。它的主要作用是邮件客户端(例如MS Outlook Express)可以通过这种协议从邮件服务器上获取邮件的信息,下载邮件等。当前的权威定义是RFC3501。IMAP协议运行在TCP/IP协议之上,使用的端口是143。它与POP3协议的主要区别是用户可以不用把所有的邮件全部下载,可以通过客
19、户端直接对服务器上的邮件进行操作。与POP3协议类似,IMAP(Internet消息访问协议)也是提供面向用户的邮件收取服务。常用的版本是IMAP4。IMAP4改进了POP3的不足,用户可以通过浏览信件头来决定是否收取、删除和检索邮件的特定部分,还可以在服务器上创建或更改文件夹或邮箱,它除了支持POP3协议的脱机操作模式外,还支持联机操作和断连接操作。它为用户提供了有选择的从邮件服务器接收邮件的功能、基于服务器的信息处理功能和共享信箱功能。IMAP4的脱机模式不同于POP3,它不会自动删除在邮件服务器上已取出的邮件,其联机模式和断连接模式也是将邮件服务器作为“远程文件服务器”进行访问,更加灵活
20、方便。2.3邮件工作原理2.3.1邮件工作原理简述电子邮件与普通邮件有类似的地方,发信者注明收件人的姓名与地址(即邮件地址),发送方服务器把邮件传到收件方服务器,收件方服务器再把邮件发到收件人的邮箱中。更进一步的解释涉及到以下几个概念:1.MUA(Mail User Agent)称为邮件用户代理,用户利用MUA读取邮件,回复邮件以及写新邮件并发送。MUA种类繁多,有foxmail和微软的Outlook系列等客户端工具,还有专用的WEBmail等。2.MTA(Mail Transport Agent)称为邮件传输代理,MTA负责将电子邮件从一个SMTP服务器发送到另一个SMTP服务器。3.MDA
21、(Mail Delivery Agent)称为邮件投递代理,MDA负责将电子邮件投递到最终目的地,实现上可以是MTA的一部分。电子邮件从发送到接收的过程如下:发送者利用MUA写一封新邮件,通过SMTP协议发送给MTA。如果该邮件是发送给本地用户的,MTA则将其交给MDA,MDA将该邮件投递到本地用户的邮箱中供用户通过MUA读取;如果该邮件是发送给远程用户的,MTA则通过SMTP协议将其发送给另一SMTP服务器的MTA,远程MTA判断该邮件接收者是本地或者远程的作上述同样的操作,直到该邮件存储到最终接收者的用户邮箱中。而接收者则利用MUA通过POP3/IMAP协议读取邮件。SMTP和POP3/I
22、MAP服务器是服务器软件,它们运行在邮件服务器上。SMTP服务器功能包括MTA和MDA,也就是负责接收待发送的邮件,并发送至目标邮件服务器的SMTP服务器,由该SMTP服务器写入用户邮箱。实际上,由于SMTP服务器具有中转(Relay)功能,它并不区分邮件是来自用户机(如普通PC)还是其他SMTP服务器。如果用户想在普通客户机(没有SMTP服务器的普通主机)上接收邮件的话,他需要通过pop3协议或IMAP协议从邮件服务器上获取。不同的是,pop3服务器要求用户将邮件取回本地的普通客户机进行维护,而IMAP则可以在服务器上直接维护,例如建立不同的邮件夹等。2.3.2邮件传输过程当一个主机上的用户
23、想要发送一个邮件给另一个主机上的用户时, 许多事情发生了, 这个场景后面的东西很多是不必要知道的那么确切的.假设一个用户 Alicealice想要发送一个邮件给Bobbob。 下面是发送接收过程: 1. Alice用她的邮件用户代理(MUA)编写邮件,比如使用mutt或者pine.在To这一栏指定接收者,Subject这一栏填写邮件主题,加上邮件本身的文本部分。整个邮件看起来是下面这样的: To: bobbeta Subject: lunch How about pizza?2. 当觉得这封邮件已经满意之后,指示MUA发送邮件。3. 这时候, MUA 会加上附加的邮件头部分, 比如日期 Dat
24、e 和邮件ID(Message-Id) 并且修改Alice输入的值(例如, 将 bobbeta 替换为Bob ) 下一步, MUA 将邮件注入邮件系统. 有两种方式进行注入: MUA 运行一个由邮件系统提供的为注入邮件为目的的程序; 或者使用SMTP协议和本地或者远程邮件服务器建立连接。在本例内, 我们假定 MUA 使用本地注入程序将邮件传送给MTA,对于不同的MTA, 注入细节都是不同的,不过对于Linux系统,使用qmail程序注入这种方式,MUA可以将邮件头和邮件主体放置在一个文件内, 由空行分隔, 然后传递这个文件到qmail程序. 4. 如果注入成功-邮件句法正确,并且qmail调用
25、适当-那么现在邮件由 MTA 负责. 不同的 MTA 细节是完全不同的, 通常MTA首先检查邮件头决定邮件将发往何处. 然后建立一个到主机beta的SMTP连接, 转发邮件给 beta 系统上的MTA. SMTP对话要求邮件被分成两部分发送: 第一部分是信封, 这个部分确定接收者的地址bob和返回地址alice 以及第二部分邮件本身, 包括邮件头和邮件主体. 5. 如果beta主机的MTA拒绝这个邮件, 可能原因是在beta系统上没有这个bob用户, 在alpha 上的MTA发送一个反弹邮件给返回地址, 也就是 alicealpha, 通知她邮件发送出现了问题. 6. 如果 beta主机上的
26、MTA接收了邮件, 它查看接收者地址, 决定是发送给本地local 还是远程 remote系统的邮件. 这个例子里面, 接收者是本地用户, 然后MTA或者传送邮件给 mail delivery agent (MDA), 比如 /bin/mail或者传送给 procmail.7. 如果传输失败了, 可能是Bob的邮箱超过了使用限额, beta 主机上的 MTA 将发送一个反弹信息给信封上的返回地址, 即 alicealpha. 8. 如果传输成功, 邮件将在Bob的邮箱中等待, 直到他使用MUA来阅读和显示邮件. 2.4反垃圾邮件凡是未经用户许可(与用户无关)就强行发送到用户的邮箱中的任何电子邮
27、件就称为垃圾邮件。垃圾邮件一般具有批量发送的特征。其内容包括赚钱信息、成人广告、商业或个人网站广告、电子杂志、连环信等。垃圾邮件可以分为良性和恶性的。良性垃圾邮件是各种宣传广告等对收件人影响不大的信息邮件。恶性垃圾邮件是指具有破坏性的电子邮件。垃圾邮件制造者是通过邮件报头欺骗,对邮件主题和内容进行处理以及利用第三方服务器进行转发来达到目的的。一个常见的垃圾邮件伪装方法是利用网络中的开放式SMTP服务器进行转发。如果网络中的一台SMTP服务器没有被配置为禁止转发电子邮件,那么它将可能成为被垃圾邮件制造者利用的对象。正如前面所述,大量的不法电子邮件以电子邮件炸弹或垃圾邮件的方式进入服务器,势必会造
28、成邮件服务器拒绝服务(即邮件服务器拒绝响应请求或执行任务,服务器被最大程度的“冻结”起来)。这通常是由于网络连接过载、系统资源耗尽以及大量邮件和系统日志造成磁盘空间耗尽的原因,使得网络连接丢失,系统相应缓慢,甚至服务器崩溃,服务失败(即在服务器上不能执行这一服务),达到服务器出现拒绝服务的目的。尽可能早地发现电子邮件炸弹和垃圾邮件十分重要。其中现象之一是正在被攻击时的邮件服务器系统将呈现响应缓慢的情况。如果原本正常的电子邮件服务系统中,电子邮件的收发速度变慢或根本不能运行,那么可能是邮件服务器要么正在处理大量的邮件消息,要么已经进入拒绝服务状态。第三章WEB邮件系统服务原理3.1邮件服务系统整
29、体结构3.1.1WEB邮件服务系统体系结构Webmail邮件服务系统体系结构,包括五大子系统:邮件管理子系统、邮件收发子系统、邮件存储子系统、用户认证子系统、用户接入子系统。3.1.2邮件系统功能模块划分Linux电子邮件系统主要革新之一是使软件模块化。系统不再使用一个大程序处理所有的请求功能,而是由若干协同工作的小程序所组成,每个小程序只处理整体系统功能的一部分。电子邮件系统的功能被分成若干部分,分别由相对独立的程序来实现。如图所示:邮件数据库远程MTA邮件用户代理工作站邮件传输代理邮件分发代理图3-1 Linux环境下电子邮件系统功能模块划分3.1.3邮件服务器模块邮件分发代
30、理(MDA)邮件分发部分称为MDA,其作用是将收到的邮件发给具体的用户。为了完成这一功能,MDA程序必须知道邮件系统使用邮箱的类型和位置。目前有三种类型的邮箱经常被Linux系统使用:1./var/spool/mail文件2.$HOME/mail文件3.邮件目录型邮箱目录。每种类型的邮箱都有自己的特点。邮件目录型邮箱目录在性能、安全性和容错性方面都有很大提高,但是并不能被很多流行的MDA和MTA程序使用。能被几乎所有的MDA和MTA程序使用的邮箱类型是/var/spool/mail邮箱文件。在基本的MDA程序之上还可以增加一些功能,对于不同的MDA程序邮件管理员所能使用的功能也不同。这些功能一
31、般是下面经常使用到的功能中的一部分:自动邮件过滤;自动邮件回复;邮件自动触发程序。1. 自动邮件过滤对MDA程序来说,最有用也是最常用的功能是能够自动对发来的邮件进行过滤。邮件信息能够被自动地分拣到不同邮件文件夹中,分拣原则基于邮件夹主题头的内容,或者仅仅是主题头中的一个单词。MDA程序使用一个配置文件来允许用户确定标准文本表达式(包括通配符),用它对发来邮件的邮件头进行匹配检索。一旦表达式条件满足,该邮件就会被保存在用户邮件区域里事先定义好的邮件夹中,或者按照用户定义的其他方式进行操作。该功能也可用于对不合要求的信息进行过滤和丢弃,有助于减少那些无用的多余的商业邮件(UCE)。2. 自动邮件
32、回复MDA具有的另一项功能是对所收邮件进行自动答复。同邮件的过滤十分类似,很多MDA程序也允许邮件用户基于主题头区域定义的内容发送回复邮件。邮件用户可以对自动回复功能进行个性化的定制,来满足对所收邮件进行不同类型回复的需求。邮件用户能够对MDA程序的自动回复功能进行配置,根据配置文件中预定义的值对所收邮件的发送者进行回复,这些不同的值会在回复邮件中产生不同的信息。用户同时也可以选择回复后的邮件原件是否需要保存.3. 邮件自动触发程序MDA程序中还有一项常用的功能是用户可以运行某特定程序,该程序在收到某条特定邮件后被触发。对于大多数MDA程序,邮件用户都可以创建一个配置,该配置将需要自动运行的程
33、序同邮件信息对应起来,例如主题头的内容。通过这项功能,计算机在收到新邮件时能够根据特定的主题发出不同的响声或者是在收到特定邮件后启动一个监视进程。邮件传输代理(MTA)邮件传输部分一般称作MTA,其作用是将客户端提交的邮件发送给正确的接收主机。如果目的地主机是远程的邮件服务器,则MTA必须通过同这个远程的主机建立一条通信链路来传递邮件。对于接收的邮件MTA必须能够响应远程邮件服务器的连接请求,并为本地用户接收邮件。很多不同的协议都可以用来在两个远程主机间传递邮件,但是在互联网上使用最广泛的邮件传送协议是简单邮件传输协议(SMTP)。绝大多数MTA程序包都使用了某种形式的队列机制来
34、尽可能高效地处理邮件。一些新的特性包括根据邮件种类的不同(例如新邮件、返回邮件和列表邮件),使用不同的邮件队列来进行处理。通过划分邮件等级,即使是在邮件量很大的情况下MTA程序也能够高效地传送邮件。MTA需要长时间运行在服务器端,MTA一旦出现问题就影响整个系统的正确运行,因此它是邮件系统的核心,对它的稳定性有特别的要求。在Unix/Linux上,存在众多不同的邮件传输代理,比较著名的有Sendmail、Qmail和Postfix。Sendmail最流行,但是安全性差、配置困难。Qmail采用模块化设计,安全性更好,配置相对简单。Postfix也采用了类似的方法提高系统安全性,并采取集中配置的
35、方法,使得配置起来最为简便。邮件用户代理(MUA)在Linux邮件模型中,用户使用一个本地邮箱来存放自己的邮件。MUA程序向用户提供了读取存在他们邮箱中邮件的操作界面。MUA并不接收邮件,他们只是显示已经在用户邮箱中存在的邮件。很多MUA程序还允许用户创建不同的邮件夹来存储邮件。客户端部分一般称作MUA(邮件用户代理),其功能是创作、阅读、管理用户的邮件。一般可以开发自己的客户端,也可以支持标准的客户端软件。邮件服务系统支持Outlook等客户端软件,具备POP3/SMTP功能。也支持客户端Webmail,用户Webmail界面个性化,用户可选择多种界面风格,所有Webmail页
36、面由模板控制,非常易于定制修改。用户界面支持多语种:简体中文、英文,并且可以方便地扩展其他语种;读写邮件支持多字符集自动识别与转换(BIG5、GB、HZ、UTF-8等)。1. 邮件位置在互联网邮件系统短短的历史中,关于邮件应该存储在什么地方出现了两种不同的思想,其实每种思想都只针对一个特定的邮件环境。一种思想是把邮件直接下载到用户的计算机,这样邮件服务器上的磁盘可以清空。这样使邮件管理员的工作变的简单,但是却给那些从多台计算机查看邮件的用户带来了不便。例如,通常一个用户在家中查看邮件(这样须把邮件下载到家中计算机上),然后在公司上班,由于邮件都存在家中计算机上,在服务器端已经被删除。当他工作时
37、,用户发现不可能把邮件从家中的计算机上取出。第二种思想是通过在邮件服务器上保存所有的邮件解决了从多台计算机查看邮件的问题。当用户阅读他的邮件时,一份拷贝被发往用户的计算机用来显示,而真正的邮件仍然存储在邮件服务器的文件或目录中。不管用户从哪一台计算机来查看他的邮件,他总能看到相同的信息。这种方式确实方便了用户,但是邮件管理员的工作却变得复杂起来,因为所有的邮件都要存储在邮件服务器上,使得磁盘空间变成了非常重要的因素。2. 邮件显示方式随着图形用户界面GUI设备的出现,MUA程序在显示邮件方面有了新的特点。很多MUA支持多用途互联网邮件扩展MIME格式,MIME允许邮件包含同样信息的多个版本,每
38、种形式都使用一种不同的显示方法。MUA的工作是决定采用哪种方法来显示信息,这样,基于文本的终端使用文本方式显示信息,GUI终端采用更加图形化的和复杂的方式来显示信息。HTML格式的邮件虽然常常为用户所喜欢,但是他们很快就给邮件管理员带来麻烦。一个简单的三句话的邮件可能会变成一个巨大的邮件,因为附加了HTML格式信息、奇特的背景图形信息以及包含图片的签名信息。这些邮件容易阻塞邮件系统。3.2Qmail邮件平台3.2.1Qmail概述Qmail是一个因特网邮件传送代理, 它可以运行在Linux系统下, 是一个直接代替Linux下sendmail软件的邮件传送程序. Qmail 使用简单报文传送代理
39、协议 SMTP 传输邮件(Simple Mail Transfer Protocol). Qmail 是面向安全而设计的。3.2.2Qmail的优点1.安全-Qmail将E-mail处理过程分为多个分过程,尽量避免以Root用户身份运行。同时Qmail也禁止对特权用户(Root、Deamon等)直接发信。2.可靠-Qmail的直接投递保证了E-mail在投递过程中不会丢失。Qmail同时支持新的更可靠的信箱格式Maildir,保证系统在突然崩溃情况下不至破坏整个信箱。3.速度和高效-运行在奔腾的BSD上,Qmail每天可以轻松地投递20万封电子邮件。4.管理和配置简单-Qmail要比其他的In
40、ternet Mail系统小得多。它通过统一的向前机制完成Forwarding、Alias和Maillist等功能,Qmail使用简单高效队列来处理投递。Qmail-SMTPD可以由Inetd启动,节省了一定资源。5.此外,qmail支持虚拟域和虚拟用户,使邮件系统的用户完全独立于Unix用户。qmail由于使用Maildir的形式,避免了NFS中无法对共享文件加锁的限制,使得qmail很容易作大容量的扩展,实现100万级的电子邮件系统。3.2.3Qmail的邮件系统结构一个完整的邮件系统要完成的工作十分复杂,要接收远程本地邮件,要投递远程和本地邮件,还要管理邮件队列等等,早期的邮件系统如Se
41、ndmail是通过一个程序来实现所有电子邮件服务功能的,这就造成了程序庞大臃肿,配置复杂,而且安全性也差。Qmail完全采用了Unix的模块化设计方法进行设计,每个模块只处理相对简单的任务,同时为了提高安全性,不同的模块以不同的权限运行,只有必要的程序才是setuid程序(即以root用户权限执行),并且模块与模块之间不盲目“信任”,这样就减少了安全隐患。所以qmail要比其他的MTA小得多,而且易于调试和使用,其他开发人员也可编写一些新模块来扩展qmail的功能。所有通过qmail-smtpd接收的远程邮件以及本地用qmail-inject发送的信件,通过qmail-queue进入qmail
42、邮件队列等待发送。另外,qmail-local也会将本地转发的信件送入邮件队列,qmail-send则会将反弹的信件送入邮件队列。邮件队列中的信件由qmail-send发送。这个时候会按照本地信件和远程信件分别调用qmail-lspawn和qmail-rspawn。发送完成后信件由qmail-clean自动清除。qmail-smtpd可以有多种启动方式,以往常用超级守护进程inetd来启动,但这种启动方式应用在负荷较重的服务上时效率不高,要使用tcpserver来启动qmail-smtpd及qmail的其他服务进程。图3-2中表示了qmail基本工作流程和多个基本模块之间的关系:图3-2qma
43、il模块的工作流程为了更好地支持qmail中独特的、更加安全可靠的邮件存储方式Maildir,qmail也自行设计了实现POP3协议的模块:qmail-popup和qmail-pop3d,checkpassword模块是在POP3检查认证用户口令,qmail-pop3d也支持其他口令认证方式,如Unix系统帐户、vmailmgr和vchkpw等。目前在因特网上实现标准POP3协议的软件很多,如qpoper,qmail的POP3模块只支持Maildir格式存储的邮件,如果想使用传统的Mbox邮件存储方式,则可在系统中另行安装其他POP3服务器软件。Qmail核心模块的主要功能见下表:表3-1qm
44、ail核心模块的主要功能模块名称主要功能qmail-smtpd通过SMTP协议接收/拒绝远程邮件qmail-inject本地邮件发送qmail-queue管理邮件队列qmail-send发送邮件队列中的邮件qmail-clean清楚邮件队列中已发送的邮件qmail-lspawn/qmail-local处理本地邮件投递qmail-rspawn/qmail-remote处理远程邮件投递3.2.4Qmail邮件工作原理综述由qmail-queue进程控制。它在以下情况被调用:(1)当产生本地消息时,qmail-inject进程调用qmail-queue。(2)qmail-smtpd准备
45、SMTP协议下的投递邮件任务时调用它。(3)向前发送邮件时,qmail-local调用它。(4)退回邮件时,qmail-send调用它。每封邮件接着由qmail-lspawn和qmail-rspawn协助qmail-send进程完成投递,最后由qmail-clean清除邮件队列。这四个进程是系统由始至终都在运行的。队列结构队列里的每条消息都由唯一的号码标识,假定某条消息是的标识码是457,那么它也对应一个inode结点号457。队列被组织成几个目录,每个目录都可能包含和这条消息相关的文件:mess/457:消息正文todo/457:信封:消息的来源地址和目的地址。实际是指向int
46、d/457的链接。intd/457:信封,由qmailqueue生成。info/457:信封上的发送者地址,预处理后生成。local/457:本地接受地址,预处理后生成。remote/457:远程接受地址,预处理后生成。bounce/457:传输错误信息。以下是一条消息所有可能的状态。“”号表示该目录下文件存在,“”表示该目录下文件不存在,“?”表示未知。S1.-mess-intd-todo-info-local-remote-bounceS2.+mess-intd-todo-info-local-remote-bounceS3.+mess+intd-todo-info-local-remot
47、e-bounceS4.+mess?intd+todo?info?local?remote-bounce(queued,表示已经进入队列)S5.+mess-intd-todo+info?local?remote?bounce(preprocessed,表示已通过预处理).2消息进入队列添加一条消息到队列里,qmail-queue首先创建一个单独的目录,命名为pid/。然后在这个目录下为这条消息创建一个独立文件。文件系统为这个文件分配唯一的标识,暂时记做457。Qmail-queue监视这个文件标识,并保证这条消息进入状态S1。Qmail-queue接着把pid/更名为mess/45
48、7,进入状态S2。然后写一些相关的信息到mess/457目录下,创建目录intd/457,进入状态S3,并在intd/457下写入相关的信封信息。最后,qmail-queue创建一个指向intd/457的链接:todo/457,进入状态S4。到此为止,这条消息已经被处理到队列中,等待qmail-send的处理。qmail-queue在处理任何文件之前,会启动一个24小时的超时记时器。一旦等待处理超过24小时,qmail-queue将中止当前进程。当qmail-queue成功的将一条邮件加入到队列中时,它将启动一个由qmail-send设定的触发器。该触发器的工作机制是:命名管道锁触发lock/
49、trigger。在扫描todo/之前,qmail-send打开lock/trigger下的管道O_NDELAY设定可读。Qiaml-queue通过向O_NDELAY写一个字节来触发qmail-send。这使得locks/trigger可读并唤醒qmail-send进程。在再次扫描todo/之前,qmail-send先关闭lock/trigger再打开它。预处理队列中的消息一旦消息进入等待队列,qmail-send必须判断哪些是要投递给本地接收者,哪些是要投递给远程接收者。它也有可能重写某些接受者地址。当qmail-send检测到todo/457目录,得知消息457处于状态S4。于
50、是,它先删除已经存在的(假如)info/457,local/457和remote/457目录。然后读取整个todo/457目录,生成info/457、local/457或者remote/457目录。完成这些操作后,删除intd/457目录。这时,该条消息仍然处于S4状态。最后,qmail-send删除todo/457目录,进入S5状态。到此为止,这条消息已成功的完成预处理。.4预处理后投递消息处在S5状态的消息将被做如下处理。每个local/457和remote/457目录下的邮件地址将被标记NOT DONE或DONE:DONE:表示该消息已经被成功投递,或者是投递时遇到了永久性
51、错误。这时,qmail-send将会停止对该消息所示的地址继续进行投递任务。NOT DONE:如果已经有投递任务在尝试,该标记表示投递人物遇到暂时性错误。这种情况下,qmail-send会随后继续尝试投递。qmail-send会在空闲的时间尝试给标记了NOT DONE的地址发送邮件。如果邮件被成功处理,qmail-send将在该地址标记DONE。如果遇到永久性错误,它首先发送一条错误通知到bounce/457目录(如果该目录不存在,就自动创建),然后将邮件地址标记为DONE。qmail-send会在任意的时刻处理bounce/457目录,可能如下:1)从bounce/457和mess/457目
52、录创建一条新的bounce消息2)删除bounce/457目录。当local/457中所有的邮件地址都被标记DONE后,qmail-send将删除local/457。同样的,remote/457也做此处理。随后,qmail-send删除队列里的邮件:第一步,如果bounce/457存在,qmail-send按照上述的方法处理。第二步,如果bounce/457已删除,qmail-send删除info/457目录,进入状态S2;然后删除mess/457,进入状态S1。清楚操作如果在qmail-queue处理邮件队列时,或者qmail-send正删除邮件时,系统因故障崩溃,当时处理的邮
53、件就会处在S2或者S3状态。如果qmail-send检查到有邮件处在S2或者S3状态(不是正在删除的邮件),而mess/457的创建时间已经过了36小时,它就相续删除intd/457(如果存在)和mess/457。此时,正在处理该邮件的qmail-queue将被挂起。同样的,如果qmail-send发现pid/目录下的文件创建时间超过36小时,也将删除该目录。如果在qmail-send投递邮件时发生系统崩溃故障,Cleanups则无须运行。最遭情况下,邮件可能会被投递两次。其实,在分布式邮件系统上,目前并没有一种有效的方法来降低邮件重复投递的可能。不妨试想一下,如果在接受方的邮件服务器响应之前
54、,投递邮件的SMTP链接发生断路错误,该怎么办?显然,用户必须考虑到这种最坏情况,并再次发送邮件。同样的,如果在qmail-send进程为邮件做DONE标记之前,计算机崩溃了。那么,重启后的新进程必须再次发送该邮件。通常的方法是,利用日志文件。反正,删除重复邮件是接受方的事情,无须顾虑。3.3认证机制通常情况下,标准的E-mail传输协议SMTP在传输邮件时,是不进行用户身份认证的。这是因为SMTP原本是为多用户环境下E-mail发送开发的,在这种环境中,用户必须登录到主机,向主机提供用户名及认证口令,之后才能发送E-mail,SMTP负责在服务器间传输邮件。但是,随着互联网的发展,由于个人机
55、的使用,单用户机接入了互联网。用户也可以通过个人机收发邮件,使用POP、IMAP接收邮件。由于POP、IMAP要从服务器上读取/下载邮件,所以必须经过认证。但SMTP就不同了,非法用户可以在邮件头放置任何信息、任何邮件地址,而SMTP根本不管这些,统统发出。也就是说,甲可以盗用乙的邮件地址(尽管他不可能收到乙的邮件,因为POP、IMAP要求有口令才能收到邮件),收信者无法确定E-mail是不是真的是乙发的邮件可以被匿名/冒名发送。此外,一些在网上兜售的人,也会利用邮件服务器发送大量的垃圾邮件,以至于网络上的E-mail广告泛滥。SMTP服务器无法确认SMTP客户机的合法性,SMTP客户机也无法确认SMTP服务器的合法性。从而也就导致了用户可以不经过认证就发送邮件,用户可以冒名发送邮件,以及垃圾邮件的泛滥。简单认证安全层(SASL),它提供了模块化的SMTP认证扩展,因此SMTP就可以在SASL之上构建自己的SMTP认证,因为可以通过开放式的机制和协议来建立认证会话。另外,SASL在实现了对PLAIN以及CRAM-MD5加密等协议的基础上,还提供了多种认证方法,比如通过Kerberos、用户数据库、p
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025年度环保工程承包合同标的概述2篇
- 2024版区域性食品分销合作合同样本版B版
- 2025年度生产线销售与生产线配套设备合同3篇
- 个人承包工程劳务2024年合同
- 2024年甲乙双方关于办公软件定制开发与服务合同
- 2024版劳务分包合同主体
- 2024环保施工合作合同书版
- 2024版钢结构施工合同
- 塑料成型过程中的节能技术考核试卷
- 公交车智能导航系统开发与应用考核试卷
- 医院手术室医院感染管理质量督查评分表
- 心内电生理导管及器械
- 称量与天平培训试题及答案
- 超全的超滤与纳滤概述、基本理论和应用
- 2020年医师定期考核试题与答案(公卫专业)
- 2022年中国育龄女性生殖健康研究报告
- 各种静脉置管固定方法
- 消防报审验收程序及表格
- 教育金规划ppt课件
- 呼吸机波形分析及临床应用
- 常用紧固件选用指南
评论
0/150
提交评论