【TCP/IP】13. 邮件传输协议
13. 邮件传输协议
- 13. 邮件传输协议
- 13.1 概述
- 13.2 电子邮件地址
- 13.3 电子邮件信息格式
- 13.4 简单邮件传输协议(SMTP)
- 13.5 邮件获取协议
- 13.5.1 邮局协议版本 3(POP3)
- 13.5.2 因特网报文存取协议(IMAP4)
- 13.6 通用因特网邮件扩充(MIME)
- 本章要点
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 子类型支持附件。