SMTP、POP3、IMAP 有什么区别?一封邮件是怎么发出和收到的?
简化版
三个协议分工明确:SMTP 负责「发信 / 服务器之间中转」,POP3 和 IMAP 负责「从服务器收信」。记忆锚点可以放在动词上:发信用 SMTP,收信用 POP3 或 IMAP。POP3 和 IMAP 的区别:POP3 把邮件下载到本地后通常从服务器删掉(邮件在你这台设备上),适合单设备;IMAP 邮件始终留在服务器,本地只是同步一份,你在手机、电脑、网页看到的状态(已读、文件夹)完全一致,适合多设备——现在基本都用 IMAP。
详细版
| 协议 | 作用 | 方向 | 默认端口(明文/加密) |
|---|---|---|---|
| SMTP | 发送邮件、服务器间中转 | 客户端→服务器、服务器→服务器 | 25 / 465(SSL)、587(STARTTLS) |
| POP3 | 从服务器下载邮件 | 服务器→客户端 | 110 / 995(SSL) |
| IMAP | 从服务器同步邮件 | 服务器→客户端 | 143 / 993(SSL) |
POP3 vs IMAP 的核心差异:
| 维度 | POP3 | IMAP |
|---|---|---|
| 邮件存哪 | 下载到本地,服务器上常删除 | 留在服务器,本地只同步 |
| 多设备 | ❌ 状态不同步 | ✅ 已读/文件夹全同步 |
| 服务器空间 | 省(下完就删) | 占(都留着) |
| 离线阅读 | 好(都在本地) | 需缓存 |
| 只下载邮件头 | 不支持 | ✅ 支持(先看标题再决定下载正文) |
| 适用 | 单一设备、老式用法 | 多端同步,现代主流 |
一封邮件的完整旅程(alice@a.com → bob@b.com):
① Alice 的邮件客户端 ──SMTP──→ a.com 发件服务器 (投递到发件方服务器)
② a.com 服务器 ──DNS 查 b.com 的 MX 记录──→ 找到 b.com 收件服务器地址
③ a.com 服务器 ──SMTP──→ b.com 收件服务器 (服务器间中转)
④ b.com 服务器把邮件存进 Bob 的邮箱
⑤ Bob 的客户端 ──IMAP/POP3──→ b.com 服务器 (Bob 来收信)
关键边界:全程「发」的动作都是 SMTP(①②③是发/中转),只有最后 Bob「取信」(⑤)才用 POP3/IMAP。
完整版教学
一、为什么发信和收信要用不同协议
初学者最困惑的是「为什么不用一个协议搞定收发」。原因在于收和发是两件方向、机制都不同的事:
- 发信是「推(push)」——你要把邮件主动送出去,而且可能要接力中转(你的服务器 → 对方服务器)。这套「推送 + 服务器间转发」的机制就是 SMTP(Simple Mail Transfer Protocol)。
- 收信是「取(pull)」——邮件已经躺在你的邮箱服务器里,你要主动去把它拉下来看。这套「从邮箱取件」的机制是 POP3 或 IMAP。
所以邮件系统天然是「SMTP 管发和中转,POP3/IMAP 管取」的分工。你的邮件客户端(如 Outlook)里要同时配「发件服务器(SMTP)」和「收件服务器(IMAP/POP3)」,就是这个道理。
二、SMTP:邮件是怎么「接力」送到对方的
SMTP 最关键的角色是服务器之间的中转(relay)。跨域邮件不是你直接连到对方服务器,而是接力:
- 你的客户端用 SMTP 把邮件交给自己的发件服务器(如
smtp.a.com)。 - 发件服务器要把信送到
bob@b.com,它先做 DNS 查询b.com的 MX 记录(Mail eXchange,专门记录「谁负责收 b.com 的邮件」),拿到对方收件服务器地址。 - 发件服务器再用 SMTP 连上
b.com的收件服务器,把邮件交过去。 b.com服务器把邮件放进 Bob 的邮箱,等 Bob 来取。
关键点:MX 记录是邮件路由的核心——发件服务器靠查目标域名的 MX 记录,才知道该把信送到哪。这也是「邮件 + DNS」结合的经典考点。
三、POP3 与 IMAP:邮件到底存在哪,决定了一切
POP3 和 IMAP 的所有差异,根源都在「邮件主体存在哪」:
POP3 —— 邮件属于「本地」。它的设计假设是「一个人、一台电脑」:客户端连服务器,把邮件下载到本地,然后(默认)从服务器删除。邮件此后就活在你这台设备上。
- 优点:省服务器空间、离线随便看(都在本地)。
- 致命缺陷:多设备用就乱套。你在电脑上下载并删了服务器的信,手机再连就看不到那封信了;已读/未读、文件夹分类也各设备独立、不同步。
IMAP —— 邮件属于「服务器」。它的设计假设是「一个人、多台设备」:邮件始终存在服务器上,客户端只是同步一份视图。你的所有操作(已读、删除、移动到某文件夹、加星标)都同步回服务器。
- 优点:多端完全一致——手机标已读,电脑上也是已读;网页建的文件夹,客户端也看得到。还支持只下载邮件头(先看标题/发件人,需要时再拉正文和附件),省流量。
- 代价:占服务器存储(邮件都留着),离线需要本地缓存。
如今几乎全用 IMAP——因为现代人手机、电脑、网页多端收信,只有 IMAP 能保证状态一致。POP3 只在「单设备 + 想把邮件搬到本地存档」的老式场景才用。
四、邮件安全三件套:为什么邮件容易被伪造
SMTP 诞生于「大家互相信任」的早期互联网,协议本身不验证发件人身份——所以伪造发件人地址非常容易(钓鱼邮件的根源)。为此后来加了三个「反伪造 / 反垃圾」机制,面试常被追问:
- SPF(Sender Policy Framework):域名在 DNS 里声明「哪些 IP 有权代表我发信」。收件方检查来信 IP 在不在这个名单里。
- DKIM(DomainKeys Identified Mail):发件服务器用私钥给邮件签名,收件方用 DNS 里公布的公钥验签,确认邮件内容没被篡改、确实来自该域名。
- DMARC:基于 SPF 和 DKIM 的策略——告诉收件方「如果 SPF/DKIM 验证失败,该拒收还是进垃圾箱」,并可要求发送报告。
这三者都依赖 DNS 记录来发布策略和公钥,是现代邮件反钓鱼的基石。
五、加密:别再用明文端口
三个协议最初都是明文(25/110/143),密码和内容全裸奔。现在都有加密版本,配置邮箱时优先用:
- SMTP:465(SSL/TLS)或 587(STARTTLS,先明文连接再升级为加密)。25 端口如今多用于服务器间中转,客户端提交邮件推荐 587。
- POP3:995(SSL)。
- IMAP:993(SSL)。
STARTTLS 与「一上来就 SSL」的区别:STARTTLS 是在普通端口上先建明文连接、再用命令升级到 TLS;SSL 端口(465/995/993)是从连接建立就加密。两者都能加密,只是升级时机不同。
六、常见误区与追问
| 考点 | 正确口径 |
|---|---|
| SMTP | 发送邮件、服务器之间转发邮件 |
| POP3 | 客户端下载邮件,偏本地保存 |
| IMAP | 客户端同步邮箱状态,适合多端一致 |
sender client -> SMTP -> sender mail server
sender server -> SMTP -> recipient mail server
recipient client -> IMAP/POP3 -> read mail
邮件协议要分发送和收取:SMTP 管投递,IMAP/POP3 管用户取信。
- 误区:SMTP 用来收邮件。 SMTP 主要负责发送和中继投递,收取通常用 IMAP 或 POP3。
- 误区:POP3 和 IMAP 没区别。 POP3 偏下载到本地,IMAP 保留服务器状态并支持多端同步。
- 误区:邮件安全只靠登录密码。 还涉及 TLS、SPF、DKIM、DMARC、反垃圾和附件安全。
- 追问:MX 记录和 SMTP 什么关系? 发送方服务器通过 DNS MX 找到收件域的邮件服务器,再用 SMTP 投递。
- 追问:IMAP 为什么适合多设备? 邮件、文件夹、已读状态保存在服务器,多设备看到一致状态。
- 追问:STARTTLS 是什么? 在明文连接上升级到 TLS,加密后续邮件协议交互。
七、加强记忆
发信用 SMTP,收信用 POP3/IMAP。SMTP 还负责服务器间中转(靠查目标域名的 MX 记录找对方收件服务器)。POP3 与 IMAP 的根本差异在邮件存哪:POP3 下载到本地、服务器删除(单设备);IMAP 留在服务器、多端同步已读/文件夹(多设备主流,还能只下载邮件头)。SMTP 不验证发件人,反伪造靠 SPF/DKIM/DMARC(基于 DNS)。加密端口:SMTP 465/587、POP3 995、IMAP 993。