您好,欢迎访问三七文档
电子邮件协议总结1.电子邮件系统的基本概念电子邮件是一种用电子手段提供信息交换的现代邮政通信方式,电子邮件让人们能方便快捷地传递信息,让世界各地的人们之间能够轻松地交流。电子邮件与传统的信件通信方式相比有着巨大的优势:-传递迅速:在数分钟之内可到达地球上任何一个地方;-信息多样:除文字外,还可包含图片、音乐、动画、视频等多媒体信息,也可以附带上软件、数据等资料;-方便高效:只要能连接到Internet,就可以随时随地地收发E-mail,而且只需极少的费用。1972年BBN的RayTomlinson发明电子邮件系统并采用@符号。电子邮件系统要求每个用户有一个email地址。Internet上email地址的形式是:用户名@主机域名,这里@念作“at”,意思为“在”。@左边是用户名或用户所使用的电子邮箱名。邮箱所在主机通常称为邮件服务器。@右边是用户使用的邮件服务器所在域的域名。例如清华大学的域名是tsinghua.edu.cn,所以tsg@tsinghua.edu.cn就是清华的某email地址。电子邮件系统投递邮件时,首先需要利用域名系统DNS将email地址中的主机域名转换成邮件服务器的IP地址。为此先调用名字解析器,(1)从主机域名查询该域的资源记录MX。例如:从域tsinghua.edu.cn的DNS资源记录MX,可以得到邮件服务器域名mail.tsinghua.edu.cn,(2)再查询邮件服务器的IP地址,有了IP地址就知道邮件往哪里送了。若查不到MX记录,系统就将@后的主机域名作为邮件服务器域名。@mails.tsinghua.edu.cn。电子邮件系统的一个非常有用的功能是利用所谓邮寄表(mailinglist)向多个用户发送同一邮件。邮寄表是一组email地址并有一个组名,也称“别名(alias)”,发给该组名的邮件会自动分发给它代表的每个email地址。一些邮件系统的地址簿或通讯簿(addressbook)有类似的功能。电子邮件与之前介绍的TELNET和FTP服务不同,它不是一种“终端到终端”的服务,而是使用了“存储转发式”的服务,这是一种异步通信方式。通过存储转发可以进行非实时通信,即信件发送者可随时随地发送邮件,不需要接收者同时在场。邮件服务器是24小时连接到网络的高性能、大容量的计算机,在服务器的硬盘上为用户分配一定的存储空间,作为用户的“邮箱”。用户可通过用户名和密码来登录“邮箱”,并进行发信、收信、编辑、转发、存档等各种操作。电子邮件通信是点到点,不受传输网络配置(如非对称路由)或通信技术(如无线、移动)的影响。电子邮件的传输结构如图1所示。图1.电子邮件的传输拓扑结构示意1.1ISO/OSI电子邮件系统MOTIS电子邮件系统分为两部分:用户代理UA:为用户提供良好的操作界面,并负责生成与处理消息;信息传输代理MTA:主要负责消息传输,即所谓的“电子邮局”。在电子邮件系统的具体实现中,UA一般位于个人计算机内,而MTA一般位于邮件服务器中。MOTIS的电子邮件传输是存储转发型的,其中的MTA扮演网关的角色,邮件经逐个MTA传输直至信宿用户所在的MTA。图1MOTIS电子邮件系统的模型1.2TCP/IP电子邮件系统TCP/IP电子邮件系统在概念上也分为用户界面和邮件传输两部分,但邮件传输部分并未独立出来,形成一个类似MOTIS中MTA的组件,这是因为TCP/IP自始至终坚持端到端的思想,TCP/IP电子邮件系统也采用端到端的传输方式。TCP/IP中采用spooling(假脱机)缓冲技术来解决延迟传递(delayeddelivery)问题,将用户收发邮件与实际的邮件传输区别开来。图2采用spooling技术的电子邮件系统2.电子邮件协议收发电子邮件在的过程中,要遵循一些基本协议和标准,这些协议和标准保证电子邮件在各种不同的网络与操作系统之间能够正确地进行传输。常见的电子邮件传输协议主要有以下三种:-SMTP(简单邮件传输协议):最常用的电子邮件传送协议;-POP3(邮局协议):最常用的电子邮件接收协议;-IMAP4(网络邮件访问协议):POP3的一种替代协议,提供了邮件检索和邮件处理的新功能。目前,大多数邮件服务器都安装了SMTP和POP3这两项协议,即SMTP服务器作为邮件发送服务器,POP3服务器作为邮件接收服务器。电子邮件地址的一般格式如下:username@domain-namedomain-name是电子邮件服务器的域名,username是在该服务器上注册的用户名,也即用户电子邮箱名称,用户名与域名之间用符号“@”分隔开。书写E-mail地址时要注意,地址中不能包含空格,无论是用户名、域名还是@的两侧都不能包含空格。3.SMTP协议SMTP协议的作用是:当发送方计算机与支持SMTP协议的电子邮件服务器连接时,将电子邮件由发送方计算机准确无误地传送到接收方的电子邮箱中。SMTP的一个重要特点是它能够在传送中接力传送邮件,即邮件可以通过不同网络上的主机接力式传送。SMTP一个相对简单的基于文本的协议。通过SMTP发送的所有电子邮件都是普通文本格式的,它不能直接传输图像、声音等非文本信息,但可以应用MIME标准将二进制文件编码后再通过SMTP传输。由于SMTP使用客户服务器方式,因此负责发送邮件的SMTP进程就是SMTP客户,而负责接收邮件的SMTP进程就是SMTP服务器。SMTP规定了14条命令和21种应答信息。每条命令用4个字母组成,而每一种应答信息一般只有一行信息,由一个3位数字的代码开始,后面附上(也可不附上)很简单的文字说明。3.1SMTP连接与发送SMTP是一种请求响应协议,客户端发送命令,服务器返回响应,两者通过这种方式进行交互,以完成邮件传输过程的三个阶段:建立连接、传输数据和终止连接。-客户端主动连接到服务器的25端口,建立TCP连接。服务器会发送一个应答码为220的问候报文,表示已经准备就绪。-客户端向服务器发送HELO命令,用以标识发送方的身份,HELO命令的参数必须是一个合法的主机名。如果服务器接受了连接请求,会给客户端返回一个代码为250的应答,表示可以开始报文传输。-客户端发送MAIL命令标识邮件的发送方,通过FROM参数指定发送方的电子邮件地址。如果服务器准备接收邮件,则返回代码为250的OK应答。客户端发送RCPT命令标识邮件的接收方,通过TO参数指定接收方的电子邮件地址,如果有多个接收人,可以发送多个RCPT命令。如果服务器能够识别接收人,则会返回代码为250的OK应答,否则返回代码为550的失败应答。客户端与服务器之间的协商结束,客户端发送DATA命令指示将要发送邮件数据,服务器端返回应答码为354的响应进行确认,表示可以开始邮件输入。客户端将邮件内容按行发送,邮件的末尾由客户端指定,是只有一个小数点(邮件数据结束指示器)的一行,服务器检测到邮件数据结束指示器后,返回代码为250的OK应答。-客户端发送QUIT命令终止连接。3.2SMTP命令SMTP命令和FTP命令一样,都是使用NVTASCII格式的文本,以明文传输的。SMTP简捷的原因之一是它使用的命令少,SMTP的最小实现仅需记住8种命令就够了。常用SMTP命令一览表命令描述HELO用于启动邮件传输过程MAIL用于初始化邮件传输RCPT用于标识单个邮件接收人,在MAIL命令后面可有多个RCPT命令DATA用于将邮件报文发送给服务器QUIT用于终止客户端与服务器之间的连接RSET用于中止当前的邮件事务并使两端复位VRFY用于验证指定的用户/邮箱是否存在,即验证接收方地址是否正确NOOP空操作命令3.3SMTP响应每一条SMTP命令都会返回一条SMTP响应,SMTP响应与FTP响应很相似,包含一个3位数字的应答码,后面跟着的是描述文本。SMTP应答码代码描述代码描述211系统状态或系统帮助响应500命令不可识别或语法错214帮助信息501参数语法错220服务准备就绪502命令不支持221关闭连接503命令顺序错250请求操作就绪504命令参数不支持251非本地用户,转发到forward-path550操作未执行:邮箱不可用354开始邮件输入,以CR-LF.CR-LF结束551非本地用户,请尝试forward-path421服务不可用552操作中止:存储空间不足450操作未执行:邮箱忙553操作未执行:邮箱名不正确451操作中止:本地错误554传输失败452操作未执行:存储空间不足3.4电子邮件的信息格式报文协议RFC822:Internet主机之间传送的报文是7位ASCII字符流。每个报文分成两部分:报文头(messageheader)和报文体(messagebody),两者以一空行分隔。报文头在报文体之前,它是一些控制信息,包括收方和发方的地址、日期等。RFC822对邮件最大的限制是邮件报文体是ASCII字符流,每个ASCII字符是7位。SMTP中又规定传输邮件时将8位字节的最高位清0,这样电子邮件就不能包括多国文字和多媒体信息。邮件报文格式RFC822极需扩充,提出了多用途Internet报文扩展MIME(MultipurposeInternetMailExtensions)。报文体是用户邮件内容,RFC只规定它是ASCII字符串。报文头由一系列头字段(headerfields)组成,每个头字段的形式是:字段名(field-name):字段体(field-body)一个电子邮件分为信封和内容两大部分。RFC822只规定了邮件内容中的首部(header)格式,而对邮件的主体(body)部分则让用户自由撰写。用户写好首部后,邮件系统将自动地将信封所需的信息提取出来并写在信封上。所以用户不需要填写电子邮件信封上的信息。邮件内容首部包括一些关键字,后面加上冒号。最重要的关键字是:To和Subject。电子邮件的主要结构有:-邮件头(Header)-用于分隔邮件头与邮件正文的空行-邮件正文(Body)-签名(Signature)(位于邮件末尾的可选部分)邮件头的每一行都遵循“标题域:值”的格式,邮件头示例如下:Received:fromtaurus.zsu.edu.cn(unknown[202.116.64.3])bybjmx3(Coremail)withSMTPidtYECALSfOkFDAEAD.1fortonny@tom.com;Sun,05Sep200413:10:25+0800(CST)X-Originating-IP:[202.116.64.3]Received:fromRsProxy([192.168.48.120])bytaurus.zsu.edu.cn(8.11.5/8.11.5)withSMTPidi855ABU27225fortonny@tom.com;Sun,5Sep200413:10:12+0800(CST)Message-ID:000801c49306$85c53fc0$7830a8c0@zsu.edu.cnFrom:jimmyjimmy@taurus.zsu.edu.cnTo:tonny@tom.comSubject:=?gb2312?B?z/vPog==?=Date:Sun,5Sep200413:09:27+0800MIME-Version:1.0Content-Type:multipart/alternative;boundary=----=_NextPart_000_0005_01C49349.92912D20X-Priority:3X-MSMail-Priority:NormalX-Mailer:MicrosoftOutlookExpress6.00.2800.1106X-MimeOLE:ProducedByMicrosoftMimeOLEV5.50.4522.1200邮件中常见的标题域:-Received域:邮件每经过一台主机时,就产生一个Received域,用来记录所经过主机的地址和经过时间,回复的信件可以按原路返回,而不必
本文标题:电子邮件协议浅析
链接地址:https://www.777doc.com/doc-6109569 .html