电子邮件(EMail)
3个主要组成部分
- 用户代理
- 邮件服务器
- 简单邮件传输协议:SMTP
用户代理
- 又名"邮件阅读器"
- 撰写、编辑和阅读邮件
- 输入和输出邮件保存在服务器上
邮件服务器
- 邮箱中管理和维护发送给用户的邮件
- 输出报文队列保持待发送邮件报文
- 邮件服务器之间的SMTP协议:发送emmail 报文
- 客户:发送方邮件服务器
- 服务器:接收端邮件服务器
EMail:SMTP[RFC 2821]
- 使用TCP在客户端和服务器之间传送报文,端口号为25
- 直接传输:从发送方服务器到接收方服务器
- 传输的三个阶段
- 握手
- 传输报文
- 关闭
- 命令/相应交互
- 命令:ASCII文本
- 响应:状态码和状态信息
- 报文必须为7位ASCII码
邮件发送流程
举例:Alice给Bob发送报文
- Alice使用用户代理撰写邮件并发送给 bob@someschool.edu
- Alice的用户代理将邮件发送到她的邮件服务器;邮件放在报文队列中
- SMTP的客户端打开到Bob邮件服务器的TCP连接(建立TCP连接)
- SMTP客户端通过TCP连接发送Alice的邮件
- Bob的邮件服务器将邮件放到Bob的邮箱(POP3,)
- Bob调用他的用户代理阅读邮件
简单的SMTP交互
以下是两个右键服务器进行SMTP交互的流程
-
C:客户,发送方邮件服务器
-
S:服务器,接收方邮件服务器
S: 220 hamburger.edu
C: HELO crepes.fr
S: 250 Hello crepes.fr, pleased to meet you
C: MAIL FROM: alice@crepes.fr #邮件来自的邮箱
S: 250 alice@crepes.fr... Sender ok #接受成功
C: RCPT TO: bob@hamburger.edu #邮件去往的邮箱
S: 250 bob@hamburger.edu ... Recipient ok # 接受成功
C: DATA # 邮件信息
S: 354 Enter mail, end with "." on a line by itself
C: Do you like ketchup?
C: How about pickles?
C: .
S: 250 Message accepted for delivery
C: QUIT
S: 221 hamburger.edu closing connection
SMTP 总结
- SMTP使用持久连接
- SMTP要求报文(首部和主体)为7位ASCII编码
- SMTP服务器使用CRLF,CRLF决定报文的尾部
HTTP比较
- HTTP:拉(pull)
- SMTP:推(push)
- 二者都是ASCII形式的命令/响应交互、状态码
- HTTP:每个对象封装在各自的响应报文中
- SMTP:多个对象包含在一个报文中
邮件报文格式
SMTP:交换email报文的协议
RFC 822:文本交换的标准
-
首部行:如
- To:
- From:
- Subject:
与SMTP命令不同
-
主体
- 报文,只能是ASCII码字符
报文格式:多媒体拓展
- MIME:多媒体邮件扩展(multimedia mail extension), RFC 2045, 2056
- 在报文首部用额外的行申明MIME内容类型
邮件访问协议
- SMTP: 传送到接收方的邮件服务器
- 邮件访问协议:从服务器访问邮件 (3种方式)
- POP3:邮局访问协议(Post Office Protocol)[RFC 1939]
- 用户身份确认 (代理<-->服务器) 并下载
- IMAP:Internet邮件访问协议(Internet Mail Access Protocol)[RFC 1730]
- 更多特性和功能 (更复杂) ;在服务器上处理存储的报文
- HTTP:Hotmail , Yahoo! Mail等
- 方便
- POP3:邮局访问协议(Post Office Protocol)[RFC 1939]
POP3协议
用户确认阶段
- 客户端命令:
- user: 申明用户名
- pass: 口令
- 服务器响应
- +OK
- -ERR
事物处理阶段
客户端:
-
list: 报文号列表
-
retr: 根据报文号检索报文
-
dele: 删除
-
quit:关闭连接
用户确认阶段
S: +OK POP3 server ready
C: user bob
S: +OK
C: pass hungry
S: +OK user successfully logged on事物处理阶段
C: list
S: 1 498
S: 2 912
S: .
C: retr 1
S: <message 1 contents>
S: .
C: dele 1
C: retr 2
S: <message 1 contents>
S: .
C: dele 2
C: quit
S: +OK POP3 server signing off -
先前的例子使用 "下载 并删除"模式。
- 如果改变客户机,Bob不 能阅读邮件
-
"下载并保留":不同 客户机上为报文的拷贝
-
POP3在会话中是无状态的
IMAP
- IMAP服务器将每个报文 与一个文件夹联系起来
- 允许用户用目录来组织 报文
- 允许用户读取报文组件
- IMAP在会话过程中保留 用户状态:
- 目录名、报文ID与目录名 之间映射