13. 邮件传输协议
13. 邮件传输协议
13.1 概述
电子邮件系统通过多个组件和协议协作,实现邮件的发送与接收,核心是 “用户代理 - 邮件服务器 - 协议” 的协同工作。
- 系统组成与工作流程
- 三个关键组件:
- 用户代理(UA):用户与邮件系统的接口(如 Foxmail、Outlook),功能包括撰写(编辑邮件)、显示(展示收到的邮件)、处理(发送、接收、管理邮件)。
- 邮件服务器:核心构件,负责发送、接收、存储邮件,并向发件人反馈传输状态(如成功、失败)。ISP 均提供邮件服务器,默认监听端口:SMTP(25)、POP3(110)、IMAP(143)。
- 协议:SMTP(发送邮件)、POP3/IMAP(接收邮件)。
- 工作流程:
- 用户通过 UA 撰写邮件,利用 SMTP 发送到客户端邮件服务器,服务器将邮件存入缓冲队列;
- 客户端邮件服务器通过 DNS 解析目标邮箱的域名(如
yourserver.com
),找到服务器端邮件服务器,通过 SMTP 传送邮件; - 服务器端邮件服务器接收邮件后,存储在收件人的信箱(服务器上的存储空间);
- 收件人通过 UA,使用 POP3 或 IMAP 从服务器端邮件服务器获取邮件。
- 三个关键组件:
13.2 电子邮件地址
电子邮件地址是邮件传输的唯一标识,格式与结构严格定义。
- 格式
- 形式:
收信人邮箱名@邮箱所在主机的域名
,例如me@mail.njust.edu.cn
。 - 组成:
@
前:邮箱标识(注册用户名,在主机内唯一);@
后:主机域名(在因特网上唯一,如mail.njust.edu.cn
表示中国教育网南京理工大学的邮件服务器)。
- 形式:
- 唯一性
- 因域名全网唯一且邮箱名在主机内唯一,故每个电子邮件地址在因特网上唯一。
- 使用方式
- 发送时,邮件服务器先解析域名找到目标服务器;
- 邮件到达目标服务器后,再根据邮箱名将邮件存入对应信箱。
13.3 电子邮件信息格式
电子邮件由 “信封” 和 “内容” 组成,内容又分为首部和信体,格式由 RFC 822 规范。
- 整体结构
- 信封:由邮件系统自动生成,包含发送方、接收方服务器信息(用户无需填写);
- 内容:
- 首部:多行 “关键字:信息” 结构,描述邮件属性(如发送方、接收方、日期等);
- 信体:用户撰写的邮件正文,无格式限制。
- 首部关键字(核心)
- 基础关键字:
From
:发信人邮箱地址(自动填入);To
:收信人邮箱地址(可多个);Date
:发送日期(自动填入);Subject
:邮件主题(便于查找)。
- 扩展关键字:
Reply-To
:回复地址(若与 From 不同);Cc
(抄送)/Bcc
(暗抄送):抄送地址(Bcc 收件人不可见);Message-ID
:本邮件的唯一标识;In-Reply-To
:回复的目标邮件的 Message-ID;References
:来回回复中所有前置邮件的 Message-ID;Sender
:负责发送邮件的代理邮箱(区别于 From,From 是邮件作者)。
- 自定义关键字:以
X-
为前缀(如X-Priority
表示优先级); - 重发字段:以
Resent-
为前缀(如Resent-Date
、Resent-To
),保留原邮件头并添加重发信息。
- 基础关键字:
13.4 简单邮件传输协议(SMTP)
SMTP 是邮件发送的核心协议,定义了邮件从客户端服务器到服务器端服务器的传输规则。
- 核心目标:可靠、高效地传送邮件。
- 命令与响应
- 命令:4 个字母组成(可带参数),用于触发服务器操作,如:
HELO <主机名>
:初始化会话(不支持认证);EHLO <主机名>
:扩展 HELO(支持用户认证);MAIL FROM: <发件人地址>
:指定发件人;RCPT TO: <收件人地址>
:指定收件人(可多个);DATA
:开始传输邮件内容(以<CR><LF>.<CR><LF>
结束);QUIT
:终止连接。
- 响应:3 位数字代码 + 文字说明,表示命令执行结果,如:
220
:服务就绪;250
:操作成功;354
:准备接收邮件内容;550
:邮箱不存在。
- 命令:4 个字母组成(可带参数),用于触发服务器操作,如:
- 通信过程(三阶段)
- 阶段 1:连接建立
- 客户端服务器(SMTP 客户)发现缓冲队列有邮件,通过 TCP 连接目标服务器(SMTP 服务器,端口 25);
- 服务器返回
220 Service ready
; - 客户端发送
EHLO/HELO
+ 主机名,服务器返回250 OK
表示就绪。
- 阶段 2:邮件传送
- 客户端发送
MAIL FROM: <发件人>
,服务器返回250 OK
; - 客户端发送
RCPT TO: <收件人>
(多个收件人需多次发送),服务器返回250 OK
(或550
表示收件人不存在); - 客户端发送
DATA
,服务器返回354 End data with <CR><LF>.<CR><LF>
; - 客户端发送邮件内容(首部 + 信体),最后以
<CR><LF>.<CR><LF>
结束; - 服务器返回
250 OK
表示接收成功。
- 客户端发送
- 阶段 3:连接释放
- 客户端发送
QUIT
; - 服务器返回
221 BYE
; - 双方通过四次握手释放 TCP 连接。
- 客户端发送
- 阶段 1:连接建立
13.5 邮件获取协议
用户通过 POP3 或 IMAP 从服务器端邮件服务器获取邮件,两者功能不同但均基于客户 - 服务器模型。
13.5.1 邮局协议版本 3(POP3)
POP3 是简单的邮件读取协议,适用于 “下载后离线处理” 场景。
- 核心功能:从服务器下载邮件到本地,支持基本的邮件管理(如删除)。
- 命令与响应
- 命令:3-4 个字母,如:
USER <用户名>
/PASS <口令>
:身份认证;STAT
:获取邮箱内邮件总数和总大小;LIST [序号]
:列出邮件序号及大小(无序号则列所有);RETR <序号>
:下载指定邮件;DELE <序号>
:标记指定邮件为删除(断开连接后生效);QUIT
:终止连接并执行删除标记。
- 响应:
+OK
(成功)或-ERR
(失败)+ 说明信息。
- 命令:3-4 个字母,如:
- 工作模式
- 删除模式:邮件下载到本地后,服务器不再保存;
- 保持模式:邮件下载后仍保留在服务器上。
- 操作阶段
- 鉴别状态:客户端发送
USER
/PASS
完成认证; - 处理状态:客户端执行
STAT
/LIST
/RETR
/DELE
等操作; - 更新状态:客户端发送
QUIT
,服务器删除标记为DELE
的邮件,释放连接。
- 鉴别状态:客户端发送
13.5.2 因特网报文存取协议(IMAP4)
IMAP4 功能更强大,支持 “在线管理服务器端邮件”,适用于多设备同步场景。
-
工作模式
- 离线模式:下载邮件后离线处理(类似 POP3);
- 在线模式:直接在服务器上操作邮件(如阅读、删除、移动);
- 断连模式:临时断开连接,重连后恢复之前的操作状态。
-
与 POP3 的异同
-
相同点:均为客户 - 服务器模型,邮件先存储在服务器,需认证后访问。
-
不同点:
特性 POP3 IMAP4 邮件存储 下载后通常删除服务器副本 默认保留服务器副本 操作位置 本地(脱机协议) 服务器(联机协议) 功能 仅支持下载、删除 支持创建文件夹、移动邮件、部分下载等
-
13.6 通用因特网邮件扩充(MIME)
MIME 是 SMTP 的补充协议,解决 SMTP 的局限(如仅支持 7 位 ASCII、无法传输二进制文件等)。
-
SMTP 的局限
- 仅支持 7 位 ASCII 码,无法传输非英文文字、二进制文件(如图片、可执行程序);
- 对邮件长度有限制;
- 部分实现不兼容 RFC 821 标准。
-
MIME 的核心作用:在不改变 SMTP 的前提下,扩展邮件格式,支持非 ASCII 数据传输。
-
MIME 的组成
-
- 5 个新首部字段:
MIME-Version: 1.0
:标识 MIME 版本(必需);Content-Description
:邮件内容说明(如 “图片附件”);Content-Id
:邮件唯一标识符;Content-Transfer-Encoding
:内容传输编码方式(如 base64);Content-Type
:内容类型(如text/plain
、image/gif
)。
-
- 内容类型:定义邮件主体的格式,由 “类型 / 子类型” 组成,标准类型包括:
text
:文本(如text/plain
纯文本、text/html
网页);image
:图像(如image/gif
、image/jpeg
);audio
:音频(如audio/basic
);video
:视频(如video/mpeg
);application
:应用程序数据(如application/pdf
、application/msword
);message
:邮件相关(如message/rfc822
表示嵌套邮件);multipart
:多部分内容(如multipart/mixed
带附件的邮件)。- 自定义类型:以
x-
为前缀(如application/x-exe
)。
-
- 内容传输编码:将非 ASCII 数据转换为 SMTP 可传输的格式,主要包括:
7bit
:7 位 ASCII 码(短行,每行≤1000 字符,默认);quoted-printable
:适用于含少量非 ASCII 的文本(如汉字),非 ASCII 字符用=十六进制值
表示(如 “=E4=BD=A0” 表示 “你”);base64
:适用于二进制文件(如图片、程序),将 24 位数据分为 4 个 6 位组,映射为 64 个可打印字符(A-Z、a-z、0-9、+、/),不足补 0 并加=
(如 3 字节→4 字符,2 字节→3 字符 + 1=
,1 字节→2 字符 + 2=
)。
-
-
multipart 子类型(重要扩展)
-
允许邮件包含多个独立部分(如文本 + 附件),通过
boundary
关键字定义分隔符,格式示例:Content-Type: multipart/mixed; boundary=qwertyuiop --qwertyuiop Content-Type: text/plain 正文内容... --qwertyuiop Content-Type: image/gif Content-Transfer-Encoding: base64 [图片的base64编码] --qwertyuiop--
-
常见子类型:
mixed
:按顺序包含多个独立部分(如正文 + 附件);alternative
:同一内容的多种格式(如纯文本 + HTML);parallel
:需同时显示的部分(如视频 + 音频);digest
:包含多个邮件(如邮件列表)。
-
本章要点
- 电子邮件系统由用户代理、邮件服务器和协议(SMTP、POP3/IMAP)组成,流程为 “发送→中转→接收”;
- 电子邮件地址格式为
邮箱名@域名
,全网唯一,用于定位收件人信箱; - 邮件内容含首部(关键字定义属性)和信体(正文),首部格式由 RFC 822 规范;
- SMTP 负责发送邮件,通过 “连接建立→邮件传送→连接释放” 三阶段完成,依赖命令 - 响应机制;
- POP3(离线下载)和 IMAP4(在线管理)用于接收邮件,IMAP 功能更丰富;
- MIME 扩展 SMTP,支持非 ASCII 数据(如二进制、多语言),通过新首部、内容类型和编码实现,核心是 multipart 子类型支持附件。