1 / 47

Internet 应用 - 电子邮件服务

Internet 应用 - 电子邮件服务. 电子邮件系统. 电子邮件系统的基本概念 电子邮件系统及其协议 报文传输代理 MTA 及 SMTP 邮件用户代理及 POP3 报文协议 RFC822 多用途 Internet 报文扩展协议 MIME. 电子邮件系统的基本概念. 1972 年 BBN 的 Ray Tomlinson 发明电子邮件系统并采用 @ 符号。电子邮件系统要求每个用户有一个 email 地址。 Internet 上 email 地址 的形式是: 用户名 @ 主机域名 这里 @ 念作“ at” ,意思为“在”。

Download Presentation

Internet 应用 - 电子邮件服务

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Internet应用- 电子邮件服务

  2. 电子邮件系统 • 电子邮件系统的基本概念 • 电子邮件系统及其协议 • 报文传输代理MTA及SMTP • 邮件用户代理及POP3 • 报文协议RFC822 • 多用途Internet报文扩展协议MIME

  3. 电子邮件系统的基本概念 • 1972年BBN的Ray Tomlinson发明电子邮件系统并采用@符号。电子邮件系统要求每个用户有一个email地址。Internet上email地址的形式是: 用户名@主机域名 这里@念作“at”,意思为“在”。 • @左边是用户名或用户所使用的电子邮箱名。邮箱所在主机通常称为邮件服务器。 • @右边是用户使用的邮件服务器所在域的域名。 • 例如清华大学的域名是tsinghua.edu.cn,所以tsg@tsinghua.edu.cn就是清华的某email地址。

  4. 电子邮件系统的基本概念(续) • 电子邮件系统投递邮件时,首先需要利用域名系统 DNS将 email 地址中的主机域名转换成邮件服务器的IP地址。为此先调用名字解析器,(1) 从主机域名查询该域的资源记录MX。例如:从域 tsinghua.edu.cn 的 DNS 资源记录 MX,可以得到邮件服务器域名mail.tsinghua.edu.cn,(2) 再查询邮件服务器的IP地址,有了IP地址就知道邮件往哪里送了。 • 若查不到MX记录,系统就将@后的主机域名作为邮件服务器域名。@mails.tsinghua.edu.cn

  5. 电子邮件系统的基本概念(续) • 电子邮件系统的一个非常有用的功能是利用所谓邮寄表 (mailing list) 向多个用户发送同一邮件。邮寄表是一组email地址并有一个组名,也称“别名(alias)”,发给该组名的邮件会自动分发给它代表的每个email地址。 • 一些邮件系统的地址簿或通讯簿(addressbook)有类似的功能。

  6. 电子邮件系统及其协议 • 电子邮件系统包括两个部分:报文传输代理MTA(Message Transfer Agent)和邮件用户代理UA(User Agent)。 • 报文传输代理MTA相当于邮局,为用户发送和接收邮件。运行报文传输代理的主机就是邮件服务器,它不间断地运行,为用户接收、发送和保存邮件。 • 邮局用户代理UA是邮件系统的用户界面,它帮助用户阅读、编辑、管理邮件。当UA按用户的命令准备好要发送的邮件后,就交给MTA。

  7. 电子邮件系统及其协议(续) • 在UNIX中,最常用的报文传输代理 MTA 是Sendmail 程序,它在后台运行,它随时准备好接收网络向本机邮箱发来的邮件,并向网上发送本机用户发出的邮件。Sendmail 安全性差,用户多时管理复杂。 • Dan Bernstein开发的 Qmail及Wietse Venema开发的Postfix,都希望提供更快、更安全、更容易管理的 MTA 来替换 Sendmail。

  8. 电子邮件系统及其协议(续) • 邮件用户代理UA既可在邮件服务器运行,也可在用户的PC机上运行,前者如 UNIX 的mail或mailx,用户的PC机可以作为 UNIX 的终端登录到邮件服务器,使用mail 编辑、发送、接收、阅读邮件;后者如Netscape Messenger 和Outlook Express,它们替你从服务器下载邮件到PC机,编辑、阅读邮件时它们独立工作,只当发送、接收邮件时才需与邮件服务器连接,这种UA称独立用户代理。 • 许多邮件服务器提供Web界面,UA...

  9. 电子邮件系统及其协议(续) • 报文传输代理之间使用简单邮件传输协议SMTP (Simple Mail Transfer Protocol) 进行通信。 • 在PC机上的独立邮件用户代理 ( 如Netscape Messenger 或 Outlook Express ) 和报文传输代理之间的通信协议是 POP3 (Post Office Protocol-Version 3) 或 IMAP4 (Internet Message Access Protocol-Version 4)。 • 所以在Internet中,邮件是以 SMTP协议传递的,到了目标邮件服务器后,再到 PC 机这最后一程是使用 POP3(或 IMAP4) 传递的。

  10. SMTP 电子邮件系统及其协议(续) Netscape Messenger Outlook Express POP3 IMAP4 POP3 IMAP4 pop server imap server pop server imap server MTA MTA

  11. 报文传输代理MTA及SMTP • Internet报文传输代理实现协议SMTP,SMTP十分简单,它只定义邮件如何从一个“邮局”传给另一个“邮局”,只规定MTA之间的命令和回答。 • MTA主要就是生成、处理、回答SMTP命令。 命令 MTA发送方 MTA接收方 回答 SMTP客户 SMTP服务器

  12. 报文传输代理MTA及SMTP(续) • 在发送邮件前,发送方要建立一条到接收方主机端口25 的TCP连接(已为SMTP服务器分配了TCP端口25)。 • 然后发送方发送生成的SMTP命令及邮件报文。 • 接收方把对命令的回答送回发送方。 • 邮件传送完毕后撤消连接。 • 发送方和接收方之间的命令和回答都是可读ASCII字符串,命令和回答都有确定的语法和语义。

  13. 报文传输代理MTA及SMTP(续) SMTP的最小实现包括七条命令: • HELO<主机域名>开始会话 • MAIL FROM:<发送者email地址>开始一次邮件事务,指出邮件发送者 • RCPT TO:<接收者email地址>指出接收者 • DATA开始邮件报文 • RSET中止当前邮件事务 • NOOP无操作 • QUIT结束会话

  14. 报文传输代理MTA及SMTP(续) 发送方发送一个邮件到接收方的过程就是它们之间的一次会话,会话分连接建立、邮件传送、连接关闭三个阶段: (1) 连接建立 • 发送方发起并建立一条到接收方的TCP连接; • 接收方回答“220 <本机域名>...”通报自己域名; • 发送方发“HELO <本机域名>”通报自己域名; • 接收方回答“250 …”接收发送方域名,双方建立起通信的初始状态,发送方就可传输邮件。

  15. 报文传输代理MTA及SMTP(续) (2) 邮件传送:发送方每传送一个邮件称为一次邮件事务,MAIL,RCPT,DATA是一个邮件事务的三部曲,也是发送一个邮件的过程。 • 发送方发“MAIL FROM:<发送者email地址>”命令; 接收方回答“250…”表示准备好接收报文, 若邮箱忙回答“450…”,若处理有错…。

  16. 报文传输代理MTA及SMTP(续) • 发送方发一条或多条命令“RCPT TO:<接收者email地址>” 指定目标邮箱地址; 对每条RCPT命令接收方回答“250…”表示正确,“550…”表示有错。 • 发送方发命令DATA; 在收到接收方的回答“354…”(表示正确)后, 发送方发邮件报文文本,文本的结束行只包含句点“.”。

  17. 报文传输代理MTA及SMTP(续) (3) 连接关闭 • 发送方发命令QUIT,接收方回答“221 <本机域名>…”后关闭TCP连接。 注意,回答主要是一个3位的十进数码: • 以4和5开头的表示有错,如语法错误等。 • 以2和3开头的表示正确。 标准对各种命令的回答数码作了详细规定。

  18. 报文传输代理MTA及SMTP(续) SMTP的限制: • SMTP规定邮件报文是7位的ASCII字符串,在传输邮件时将8位字符的最高位置“0” (虽然TCP连接支持传输8位的字符)。 • 早期的实现限制邮件报文的大小不能超过64k字节。 • 每个报文行的最大长度是1000字符。 • 一个邮件的接收者不能超过100名。

  19. 报文传输代理MTA及SMTP(续) 扩展的SMTP—ESMTP(Extended SMTP): • 扩展的SMTP增加了新命令EHLO,用EHLO代替HELO来开始一次会话。若接收方也实现了SMTP的扩展,则对EHLO命令回答“250”。 • 然后在 MAIL 命令中 FROM 后可以增加参数“BODY=8BITMIME”表示DATA后面传输8位字节的MIME报文;也可增加参数“SIZE=报文大小”(用十进制表示,单位是字节)等。

  20. SMTP的一次会话过程示例 会话是在发送方发起并建立了到接收方的TCP连接后开始的: R:220 tsinghua.edu.cn ESMTP Sendmail…Thu, 2 Sep ... S:EHLO pku.edu.cn R:250 - tsinghua.edu.cn Hello pku.edu.cn, … R:250 - 8BITMIME R:250 - SIZE

  21. SMTP的一次会话过程示例(续) S:MAIL FROM:<abc@pku.edu.cn> BODY=8BITMIME R:250 <abc@pku.edu.cn>…Sender and 8BITMIME ok S:RCPT TO:<uvw@tsinghua.edu.cn> R:250 <uvw@tsinghua.edu.cn> … Recipient ok S:DATA R:354 Enter mail, end with “.” on a line by itself

  22. SMTP的一次会话过程示例(续) S:张三:你好 S:…… S:李四 S:. R:250 KAA20017 Message accepted for delivery S:QUIT R:221 tsinghua.edu.cn closing connection

  23. 邮件用户代理及POP3 • POP3允许用户通过PC机动态地检索邮件服务器上的邮件。一般它只是下载邮件,没有很多管理操作。 • POP3采用客户/服务器模式,POP3客户程序在用户的PC机上运行,POP3服务器程序在邮件服务器上运行。 • POP3协议描述POP3客户和POP3服务器之间的通信,通信建立在TCP之上,POP3客户发命令,POP3服务器回答命令。

  24. 邮件用户代理及POP3(续) • POP3服务器启动后就在TCP端口110上侦听,准备为POP3客户服务。 • 当POP3客户希望使用POP3提供的服务时,它就向POP3服务器的端口110发起TCP连接请求,TCP连接建立后POP3会话开始。 • 首先POP3服务器向客户发送一行“欢迎”词,以后POP3会话进入第一个状态,称授权状态。

  25. 邮件用户代理及POP3(续) 授权状态: • 客户发送USER命令给出用户在邮件服务器上的邮箱名,若是合法用户,服务器回答“+OK”。 • 客户再发送PASS命令给出口令。POP3服务器确定用户是否有权访问该邮箱,若有权访问,服务器再次回答“+OK”,若是非法用户,服务器回答“-ERR”。 • USER和PASS命令用口令方式对用户进行授权验证。

  26. 邮件用户代理及POP3(续) 事务状态: • 若对用户的授权验证成功,则服务器申请资源与用户的邮箱关联,会话进入第二个状态,称为事务(transaction)状态。 • 在事务状态,服务器将存储的邮件分成一个个报文,并从1开始编号。 • 在事务状态,客户可以重复发送一些命令检索报文(RETR)、删除报文(DELE)(作删除标记)等。

  27. 邮件用户代理及POP3(续) 更新状态: • 当客户发出QUIT命令时,POP3会话从事务状态进入第三个状态,称为更新(update)状态。 • 在更新状态,所有有删除标记的报文被真正删去,最后关闭TCP连接,服务器释放在事务状态中申请的资源,POP3会话结束。

  28. POP3实现的命令

  29. POP3实现的命令(续) • 前三条命令,即USER,PASS,QUIT是在授权状态下的命令。服务器验证USER和PASS命令中的参数确定是否合法用户,若是非法用户,服务器回答“-ERR”,客户再发USER命令或QUIT命令退出会话。 • 后七条命令,包括QUIT,是在事务状态下的命令。

  30. POP3客户和服务器会话例 S:<在TCP端口110等待连接> C:<打开TCP连接> S:+OK oar pop3 server ready C:USER wrongid S:-ERR sorry, wrongid doesn’t get his mail here C:USER your_userid S:+OK your_userid is welcome here C:PASS your_password

  31. POP3客户和服务器会话例(续) S:+OK your_userid’s maildrop has 2 messages (320 octets) C:STAT S:+OK 2 320 C:LIST S:+OK 2 messages (320 octets) S:1 120 S:2 220 S:.

  32. POP3客户和服务器会话例(续) C:RETR 1 S:+OK 120 octets S:报文1的内容 S:. C:DELE 1 S:+OK message 1 deleted C:RETR 2 S:+OK 200 octets

  33. POP3客户和服务器会话例(续) S:报文2的内容 S:. C:DELE 2 S:+OK message 2 deleted C:QUIT S:+OK oar pop3 server signing off (maildrop empty) C:<关闭连接> S:<等待下一连接>

  34. POP3客户和服务器会话例(续) • POP3协议只规定用户代理如何从邮件服务器检索邮件。若POP3客户要发送邮件,则它要与邮件服务器建立一个SMTP连接,将邮件交给MTA。 • POP3用户代理有两个功能:检索邮件和发送邮件,前者用POP3协议,后者用SMTP协议。 • POP3客户也实现了SMTP客户模块,但它与 MTA上的SMTP客户模块不同…。

  35. 报文协议RFC822 • Internet主机之间传送的报文是7位ASCII字符流。 • 每个报文分成两部分:报文头(message header)和报文体(message body),两者以一空行分隔。 • 报文头在报文体之前,它是一些控制信息,包括收方和发方的地址、日期等。报文体是用户邮件内容,RFC只规定它是ASCII字符串。 • 报文头由一系列头字段(header fields)组成,每个头字段的形式是: 字段名(field-name):字段体(field-body)

  36. 报文协议RFC822(续)

  37. 报文协议RFC822(续) • 每个转发报文的MTA都加上字段 “Received:”,用 from 后跟转发主机,by 后跟接收主机及收到的时间,with 后跟传输协议 smtp 或 esmtp。 • RFC822对邮件最大的限制是邮件报文体是ASCII字符流,每个ASCII字符是7位。SMTP中又规定传输邮件时将8位字节的最高位清0,这样电子邮件就不能包括多国文字和多媒体信息。 • 邮件报文格式RFC822极需扩充,提出了多用途Internet 报文扩展MIME (Multipurpose Internet Mail Extensions)。

  38. MIME • MIME 是 RFC822 的扩展,在MIME标准中,RFC822 的报文头、报文体基本模式不变,RFC822 定义的标准头字段的语法和语义不变。 • MIME增加了几个头字段,常用的是: MIME-Version:1.0 Content-Type:类型/子类型 Content-Transfer-Encoding:7bit | 8bit |binary | base64 | quoted-printable

  39. MIME(续) • 邮件报文要使用各国文字及多媒体信息,可利用报文头字段 “Content-Type:类型/子类型”指明报文体的数据类型。MIME定义了7种数据类型。Internet 邮件的默认数据类型是 Content-Type:text/plain;charset=us-ascii • MIME定义的7种数据类型中,许多类型按其本身的格式在传输中应为8位的字符串,即二进制数据。但采用SMTP,那些数据无法正确传输,头字段 “Content-Transfer-Encoding:...” 指明数据的传输编码方式。

  40. MIME传输编码—base64 基数 64 编码 ( base64 ) : • 是根据Radix-64编码表将3个字节的二进制数据变换为4个可打印的ASCII字符(7位)。 • 3个字节24位,分为4个6位,每个6位二进制数是0~63,按 Radix-64 编码表转换成ASCII字符。 • 报文体末尾不足3字节,即只有16位或8位,就分别转换为3个或2个ASCII字符,再分别填充一个或两个“=”字符。所以当编码后的文本末尾为“=”或“= =”时,分别指示报文内容最后一组为16位或8位。

  41. Radix-64编码表

  42. MIME传输编码—quoted-printable 带引见符的可打印编码(quoted-printable):对每个字节的8位二进制数进行编码,28 =162=256,用两个十六进制数可以对它们全部进行编码。具体规则: 1. 除下列2,3,4指明的字符外,其余字符被编码成“=”后跟表示该字符值的两个十六进制数字。“=”是引见符。“=”本身就被表示为“=3D”。 2. 十进制33到126(除61外),对应可打印的ASCII字符“!”到“~”(除“=”外),仍用ASCII 编码。

  43. MIME传输编码—quoted-printable 3. 字节值为十进数9, 23 时,仍分别编码为ASCII字符<HT>,<SP>(空格),若它们出现在报文行末尾, 则按规则1编码。因有些MTA在报文行末尾填充空格或删除空格,这样可防止空格被删。 4. RFC822规定的标准行分隔符<CR><LF>仍编码为<CR><LF>。 5. Quoted-printable编码要求每个编码行不超过76字符(不包括末尾的<CR><LF>,对于太长的行就插入“=<CR><LF>”来分行。

  44. MIME传输编码 • 在传输非 ASCII 报文时,若MTA都支持传输8位字节的 MIME 报文,则传输编码采用 8bit 最简单,否则要作转换。当报文中包含大量非 ASCII 字符时,应采用base64,否则采用quoted-printable。

  45. MIME报文类型 1.text(文本):表示报文体是文本信息, 子类型有: • plain:基本子类型,表示无格式文本。 • html:表示报文体是用超文本标记语言写的。 2.message(邮件报文):表明报文体中封装有其它邮件报文。子类型有: • rfc822:基本子类型,表明报文体是按RFC822封装的报文。 • partial:定义部分报文,允许太长的报文分段。

  46. MIME报文类型(续) 3.image(图象):表示报文体是静止图象, 子类型: • jpeg:表示 jpeg 格式的压缩图象。 • gif:表示 gif 格式的压缩图象。 4.audio/basic:表示PCM编码的音频数据。 5.video/mpeg:表示mpeg格式的视频数据。 6.application(应用):表示二进制数据或需要其它应用程序解释的信息。子类型有: • octet-stream:表示二进制数据。 • msword:表示Windows的Word文档。

  47. MIME报文类型(续) 7.multipart(多部):报文体由多个不同的部分组成,每个部分有独立的报文类型。多部类型有一个重要参数,即封装边界,由它指示各部的分界。每个部分以一个封装边界开始,其余从形式上类似于一个RFC822报文。子类型有mixed;alternative等。目前在邮件用户代理上允许用户在报文中附加文件作为附件,而邮件系统实际上是将报文和此文件做成multipart,第1部分是Content-Type:text/plain…,第2部分可以是Content-Type:application/msword…。

More Related