3个主要组成部分:
- 用户代理
- 邮件服务器
- 简单邮件传输协议:SMTP
用户代理
- 又名 “邮件阅读器”
- 撰写、编辑和阅读邮件
- 如Outlook、Foxmail
- 输出和输入邮件保存在服务器上
邮件服务器
- 邮箱中管理和维护发送给用户的邮件
- 输出报文队列保持待发送邮件报文
- 邮件服务器之间的SMTP协议:发送email报文
- 客户:发送方邮件服务器
- 服务器:接收端邮件服务器
SMTP [RFC 2821]
SMTP是因特网电子邮件中主要的应用层协议。它使用TCP可靠数据传输服务,从发送方的邮件服务器向接收方的邮件服务器发送邮件。像大多数应用层协议一样,SMTP也有两个部分:运行在发送方邮件服务器的客户端和运行在接收方邮件服务器的服务器端。 每台邮件服务器上既运行SMTP的客户端也运行SMTP的服务器端。
- 使用TCP在客户端和服务器之间传送报文,端口号为25
- 直接传输:从发送方服务器到接收方服务器
- 传输的3个阶段
- 握手
- 传输报文
- 关闭
- 命令/响应交互
- 命令:ASCII文本
- 响应:状态码和状态信息
- 报文必须为7位ASCII码
假设Alice想给Bob发送一 封简单的ASCII报文。
1) Alice调用她的邮件代理程序并提供Bob的邮件地址(例如bob@ someschool. edu), 撰写报文,然后指示用户代理发送该报文。
2) Alice的用户代理把报文发给她的邮件服务器,在那里该报文被放在报文队列中。
3) 运行在Alice的邮件服务器上的SMTP客户端发现了报文队列中的这个报文,它就创建一个到运行在Bob的邮件服务器上的SMTP服务器的TCP连接。
4) 在经过一些初始SMTP握手后,SMTP客户通过该TCP连接发送Alice的报文。
5) 在Bob的邮件服务器上,SMTP的服务器端接收该报文。Bob的邮件服务器然后将 该报文放入Bob的邮箱中。
6) 在Bob方便的时候,他调用用户代理阅读该报文
总结:
- SMTP使用持久连接
- SMTP要求报文(首部和主体)为7位ASCII编 码
- SMTP服务器使用CRLF.CRLF决定报文的尾部
HTTP比较:
- HTTP:拉(pull)
- SMTP:推(push)
- 二者都是ASCII形式的命令/响应交互、状态码
- HTTP:每个对象封装在各自的响应报文中
- SMTP:多个对象包含在一个报文中
邮件报文格式
多媒体扩展
-
MIME:多媒体邮件扩展(multimedia mail extension), RFC 2045, 2056
-
在报文首部用额外的行申明MIME内容类型
邮件访问协议 -
SMTP: 传送到接收方的邮件服务器
-
邮件访问协议:从服务器访问邮件
- POP:邮局访问协议(Post Office Protocol)[RFC 1939]
- 用户身份确认 (代理<–>服务器) 并下载
- IMAP:Internet邮件访问协议(Internet Mail Access Protocol)[RFC 1730]
- 更多特性 (更复杂)
- 在服务器上处理存储的报文
- POP:邮局访问协议(Post Office Protocol)[RFC 1939]
-
HTTP:Hotmail , Yahoo! Mail等
- 方便
POP3
POP3按照三个阶段进行工作:特许(authorization)、事务处理以及更新。
在第一个阶段即特许阶段,用户代理发送(以明文形式)用户名和口令以鉴别用户。
在第二个阶段即事务处理阶段,用户代理取回报文;同时在这个阶段用户代理还能进行如下操作,对报文做删除标记,取消报文删除标记,以及获取邮件的统计信息。
在第三个阶段即更新阶 段,它出现在客户发出了 quit命令之后,目的是结束该POP3会话;这时,该邮件服务器删除那些被标记为删除的报文。
在POP3的事务处理过程中,用户代理发出的命令:
+OK (有时后面还跟有服务器到客户的数据),被服务器用来指示前面 的命令是正常的;
-ERR 被服务器用来指示前面的命令出现了某些差错。
特许阶段有两个主要的命令: user < user name >和pass < password >
在特许阶段以后用户代理仅使用四个命令 list、retr. dele 和quit
IMAP
IMAP服务器把每个报文与一个文件夹联系起来;当报文第一次到达服务器时,它 与收件人的INBOX文件夹相关联。收件人则能够把邮件移到一个新的、用户创建的文 件夹中,阅读邮件,删除邮件等。IMAP协议为用户提供了创建文件夹以及将邮件从一个文件夹移动到另一个文件夹的命令。IMAP还为用户提供了在远程文件夹中查询邮件 的命令,按指定条件去查询匹配的邮件。值得注意的是,与POP3不同,IMAP服务器维护了 IMAP会话的用户状态信息,例如,文件夹的名字以及哪些报文与哪些文件夹相 关联
IMAP
- IMAP服务器将每个报文与一个文件夹联系起来
- 允许用户用目录来组织报文
- 允许用户读取报文组件
- IMAP在会话过程中保留用户状态:
- 目录名、报文ID与目录名
之间映射
- 目录名、报文ID与目录名