目录
1. 电子邮件系统及组成结构
1.1 电子邮件
1.2 电子邮件系统的组件
2. SMTP(邮件发送协议)
2.1 SMTP的特征
2.2 SMTP的基本操作
2.3 SMTP协议的基本流程
2.4 SMTP交互与应答
2.5 SMTP与HTTP的对比
3. 邮件报文格式与MIME
3.1 电子邮件格式
3.2 多用途网际邮件扩充-MIME
4. 邮件访问协议
4.1 POP3
4.2 IMAP
4.3 基于Web的电子邮件
1. 电子邮件系统及组成结构
1.1 电子邮件
电子邮件自因特网诞生以来已经成为最为流行的应用程序,时至今日,仍然是最为重要和实用的互联网应用之一
与普通邮件一样,电子邮件是一种异步通信方式,不像电话等通信方式必须通信双方同时在场,发送方可以在任意时间发送邮件,接收方也可以在任意时间接收邮件
电子邮件较普通邮件更为快速而且易于分发,价格便宜。现代电子邮件具有许多强大的特性,包括具有附件、超链接、HTML格式文本和图片的报文
1.2 电子邮件系统的组件
一个电子邮件系统的组成构件
主要有三个组成部分:
-
用户代理(user agents,UA)
-
邮件服务器(mail servers)
-
简单邮件传输协议(Simple Mail Transfer Protocol,SMTP)
电子邮箱的工作方式和寄快递类似
- 首先找一个跑腿小哥(相当于用户代理)帮你去寄东西,你要先把发件人收件人信息填好(邮箱地址)
- 跑腿小哥将你的东西拿到寄件处(邮件服务器)准备邮寄
- 寄件处帮你把物品寄出去,通过物流(相当于传输协议)运往目的地
- 物品到达收件人的寄件处(对方的邮件服务器)
- 收件人也叫了一个跑腿小哥(对方的用户代理)将东西取回来
用户代理:用户和电子邮件系统的接口
用户代理简单来说就是一个程序,如QQ邮箱、Outlook等。通常具有撰写、显示和处理邮件的功能
邮件服务器:用于发送和接受邮件,先发信人报告邮件传送的情况 ,一个邮件服务器可能有多个代理
是电子邮件体系结构的核心。它采用C/S结构, 但它必须要能够同时充当服务器和客户端
邮件服务器有两个功能:
- 邮箱:存储发给该用户的Email
- 消息队列(message queue):存储等待发送的Email
简单邮件传输协议:用于完成邮件在邮件服务器之间的传输
SMTP是因特网电子邮件中主要的应用层协议,邮件服务器之间传递消息所使用的协议
一个典型的邮件发送的例子是:
- 发送方通过用户代理将邮件传输到A用户的邮件服务器
- 再由A的邮件服务器传输到B的邮件服务器
- 然后该邮件被分发到接受方的邮箱中
通常,如果发送方的服务器不能完成邮件的传输,那么邮件就在发送方的邮件服务器的消息队列中排队,一段时间后(一般是30分钟)再尝试发送
2. SMTP(邮件发送协议)
2.1 SMTP的特征
SMTP协议定义在[RFC 5321]中,用于从发送方的邮件服务器发送报文到接受发的邮件服务器,它最典型的特征有:
- 使用TCP进行email消息的可靠传输
- 端口25
- 传输过程的三个阶段——握手、消息传输、关闭
- Email消息只能包含7位ASCII码
-
使用命令/响应交互模式
命令(command): ASCII文本
响应(response): 状态代码和语句
2.2 SMTP的基本操作
举一个例子来描述SMTP的基本操作,假设左边的用户是Alice,右边的用户是Bob:
- Alice首先通过她的用户代理写了一封邮件,并且在邮件中填上Bob的邮件地址
- 然后这封邮件被用户代理发送到Alice的邮件服务器上,这一过程中这封邮件需要在服务器中排队
- Alice邮件服务器上的SMTP客户端在报文队列中发现有邮件要发送,与Bob的邮件服务器建立一条TCP连接
- 经过一些SMTP握手后,SMTP客户端通过该TCP连接发送邮件
- 邮件被传送到Bob的邮件服务器上
- Bob随时可以来读取邮件
值得注意的是:
SMTP一般不使用中间邮件服务器发送邮件,也就是说即使邮件的发送者和接收者相距再远,中间所隔的网络再复杂,SMTP也总是倾向于建立起一条直连发送方和接受方的TCP连接
2.3 SMTP协议的基本流程
SMTP将一个报文从发送邮件服务器传送到接收邮件服务器的过程:
1️⃣ 客户SMTP(运行在发送邮件服务器主机上)在25号端口,建立一个到服务器SMTP(运行在接受邮件服务器主机上)的TCP连接
2️⃣ SMTP的客户和服务器在传输信息前要向对方“打招呼并先介绍自己”,在SMTP的握手阶段,SMTP客户指示发送方的邮件地址和接受发的邮件地址SMTP的客户和服务器彼此介绍后,客户发送报文
3️⃣ 如果SMTP客户还有别的邮件要发送到这台服务器,就继续发送,否则关闭TCP连接
2.4 SMTP交互与应答
SMTP交互与应答整体过程
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)