Email System
电子邮件系统的组成
电子邮件(E-mail)是因特网上最早流行、目前仍最重要和最实用的应用之一。
电子邮件系统采用客户/服务器方式,由三个主要构件组成:
| 构件 | 角色 | 说明 |
|---|---|---|
| 用户代理(UA) | 用户接口 | 用户与电子邮件系统的接口,即邮件客户端软件。用于撰写、发送、接收和阅读邮件 |
| 邮件服务器 | 基础设施 | 发送和接收邮件,维护用户邮箱。包含大量邮箱和待转发的邮件缓存 |
| 协议 | 通信规则 | 邮件发送协议(如 SMTP)和邮件读取协议(如 POP3、IMAP4) |
电子邮件的基本收发过程
电子邮件的传送不是发送方用户代理直接发送到接收方用户代理,而是经过邮件服务器的中转:
- 发送方使用用户代理通过 SMTP 将邮件发送给发送方邮件服务器。
- 发送方邮件服务器通过 SMTP 将邮件发送给接收方邮件服务器。
- 接收方在方便的时候,使用用户代理通过 POP3(或 IMAP4)从接收方邮件服务器读取邮件。
这个过程类似于传统邮政:发件人把信投入邮箱 → 邮局分拣转发 → 收件人到邮局取信。电子邮件的”取信”是由接收方主动进行的,不是被动等待。
电子邮件的信息格式
电子邮件的信息格式由 RFC 5322 定义(原 RFC 822),它规定一个电子邮件由信封和内容两部分构成,内容又由首部和主体两部分构成:
- 信封:包含收件人和发件人的电子邮件地址。用户填写好首部后,邮件系统自动提取信息写入信封。用户不需要手动填写信封。
- 首部:包含一系列关键字,每行一个关键字加冒号:
From:发件人电子邮件地址(通常由邮件系统自动填入)。To:一个或多个收件人电子邮件地址。Cc:抄送人电子邮件地址。抄送人收到邮件后可看可不看、可回可不回。Subject:邮件主题,反映邮件的主要内容。
- 主体:邮件的正文内容,由用户自由撰写。
To 和 Subject 是最重要的两个关键字,往往是必填项。
MIME:多用途因特网邮件扩展
SMTP 有一个根本限制:只能传送 7 位 ASCII 码文本数据,不能传送:
- 可执行文件或其他二进制对象。
- 带有图片、音频或视频数据的多媒体邮件。
- 非英语国家的文字(中文、俄文、带有重音符号的法文或德文等)。
多用途因特网邮件扩展(MIME)就是为解决这个问题而提出的。
MIME 的核心作用:将非 ASCII 码数据转换为 ASCII 码数据后再用 SMTP 传送,接收方用 MIME 进行逆转换还原。
MIME 主要包括三方面的扩展:
- 新增 5 个邮件首部字段,提供有关邮件主体的信息(如 MIME 版本、内容类型、内容传送编码等)。
- 定义了许多邮件内容的格式,对多媒体电子邮件的表示方法进行标准化。
- 定义了传送编码,可对任何内容格式进行转换,而不会被邮件系统改变。
MIME 不仅用于 SMTP,也用于后来同样面向 ASCII 码字符的 HTTP。
SMTP:邮件发送协议
简单邮件传送协议(SMTP)是电子邮件系统中的发送协议,采用 C/S 方式,使用 TCP 端口 25。
SMTP 的”推”(push)操作体现在:
- 发送方用户代理 → 发送方邮件服务器(推)。
- 发送方邮件服务器 → 接收方邮件服务器(推)。
SMTP 基本工作过程
SMTP 客户与服务器建立 TCP 连接后,通过一系列命令-应答交互完成邮件发送:
| 步骤 | 命令(客户 → 服务器) | 应答(服务器 → 客户) | 含义 |
|---|---|---|---|
| 1 | — | 220 服务就绪 |
建立 TCP 连接后服务器主动推送 |
| 2 | HELO 客户域名 |
250 OK |
客户表明身份 |
| 3 | MAIL FROM: <发件人地址> |
250 OK |
告知邮件来自谁 |
| 4 | RCPT TO: <收件人地址> |
250 OK |
告知邮件发给谁 |
| 5 | DATA |
354 开始接收 |
客户准备发送邮件内容 |
| 6 | 邮件内容(含首部和主体) | — | 客户发送邮件正文 |
| 7 | <CRLF>.<CRLF>(结束符) |
250 OK |
客户标记邮件结束 |
| 8 | QUIT |
221 关闭连接 |
客户请求释放 TCP 连接 |
邮件读取协议:POP3 与 IMAP4
邮件发送用 SMTP(推),邮件读取用 POP3 或 IMAP4(拉)。这两个都是拉(pull)协议。
| 维度 | POP3 | IMAP4 |
|---|---|---|
| 端口 | TCP 110 | TCP 143 |
| 标准状态 | 因特网正式标准 | 因特网建议标准 |
| 能力 | 简单、功能有限 | 功能强大 |
| 工作方式 | 下载到本地,有两种方式 | 联机协议,在服务器端操作邮件 |
| 服务器端管理 | 不支持(下载后本地操作) | 支持:创建文件夹、分类管理、搜索等 |
| 离线访问 | 下载后可在离线状态下阅读 | 需联网(联机操作) |
POP3 的两种工作方式:
- 下载并删除:邮件下载到本地后,从服务器邮箱中删除。换一台计算机就无法看到已读邮件。
- 下载并保留:邮件下载到本地后,在服务器上保留副本。多设备可反复获取同一封邮件。
IMAP4 的优势:用户在自己的计算机上就可以操控邮件服务器中的邮箱(创建文件夹、对邮件分类、移动邮件等),就像在本地操控一样。IMAP4 是联机协议——如果未联网,则不能操作服务器上的邮件。
基于万维网的电子邮件
现在越来越多的用户使用基于万维网的电子邮件(如 Gmail、网易邮箱等)。
两个邮箱位于同一邮件服务器时(例如用户 A 和 B 的邮箱都由图中的同一台网易邮件服务器管理):
- 用户 A 使用浏览器登录,撰写并发送邮件 → HTTP。
- 用户 B 使用浏览器登录,读取收到的邮件 → HTTP。
- 用户与该邮件服务器之间使用 HTTP;邮件在服务器内部投递,不需要跨邮件服务器的 SMTP,也不需要浏览器使用 POP3。
“同一服务商”不必然等于“同一邮件服务器”。若服务商内部由多台邮件服务器分工,服务器之间仍可能经过邮件传送过程;判断时应看两个邮箱是否由同一服务器直接管理。
不同服务商之间的邮件收发(如网易用户向 Gmail 用户发邮件):
- 用户 A 使用浏览器登录,撰写并发送 → HTTP。
- A 的邮件服务器使用 SMTP 将邮件发送给 B 的邮件服务器。
- 用户 B 使用浏览器登录,读取收到的邮件 → HTTP。
无论哪种方式,不同邮件服务器之间的中转始终使用 SMTP。万维网邮件只是把用户到服务器这一段从 SMTP/POP3 替换成了 HTTP。