多彩编程 多彩编程MZPH · CODE BLOG
ARTICLE DETAIL

文章详情

深耕前端与后端开发技术的一线实战笔记与踩坑复盘。

SMTP、POP3和IMAP协议

SMTP、POP3和IMAP协议 POP3、SMTP 与 IMAP 协议详解电子邮件是互联网上历史最悠久的应用之一。尽管即时通讯工具早已普及邮件系统仍然是正式沟通、账户验证和业务流转的核心基础设施。理解 SMTP、POP3、IMAP 三种协议的工作原理与分工是掌握邮件系统的必经之路。一、邮件系统整体架构在深入协议细节之前先建立对邮件系统全貌的认知。邮件的传递过程涉及两类角色用户代理UA和邮件服务器。用户代理即我们日常使用的邮件客户端如 Outlook、Foxmail 或手机上的邮箱应用。邮件服务器又分为发送服务器和接收服务器分别承担不同的职责。以一封真实的邮件传递为例当管理员admintechcorp.cn向客户clientpartner.com发送一封商务邮件时背后发生的事情远比点击发送复杂得多admintechcorp.cn发件人客户端 │ ▼ ① 提交邮件SMTP端口 587 techcorp.cn 的 SMTP 服务器 │ ▼ ② 服务器间转发SMTP端口 25 partner.com 的 SMTP 服务器 │ ▼ ③ 存储在收件人邮箱账户 clientpartner.com收件人客户端 │ ▼ ④ 取回邮件POP3 / IMAP这个流程揭示了一个关键事实邮件不是从发送方直接送达接收方的而是通过双方各自的邮件服务器进行中转。SMTP 负责步骤①到③POP3 或 IMAP 负责步骤④。二、SMTP 协议发送邮件2.1 协议定位SMTPSimple Mail Transfer Protocol简单邮件传输协议是邮件系统的投递员负责将邮件从发送方推送到接收方的邮件服务器。SMTP 是一个推送协议Push Protocol。客户端主动将邮件推送到服务器服务器之间互相推送直到邮件抵达目的地。它的设计哲学是存储转发邮件先在发送方的服务器上暂存再逐跳转发至接收方。2.2 工作原理SMTP 基于 TCP 连接工作使用纯文本命令进行交互。每次会话由一组结构化的命令和响应码组成。标准的 SMTP 会话过程如下以管理员向客户发送邮件为例C: EHLO mail-client.techcorp.local S: 250-mail-server.partner.com S: 250-SIZE 10485760 S: 250-8BITMIME S: 250-AUTH PLAIN LOGIN S: 250 HELP C: AUTH LOGIN S: 334 VXNlcm5hbWU6 C: YWRtaW5AdGVjaGNvcnAuY24 base64: admintechcorp.cn S: 334 UGFzc3dvcmQ6 C: Y2hhbmdlbWUxMjM base64: changeme123 S: 235 Authentication successful C: MAIL FROM:admintechcorp.cn S: 250 OK C: RCPT TO:clientpartner.com S: 250 OK C: DATA S: 354 Start mail input; end with CRLF.CRLF C: From: admintechcorp.cn C: To: clientpartner.com C: Subject: 项目进度汇报 C: C: 您好 C: 附件为本周项目进度报告请查收。 C: . S: 250 OK: queued as 9A3B2C1D C: QUIT S: 221 Bye说明现代 SMTP 会话通常使用 EHLO 命令代替 HELO支持更多扩展特性认证信息以 Base64 编码传输上例中展示了完整的 LOGIN 认证流程。每条命令的含义命令含义EHLO / HELO客户端向服务器打招呼表明身份并声明支持的扩展功能AUTH开启身份认证流程常用方式为 LOGIN 或 PLAINMAIL FROM指定发件人邮箱地址RCPT TO指定收件人邮箱地址可重复以添加多个收件人DATA声明接下来传输邮件正文以单独一行的句点结束QUIT结束会话服务器的响应码遵循固定规则2xx 表示成功3xx 表示指令需要更多信息4xx 表示暂时失败5xx 表示永久错误。2.3 重要特性邮件中继SMTP 的另一个关键能力是邮件中继Relay。发送方 SMTP 服务器收到邮件后会根据收件人地址的域名查询 DNS 中的 MX 记录找到接收方邮件服务器的地址然后将邮件转发过去。如果接收方服务器暂时不可用SMTP 会自动按设定间隔重试通常持续数小时至数天。这种设计使得邮件可以在多个邮件服务器之间辗转传递最终到达目的地。一个值得注意的设计细节是邮件在服务器之间传递时每经过一跳都会在邮件头中添加Received记录这构成了邮件的完整传递路径也是追查邮件投递问题的依据。三、POP3 协议下载邮件3.1 协议定位POP3Post Office Protocol version 3邮局协议第三版是一种拉取协议Pull Protocol。客户端主动连接到服务器将邮件下载到本地然后根据配置决定是否从服务器删除。POP3 的设计诞生于个人电脑时代彼时一个人通常只有一台电脑邮件保存在本地是最自然的选择。3.2 工作原理POP3 的会话分为三个阶段认证阶段、事务阶段、更新阶段。认证阶段 客户端发送用户名和密码服务器验证身份 事务阶段 客户端可以执行 LIST列出邮件、RETR读取邮件、 DELE删除邮件等操作 更新阶段 客户端发送 QUIT 命令后服务器正式执行删除操作一个典型的会话过程以运维人员用脚本拉取告警邮件为例C: USER monitoringtechcorp.cn S: OK C: PASS Alert2024 S: OK Logged in C: STAT S: OK 5 4827 C: LIST S: OK 5 messages S: 1 1024 S: 2 876 S: 3 512 S: 4 1203 S: 5 1212 S: . C: RETR 1 S: OK 1024 octets S: Return-Path: noreplycloud-provider.com S: Date: Tue, 5 Aug 2026 09:15:00 0800 S: Subject: [告警] CPU 使用率超过 90% S: S: 您的服务器 node-03 在过去 5 分钟内 CPU 使用率超过 90% S: 当前值94%请及时处理。 S: . C: DELE 1 S: OK C: QUIT S: OK Bye注意这里DELE 1之后并未立即删除——服务器在事务阶段只是将邮件标记为待删除等到客户端发送QUIT进入更新阶段后才会真正从磁盘移除被标记的邮件。3.3 POP3 的局限性POP3 的最大问题在于它的核心设计假设已经不再适用现代人通常在多台设备上使用同一个邮箱。当手机通过 POP3 下载了告警邮件并从服务器删除后运维人员在电脑上就再也看不到这条记录了。对于需要在手机、电脑、平板上同步查看同一邮箱的用户来说POP3 无法满足需求。四、IMAP 协议服务器同步4.1 协议定位IMAPInternet Message Access Protocol互联网消息访问协议正是为了解决 POP3 的多设备同步问题而设计的。IMAP 的核心理念是邮件保留在服务器上客户端的操作实时同步到服务器所有设备看到的是同一份邮件状态。4.2 工作原理IMAP 建立了客户端与服务器之间的持久连接。用户在客户端对邮件的一切操作——标记已读、移动到文件夹、删除——都会立即反映到服务器端其他设备下次连接时自动同步最新状态。IMAP 还支持按需获取邮件内容。客户端可以先只下载邮件头发件人、主题、时间等用户真正打开某封邮件时才下载正文。这在网络带宽有限或邮件附件较大的场景下能显著节省流量。4.3 IMAP 的核心能力IMAP 的设计远比 POP3 丰富支持大量服务器端操作在服务器上创建、重命名、删除文件夹在服务器上搜索邮件按发件人、主题、日期等条件标记邮件为已读/未读/加星标部分获取邮件内容只取头部或部分正文多设备实时同步状态4.4 POP3 与 IMAP 的核心区别对比项POP3IMAP邮件存储位置下载到本地服务器可删除保留在服务器多设备同步不支持完全支持服务器端文件夹不支持支持邮件获取方式一次性全部下载按需获取可先获取头部网络流量较大每次下载全部邮件较小支持部分获取离线访问支持已下载的邮件受限需提前缓存适用场景单设备、需要本地保存多设备同步、云端管理在当今多设备并存的使用环境下IMAP 是更被推荐的选择。主流邮件服务均默认提供 IMAP 支持。五、端口与安全5.1 标准端口三种协议各自对应明文和加密两组端口协议明文端口加密端口说明SMTP25465SSL/ 587STARTTLS25 用于服务器间转发587 用于客户端提交POP3110995SSL995 通常称为 POP3SIMAP143993SSL993 通常称为 IMAPS需要特别说明的是端口 25 和 587 的区别端口 25 是服务器之间转发邮件的标准端口但大多数 ISP 和云服务商封锁了这个端口禁止普通用户直接使用它发送邮件。端口 587 是专为客户端提交邮件设计的使用 STARTTLS 可以升级为加密连接是目前客户端发送邮件的主流选择。5.2 为什么要加密POP3 和 IMAP 的明文版本在传输过程中暴露用户名、密码和全部邮件内容任何网络嗅探工具都可以直接获取。实际使用中应始终选择加密端口995、993、587。六、为什么国内邮箱默认关闭协议访问使用过国内邮箱的用户会发现在网页端可以正常登录使用但用 Foxmail、Thunderbird 或 Python 脚本等第三方客户端连接时往往提示连接失败。这是因为网易、QQ 等国内邮箱服务默认关闭了 POP3、SMTP、IMAP 协议的访问权限背后有五个主要原因。6.1 账号安全防护网页端登录邮箱时平台提供了验证码、设备风控、异地登录拦截等多层保护。但第三方邮件客户端和脚本程序没有这些校验机制容易遭到暴力破解和密码撞库攻击。一旦账号被盗黑客不仅可以读取邮件内容还可以用该账号发送垃圾邮件和钓鱼邮件。因此国内邮箱在开启协议访问后不支持使用登录密码而是要求用户生成独立的授权码来替代密码从而将第三方客户端与网页端密码隔离。即便授权码泄露也不影响网页端账号安全。6.2 防止垃圾邮件泛滥SMTP 是发送邮件的通道。如果协议端口默认开放被盗账号就会被黑产大量利用来群发广告和诈骗邮件。该邮箱的 IP 地址会直接被全球邮件黑名单封禁并连累服务商的其他用户一同遭殃。因此服务商选择默认关闭由用户主动申请后才开放。6.3 减少服务器资源被恶意消耗黑客可以通过协议接口批量扫描和下载全部邮件对服务器造成大量带宽和计算资源的消耗。日常使用中绝大多数用户只会使用网页版或官方 App第三方客户端的使用者占比很低默认开启会造成不必要的资源浪费。6.4 数据管控与用户留存POP3 可以将邮件下载到本地后从服务器删除IMAP 则将邮件保留在云端供多设备同步。服务商出于数据管控和用户留存的目的希望邮件数据尽可能保留在云端方便用户持续使用官方 App 和网页端。因此采用手动开启模式而非默认开放。6.5 国内网络法规要求邮件属于私密敏感信息根据相关安全规范第三方软件接入邮箱属于外部访问通道。采用手动开启模式符合权限最小化原则用户主动知情授权能够满足合规要求。七、协议的使用边界理解这个问题的关键在于区分两类不同的访问方式网页端和官方 App大多数人日常使用手机邮箱 App 和浏览器打开的网页邮箱本质上是通过服务商自研的 HTTP/HTTPS 网页接口和 App 专属 API 与服务器通信。所有操作经过平台风控、验证码和登录检测与 POP3、SMTP、IMAP 协议完全无关。因此这类方式不存在开关问题默认全开。第三方客户端和程序脚本Thunderbird、Foxmail 等邮件客户端以及 Python 脚本、渗透测试工具等需要通过 POP3、IMAP 收取邮件通过 SMTP 发送邮件。这些场景才需要手动开启协议服务并获取授权码。日常使用无协议访问 手机 App、浏览器网页 → 使用 HTTPS 私有 API → 不涉及 POP3 / IMAP / SMTP 开发者场景需要协议 电脑邮件软件Thunderbird、Foxmail Python 脚本、爬虫程序、自动化告警 → 使用 POP3 / IMAP 收件SMTP 发件 → 需要手动开启服务 获取授权码补充说明一个常见误解即便是网页端发送邮件服务器在后端传输过程中依然依赖 SMTP 协议与全球其他邮件服务器通信。只是这个过程对用户透明不需要手动配置。八、三种协议总结8.1 职责划分发送邮件SMTP端口 25 / 587 特点推送协议存储转发服务器间和客户端到服务器均使用此协议 接收邮件POP3端口 110 / 995或 IMAP端口 143 / 993 POP3下载后删除适合单设备 IMAP服务器保留多设备同步当代首选8.2 完整流程回顾从点击发送到对方收到邮件三种协议各司其职发件人邮件客户端 ↓ 发件方 SMTP 服务器端口 587← 客户端推送SMTP ↓ 收件方 SMTP 服务器端口 25 ← 服务器间转发SMTP ↓ 邮件存储在收件方服务器 ↓ 收件人邮件客户端 ↓ 收件方 IMAP 服务器端口 993← 客户端拉取IMAP8.3 选型建议发送始终使用 SMTP没有替代方案。接收多设备使用 IMAP单设备且需要离线访问选 POP3。安全生产环境必须使用加密端口587 / 995 / 993。附录常见邮箱服务配置以下为各主流邮箱服务的 POP3、IMAP、SMTP 服务器地址与端口。配置第三方客户端时可直接参考。国内邮箱邮箱POP3 服务器POP3 端口IMAP 服务器IMAP 端口SMTP 服务器SMTP 端口163 邮箱pop.163.com110 / 995SSLimap.163.com143 / 993SSLsmtp.163.com25 / 465SSL126 邮箱pop.126.com110--smtp.126.com25QQ 邮箱pop.qq.com110 / 995SSLimap.qq.com143 / 993SSLsmtp.qq.com25 / 465 / 587SSLQQ 企业邮箱pop.exmail.qq.com995SSL--smtp.exmail.qq.com25 / 465SSL139 邮箱pop.139.com110--smtp.139.com25Sina 免费pop.sina.com110--smtp.sina.com25Sina VIPpop3.vip.sina.com110--smtp.vip.sina.com25Sohupop3.sohu.com110--smtp.sohu.com25Yahoo CNpop.mail.yahoo.cn110 / 995SSLimap.mail.yahoo.cn143 / 993SSLsmtp.mail.yahoo.cn25 / 465SSLHotmail / Outlookpop3.live.com995SSL--smtp.live.com25Foxmailpop.foxmail.com110--smtp.foxmail.com25263.netpop3.263.net110--smtp.263.net2521cn.compop.21cn.com110--smtp.21cn.com25Tom.compop.tom.com110--smtp.tom.com25国际邮箱邮箱POP3 服务器POP3 端口IMAP 服务器IMAP 端口SMTP 服务器SMTP 端口Gmailpop.gmail.com995SSLimap.gmail.com993SSLsmtp.gmail.com587SSL提示使用 SSL 加密连接时端口通常使用 995POP3、993IMAP、465/587SMTP。具体以各服务商最新官方文档为准。理解三种协议的定位与差异是掌握邮件系统运作方式的基础。实际工作中遇到的很多邮件问题——收不到邮件、发不出去、客户端配置错误——大多数都能从协议原理中找到答案。
返回列表