《邮件传输协议》PPT课件.ppt
第十一讲 邮件传输协议,2,Internet电子邮件系统,如下几个部分构成Internet电子邮件系统:用户代理(User Agent:UA)用户和邮件服务器之间的接口程序邮件传输代理(Mail Transport Agent:MTA)从用户代理接收消息从接收消息中获取目的地址发送邮件到目的邮件服务器接收邮件,发送给本地用户工作过程:UA MTA MTA UA,3,Internet电子邮件示意图,4,Internet邮件系统实例,5,Internet的邮件协议,主要有三种:SMTP服务器端口:25POP3服务器端口:110IMAP服务器端口:143,6,邮件传输协议概述,邮件传输协议概述:SMTP标准协议,STD-10,推荐标准两种主机之间的邮件交换标准RFC 821MAIL标准协议,STD-11,推荐标准关于邮件消息格式的标准RFC 822、RFC 1049DNS-MX标准协议,STD-14,推荐标准使用域名作为邮件路由的标准RFC 974,7,SMTP,狭义的SMTP是指STD-10/RFC 821主要特点:传送邮件时采用端到端而不是储存转发邮件内容为7位的ASCII文本数据邮件网关/中继:SMTP虽然支持的是端到端,但实际中可能存在中间主机称为网关或中继SMTP端到端有主机到主机、主机到网关、网关到网关、网关到主机四种,8,SMTP扩展,SMTP的缺陷:不支持非英文文本和非文本数据解决办法有两种:多用途Internet邮件扩充协议(MIME)SMTP服务扩展协议,9,MIME概要,MIME概要:定义了在MAIL协议定义的邮件信封中,把非英文文本和二进制数据编码为7位ASCII文本的机制。相关RFC文档:RFC 2045RFC 2049,10,SMTP服务扩展协议概要,SMTP服务扩展协议概要:定义了扩展RFC 821限制以外的SMTP能力的机制RFC 1869:SMTP服务扩展协议RFC 1652:8位MIME传输SMTP服务扩展协议并不能传输任意的二进制数据RFC 1870:消息大小声明SMTP服务扩展协议,11,邮件地址,地址格式:邮箱域名如:别名:“姚丹霖”收件人列表:“zs”,“ww”,12,电子邮件消息格式,两大部分:信封(envelop)一个发件人(Originator)地址邮件提交模式一个或多个收件人(Recipient)地址内容(Content)消息头(header)“字段名:字段值”文本行序列以一个空行标识消息头的结束消息体(body)ASCII字符的文本行序列以一个仅含“.”的单独行结束,13,消息头格式(1),14,消息头格式(2),15,SMTP通信模型,16,SMTP数据流,17,MIME对MAIL的扩展,涉及到三个方面的扩展:提供了一种可以在邮件中附加多种不同编码文件的方法继续使用RFC 822的形式,但对消息主体增加结构,并为非ASCII消息定义编码规则定义了5种MIME头部字段,可用于:正规的RFC 822消息头中Multipart中的MIME消息体头部,18,MIME增加的消息头部,MIME增加了5种消息头字段:MIME-Version:标识MIME版本,当前该字段值必须为“1.0”Content-Type:消息类型Content-Transfer-Encoding:消息主体在传送时的编码方案Content-Description:对消息内容加以说明的可阅读的字符串Content-ID:消息的唯一标识符,19,Content-Type(1),一般语法结构:Content-Type:type/subtype;parameter=value;parameter=valueTextPlain:未格式化的文本Richtext:含有简单格式化命令的文本ImageGif:gif格式的图片Jpeg:jpeg格式的图片AudioBasic:64kbit/s的律音频,20,Content-Type(2),VideoMpeg:MPEG格式的视频ApplicationOctet-Stream:不间断的字节序列PostScript:PostScript格式可打印文档MessageRfc822:MIME RFC 822消息Partial:消息被分割以便传输External-Body:消息通过网络获取,21,Content-Type(3),MultipartMixed:无顺序的若干个独立的部分Alternative:不同格式的同一消息Parallel:必须同时浏览的各个部分Digest:多条消息封装为一个复合消息,22,Content-Transfer-Encoding,编码的目的:消除非安全字符,安全字符为AZ az 09()+,-./:=?共73个MIME定义了五种编码:7-bit8-bitBinaryQuoted-PrintableBase64,23,Quoted-Printable编码(1),基本思想:用ASCII字符的十六进制表示法来表示非邮件安全的字符引入软换行符以保持消息中的所有行的长度小于或等于76个字符,24,Quoted-Printable编码(2),编码规则:除换行序列(0 x0D0A)以外的所有字符都可以表示为:=XX,其中XX是两个大写的十六进制数字的ASCII字符从0 x210 x7E范围内除0 x3D(=)外的任何字符,可以表示为ASCII字符0 x09和0 x20除非是一行的最后一个字符,否则都可以表示为ASCII字符,25,Quoted-Printable编码(3),非换行序列的数字序列0 x0D0A必须按规则1编码为:=0D=0A编码后的行不能大于76个字符(不包括换行回车)。如果大于76个字符,则应该在第75个字符处或第75个字符之前插入软换行符0 x3D0D0A(=0D0A),26,Base64编码(1),基本思想:从73个安全字符中选用64个(这便是编码算法Base64的由来),与所有的6位二进制(十进制063)建立一一对应关系将输入数据看成二进制流,每6位二进制作为一个分组,转换为对应的64个安全的ASCII字符,27,Base64编码(2),28,Base64编码(3),Base64与64个安全字符之间的对应关系:025 对应于 AZ2651 对应于 az5261 对应于 0962 对应于+63 对应于/如果输入数据流不是3字节的倍数,最后1个或2个字节应特殊处理。,29,Base64编码(4),最后为1个字节,编码后的4字节:第一字节不变第二字节低四位填充二进制0第三和第四字节替换为ASCII字符=最后为2个字节,编码后的4字节:第一字节和第二字节不变第三字节低两位填充二进制0第四字节替换为ASCII字符=由填充的=的个数可以计算出输入数据的模3长度,30,消息头中使用非ASCII字符,如果消息头需要其他字符集,则用经过编码的字符,采用如下格式:=?charset?encoding?word?=charset:字符集名称encoding:B:Base64Q:Quoted-Printable,但0 x20编码为_word:编码以后的文本字符串如:Subject:问候!则:Subject:=?gb2312?B?zsq68qOh?=,31,思考题,Internet电子邮件系统包括哪些组成部分?各自有什么功能?采用SMTP协议,用户通过UA可以直接访问邮箱吗?为什么?如果不能,那么当只有SMTP协议时,如何访问邮箱?STD-10/RFC 821规定的SMTP有哪些特点?有哪些缺陷?如何克服这些缺陷?基于DNS实现SMTP交换时,DNS中需要增加什么类型的资源纪录?请举例说明。当使用别名时,邮件地址应该如何表示?简要描述SMTP电子邮件消息格式?MIME对MAIL进行了哪些扩展?描述Quoted-Printable编码的基本思想和编码规则。给出采用Base64对0 xB1B2B1C231323234编码后的ASCII文本。举例说明为了在消息头使用其他字符集,应该如何处理?,