电子邮件协议
1.引入
传统的电话通信属于实时通信,
存在以下两个缺点: 电话通信的主叫和被叫双方必须同时在场。 一些不是十分紧迫的电话也常常不必要地打断人们的工作和休息。
电子邮件与传统邮政系统的寄信相似,是一种异步通信方式,这意味着用户可以在自己方便的时候发送或接收邮件,而不需要与对方实时在线沟通。并且与传统邮政信件相比,电子邮件具有以下显著优势: 传输速度快:几秒钟内即可将邮件发送到全球任何地方; 使用成本低:无论距离多远,发送邮件的成本几乎可以忽略不计; 功能强大:支持附件、图片、超链接、富文本格式(如 HTML)等丰富内容; 便于管理:可以分类、搜索、归档、转发、自动回复等,非常适合办公和长期沟通。 我们来看一下电子邮件系统。
2.邮件传输的一个误区
邮件服务器直接运行在他本地的 PC 上,理论上 发送方的邮件服务器可以与 接收方 的 PC直接通信。但这种方法存在一个重大问题: PC 必须始终保持在线:邮件服务器需要持续运行并随时接收新邮件,这对普通用户来说不现 实。大多数用户的 PC 会断电、关机或切换网络,无法保证 7x24 小时在线。 因此,实际应用中,邮件服务器通常由共享服务提供商(如腾讯邮箱、网易邮箱)托管,这些服务器全天候运行,确保邮件能被及时接收和存储。
从 发送邮件到 接收,通常分为两步:
1. 发送方的用户代理(如 QQ 邮箱客户端)通过 SMTP 或 HTTP 将邮件提交到自己的邮件服务器;
2. 发送方的邮件服务器作为 SMTP 客户端,将邮件中继到 接收方 的邮件服务器。
这种分步操作的原因包括:
网络可达性问题:如果 接收方的邮件服务器暂时不可用(如维护或网络故障),发送方的邮件服务器可以定期重试(如每 30 分钟一次),直到邮件成功送达;
责任划分:如果邮件未能成功传输,发送方可以向自己的邮件服务商(如腾讯)反馈问题,而非直接联系 接收方 的服务器。
3.电子邮件的构成
电子邮件系统的运行依赖于三个关键组件:用户代理、邮件服务器 和 邮件传输协议。
3.1用户代理
用户代理是用户用来撰写、发送、接收和管理电子邮件的工具,也称为“邮件客户端”。
常见的有:
电脑端:Outlook、Foxmail、Apple Mail;
手机端:QQ邮箱、网易邮箱大师、Gmail App;
Web端:163邮箱、QQ邮箱网页版、阿里云邮箱等。
3.2邮件服务器
邮件服务器是电子邮件系统的核心,负责接收、存储、转发和管理邮件。
每个用户都有一个“邮箱”,这个邮箱位于某个邮件服务器上;(一个邮件服务器上可能有多个邮箱)
3.3协议
电子邮件的传输依赖于一系列邮件传输协议,其中最重要的是:
SMTP(Simple Mail Transfer Protocol):用于将邮件从发送方的用户代理发送到发送方的邮件服务器,并进一步从发送方邮件服务器传输到接收方邮件服务器;
POP3(Post Office Protocol Version 3) 和 IMAP(Internet Message Access Protocol):用于从接收方到它的的邮件服务器下载或访问邮件。
4.SMTP
在因特网中,SMTP(简单邮件传输协议) 是电子邮件系统中最核心的应用层协议。它负责将邮件从发送方的邮件服务器可靠地传输到接收方的邮件服务器,是电子邮件能够在全球范围内顺利传递的关键。
SMTP 基于 TCP 协议 提供的可靠数据传输服务(默认端口25),确保邮件在传输过程中不会丢失或出错。这种可靠性对于电子邮件这样要求内容完整性的应用来说至关重要。 SMTP是单向推送协议(只能从发送方推送到接收方),拉取邮件需要其他协议支持。
SMTP使用客户/服务器方式通信,负责发送邮件的SMTP进程是SMTP客户,而负责接收邮件的SMTP进程是SMTP服务器。SMTP客户给SMTP服务器发送命令(14条),SMTP服务器收到命令后给SMTP客户发送应答(共21种)
SMTP 的运行方式可以类比为“邮局之间的邮件转运系统”。它不像我们日常使用的邮箱客户端那样用于写邮件或读邮件,而是专门用于邮件服务器之间的通信。
SMTP 是一个基于文本的协议,最初设计时只支持7 比特 ASCII 字符集。这意味着,邮件正文必须是纯文本形式,不支持直接传输图片、音频、视频等二进制数据。
在上世纪 80 年代是合理的,因为当时网络带宽有限,很少有人会通过电子邮件发送大文件。然而,在今天这个多媒体时代,这种限制就显得有些“过时”了。
相比之下,HTTP 在传输多媒体内容时就没有这种限制,可以直接传输二进制数据,这也是 HTTP在现代网络中广泛使用的原因之一。
5.SMTP连接过程
SMTP 的通信过程可以类比为两个人之间的“对话”:先打招呼,再介绍自己,然后交换信息最后礼貌告别。
以下是 SMTP 的基本步骤:
1. 建立 TCP 连接 发送方邮件服务器(作为 SMTP 客户端)尝试与接收方邮件服务器(作为 SMTP 服务器)建立 TCP 连接,端口为 25(SMTP 默认端口)。
2. 执行 SMTP 握手 双方通过一系列命令和响应进行“自我介绍”,确认通信是否可以继续。
3. 传输邮件内容 客户端发送邮件正文内容,服务器接收并存储。
4. 结束连接 邮件发送完成后,客户端发送 QUIT 命令,结束连接。
SMTP握手交互全流程 我们来看一个具体的 SMTP 通信过程示例,直观地理解其工作原理。
用户使用QQ邮箱向163邮箱发送测试邮件
,
SMTP 支持持续连接,这意味着,如果发送方服务器有多个邮件要发送给同一个接收方服务器,可以在同一个 TCP 连接上重复使用 MAIL FROM、RCPT TO 和 DATA 命令,直到所有邮件发送完毕后再发送 QUIT 命令。这种方式减少了频繁建立和断开连接的开销,提高了邮件传输效率。
6.SMTP特点
SMTP 作为电子邮件传输的核心协议,具有以下特点:
1.基于文本的协议:SMTP 使用简单的文本命令进行通信,易于调试和理解;
2.只负责传输,不负责读取:SMTP 只负责邮件从一个服务器到另一个服务器的传输,不处理用户如何阅读邮件;
3.不支持附件的直接传输:SMTP 最初设计时只支持纯文本邮件,后来通过扩展(如 MIME)才支持附件、图片等多媒体内容;
4.没有加密机制:早期的 SMTP 不加密传输内容,容易被窃听。如今通常配合 TLS 使用(称为SMTP over TLS),以增强安全性。
5.端到端的直接连接:即使发送方和接收方的邮件服务器分别位于地球两端,SMTP 也会直接在这两个服务器之间建立 TCP 连接进行通信。如果 接收 的服务器暂时不可用,邮件会保留在 发送 的服务器上,等待下一次尝试发送,而不会在中间的某个服务器上暂存。
为了适应现代网络环境,SMTP 也进行了多项扩展和改进: MIME(Multipurpose Internet Mail Extensions):多用途因特网邮件扩展,允许在邮件中包含非 ASCII 内容,如图片、音频、视频等; SMTP AUTH:支持用户身份验证,防止未经授权的邮件中转; STARTTLS:为 SMTP 通信提供加密通道,增强安全性; SPF、DKIM、DMARC:防止邮件伪造和垃圾邮件传播。
7.电子邮件的信息格式
当我们写一封信时,通常会在信纸的开头写上收件人和发件人的地址、日期、主题等信息,这些信息构成了信件的“信封”部分。
在电子邮件中,也有类似的结构,称为邮件信息格式。 电子邮件的信息格式并不是由SMTP定义的,而是在[RFC822]中单独定义的。该RFC文档已在2008年更新为[RFC 5322]。 一封电子邮件分为信封和内容两大部分。 根据 RFC 5322 的定义,电子邮件的内容又由首部和正文(主体)组成: 1. 邮件首部(Header):包含发件人、收件人、主题等元信息; 2. 邮件正文(Body):即邮件的实际内容。由用户自由撰写。 这两部分之间通过一个空行(即一个回车加换行)进行分隔。 用户根据规定填写好首部,邮件系统会自动地将首部中的信息提取出来并写在信封上,因此用户就不需要再次填写信封上的信息。 这种结构类似于 HTTP 报文格式,但专为电子邮件设计。
7.1格式具体内容
邮件首部 邮件首部由多个首部行(Header Fields)组成,每行以关键字开头,后跟冒号和值。这些首部行并不是 SMTP 协议中的命令(如 MAIL FROM 和 RCPT TO),而是邮件内容的一部分,用于描述邮件的元信息。以下是常见的首部行及其作用:
邮件正文 在首部之后,通过一个空行(即两个连续的换行符 CRLF.CRLF )与邮件正文分隔。正文可以是纯 文本,也可以通过 MIME 扩展支持图片、附件等多媒体内容。
8接收方邮件的读取
发送方通过 SMTP 将邮件发送到收取方的邮件服务器后,邮件会被存入收取方的邮箱中。
此时面临的核心问题是:如何让收取方通过本地设备(如手机或电脑)访问这些存储在远程服务器上的邮件?
邮件读取协议(POP/IMAP)
常用的邮件读取协议有以下两个:
邮局协议(Post Office Protocol,POP),POP3是其第三个版本,是因特网正式标准。 POP3是非常简单、功能有限的邮件读取协议。用户只能以下载并删除方式或下载并保留方式从邮件服务器下载邮件到用户计算机。不允许用户在邮件服务器上管理自己的邮件(例如创建文件夹、对邮件进行分类管理等)。
因特网邮件访问协议 (Internet Message Access Protocol, IMAP),IMAP4是其第四个版本,目前还只是因特网建议标准。 IMAP4是功能比POP3强大的邮件读取协议。用户在自己的计算机上就可以操控邮件服务器中的邮箱,就像在本地操控一样,因此IMAP是一个联机协议。
POP3和IMAP4都采用基于TCP连接的客户/服务器方式。POP3服务器使用熟知端口号110,IMAP4服务器使用熟知端口号143
9.基于万维网的电子邮件
现在,越来越多的用户使用基于万维网的电子邮件。
通过浏览器登录(提供用户名和密码)邮件服务器万维网网站,就可以撰写、收发、阅读和管理电子邮件。
这种工作模式用户计算机无须安装专门的用户代理程序,只需要使用通用的万维网浏览器即可。优势:无需安装额外客户端,适合多设备同步; 邮件服务器网站通常都提供非常强大和方便的邮件管理功能,用户可以在邮件服务器网站上管理和处理自己的邮件,而不需要将邮件下载到本地进行管理。
用户浏览器和邮件服务器之间不再采用SMTP和POP/IMAP协议,而是直接采用HTTP,即浏览网页的方式
例子:
电子邮件应用的工作流程:
雷雷给东东学长发邮件
1. 撰写邮件 雷雷在 QQ邮箱客户端中写好邮件内容,并输入 东东的邮箱地址(如:东东 @163.com),然后点击“发送”。
2. 邮件进入发送队列 皮皮 的邮件客户端将邮件提交给 QQ邮箱的邮件服务器,该邮件被暂存在服务器的发送队列中。
3. 发送方邮件服务器 SMTP 客户端启动 QQ邮箱服务器上的 SMTP 客户端检测到队列中有待发送的邮件,开始执行发送操作。
4. 建立 TCP 连接 SMTP 客户端尝试与东东 的邮件服务器(网易邮箱服务器)建立 TCP 连接,并进行SMTP 握手。
5. 邮件传输 握手成功后,QQ邮箱服务器通过 TCP 连接将邮件内容发送到网易邮箱服务器。
6. 邮件存入接收方邮箱 网易邮箱服务器上的 SMTP 服务器接收邮件后,将邮件存入东东 的邮箱中。
7. 用户读取邮件(采用其他协议pop3等) 当 东东 登录自己的网易邮箱账户时,他的邮件客户端(如网易邮箱网页或 App)会从网易邮箱服务器上获取这封邮件,供他阅读。