自学教程 从零学编程

POP3 协议

一、POP3 是什么

POP3(Post Office Protocol version 3,邮局协议版本3),属于应用层协议,基于TCP。
明文端口 110,加密版本POP3S使用 995端口(SSL加密)。

POP3 作用:邮件客户端从邮件服务器上下载邮件。

重点区分:SMTP负责发邮件;POP3/IMAP负责收邮件。

POP3是最经典的收邮件协议,设计思路类似邮局取信:把服务器上的邮件下载到本地电脑,取回之后服务器默认删除原件。

二、POP3 核心模型:MUA ←→ MTA

  • MUA:邮件客户端(Foxmail、Outlook等)
  • MTA:邮件服务器(存放收件邮件)
    客户端主动连接POP3服务器,认证身份,拉取邮件到本地。

三、POP3 的三种会话状态

POP3会话分为3个阶段,状态按顺序切换:

  1. 认证状态(Authorization)
    客户端连接成功后,需要提交用户名、密码,验证身份。认证失败不能操作邮件。
  2. 事务状态(Transaction)
    认证成功,进入事务状态。可以执行查看邮件列表、下载邮件、标记删除等操作。

⚠️ 标记删除只是做标记,不会立刻删除邮件。

  1. 更新状态(Update)
    客户端发送 QUIT 退出会话,服务器才真正删除所有标记删除的邮件,会话结束。

四、POP3 常用命令

POP3采用命令+响应交互,服务器两种响应:+OK(成功)、-ERR(失败)

命令作用
USER输入用户名
PASS输入密码
STAT查看邮件总数、所有邮件总大小
LIST列出邮件编号与大小
RETR n下载第n封邮件
DELE n标记第n封邮件为待删除(会话结束才生效)
NOOP空操作,维持连接
RSET撤销所有DELE删除标记
QUIT退出会话,触发服务器执行删除操作

五、完整通信流程示例

  1. 客户端TCP连接POP3服务器110端口,服务器返回+OK就绪;
  2. USER test@xxx.com 提交用户名;
  3. PASS 123456 提交密码,认证通过,进入事务状态;
  4. STAT 查询:邮件共5封,总大小;
  5. LIST 查看邮件编号列表;
  6. RETR 1 下载第1封邮件;
  7. DELE 1 将1号邮件标记删除;
  8. QUIT,服务器收到QUIT,真正删除1号邮件,关闭连接。

如果中途断开连接、没有发送QUIT,DELE标记不会生效,邮件保留。

六、POP3 特点

✅ 优点

  1. 协议简单,部署成本低;
  2. 邮件下载到本地,下载完成后断网也可以阅读邮件;
  3. 可以把邮件保存在本地硬盘,减少服务器空间占用。

❌ 缺点(核心短板)

  1. 默认下载后删除服务器邮件,多设备不同步。电脑下载邮件后,手机再登录,看不到这封邮件;
  2. 只支持下载邮件正文,不能在服务器上管理邮件(新建文件夹、移动邮件、标记已读等操作只能在本地生效,不会同步回服务器);
  3. 无法只预览邮件标题,想要看主题必须把整封邮件下载;
  4. 不支持多终端状态同步(已读/未读标记不同步)。

补充:部分邮箱支持开启“在服务器保留邮件副本”,这是邮箱服务商扩展功能,并不是POP3协议原生能力。

七、POP3S(加密POP3)

原始POP3(110端口)明文传输账号密码与邮件内容,容易被抓包窃取。
POP3S:基于SSL加密的POP3,端口995,连接建立直接开启加密,现在推荐使用。

八、POP3 vs IMAP 简要对比

项目POP3IMAP
核心思想邮件下载到本地,服务器默认删除邮件保留在服务器,客户端只是远程查看
多端同步❌ 默认不同步(可手动保留副本)✅ 已读、文件夹、标签全部多端同步
邮件管理本地操作,无法在服务器建文件夹直接在服务器操作邮件、文件夹
带宽下载完整邮件,大邮件消耗流量大可以只下载邮件标题,按需下载正文
端口110(明文) / 995(加密POP3S)143(明文) / 993(加密IMAPS)

九、POP3 vs SMTP 快速区分

  • SMTP:发送邮件,客户端→服务器,服务器→服务器;端口25/587/465
  • POP3:接收邮件,服务器→客户端;端口110/995

十、小结

  1. POP3是应用层TCP协议,用于客户端接收邮件,明文110,加密POP3S为995;
  2. 会话三阶段:认证 → 事务 → 更新;DELE只是打标记,QUIT才真正删除;
  3. 设计理念:把邮件取回本地,默认服务器不留副本;
  4. 最大缺陷:原生不支持多设备邮件同步;多设备同时收邮件的场景,优先选择IMAP。

思考题:POP3开启“服务器保留邮件副本”,为什么依然不能实现多端同步已读状态?

标签:

0 条笔记