自学教程 从零学编程

IMAP 协议

一、IMAP 是什么

IMAP(Internet Message Access Protocol,互联网消息访问协议),应用层协议,基于TCP。
明文端口:143;加密版本IMAPS(SSL)端口:993。

IMAP 是用于从邮件服务器收取邮件的协议,和POP3作用同类,但设计理念完全不同。

SMTP负责发邮件;POP3、IMAP负责收邮件。

POP3的思路:把邮件下载到本地,服务器删掉原件;
IMAP思路:邮件永久保存在邮件服务器,客户端只是远程查看、操作服务器上的邮件。

二、核心特点

  1. 邮件存储在服务器,不是下载到本地;客户端只是同步邮件元数据与内容;
  2. 多终端状态同步:已读、未读、星标、删除、文件夹移动等状态,全部保存在服务器,手机、电脑、网页邮箱状态保持一致;
  3. 支持邮件文件夹管理,可以在服务器创建、删除、重命名文件夹,邮件在服务器上移动;
  4. 支持邮件部分下载:可以只获取邮件标题、发件人、摘要,不需要直接下载完整邮件;大附件可以按需单独下载,节省流量;
  5. 支持邮件搜索:直接在服务器端执行搜索,不用下载全部邮件再本地检索;
  6. 支持同时多客户端在线访问同一个邮箱。

三、IMAP 会话模式

IMAP是带状态协议,连接建立后会话会维持状态,分为4种状态:

  1. 未认证状态:刚连接服务器,需要登录认证;
  2. 已认证状态:账号密码验证成功,可以操作邮箱文件夹;
  3. 选中状态:选定某个邮箱文件夹(如INBOX收件箱),之后操作针对这个文件夹;
  4. 注销状态:关闭连接,会话结束。

对比POP3:POP3一次会话只做下载删除;IMAP会长连接,持续同步邮件状态。

四、IMAP 常用命令

IMAP命令格式:客户端会给每条命令带上标签(如 A001),服务器返回结果时带上相同标签,用来匹配请求。

命令作用
LOGIN登录,用户名+密码
LIST列出服务器上所有邮箱文件夹
SELECT选中指定文件夹(例如 INBOX 收件箱),进入选中状态
FETCH获取邮件内容/邮件头部(可以只拉标题,不拉全文)
SEARCH在服务器上搜索邮件
STORE修改邮件标记(已读、星标、删除标记)
COPYMOVE
EXPUNGE永久删除所有标记删除的邮件
LOGOUT退出,关闭连接

重要:IMAP标记删除的邮件并不会立刻删除,需要执行 EXPUNGE 才会真正清理。

五、IMAP 通信流程示例

  1. 客户端TCP连接服务器143/993端口,服务器返回就绪信息;
  2. 客户端发送 A001 LOGIN user@shturl. password 完成登录;
  3. A002 LIST "" "*" 获取所有文件夹;
  4. A003 SELECT INBOX 选中收件箱;
  5. A004 FETCH 1:* (FLAGS ENVELOPE) 批量获取邮件标记、标题、发件人信息(只拿摘要,不下载全文);
  6. 打开某一封邮件,使用FETCH获取邮件正文;
  7. A005 STORE 1 FLAGS (\Seen) 将邮件标记为已读,状态保存到服务器;
  8. 邮件删除:STORE 2 FLAGS (\Deleted) 打上删除标记;
  9. 执行 EXPUNGE,服务器永久删除带删除标记的邮件;
  10. A006 LOGOUT 退出会话。

六、IMAP vs POP3

项目IMAPPOP3
邮件存放位置保留在邮件服务器默认下载到本地,服务器删除
已读/星标标记保存在服务器,多端同步仅保存在本地,无法同步
文件夹管理服务器端创建、移动邮件仅本地文件夹,无法同步回服务器
邮件下载策略可只拉邮件摘要,按需下载正文/附件一次性下载整封邮件
推荐场景手机、电脑多设备同时使用邮箱单台电脑离线阅读邮件
端口143明文 / 993加密110明文 / 995加密

七、IMAP 的优缺点

✅ 优点

  1. 多终端同步,网页邮箱、手机APP、电脑客户端状态统一;
  2. 支持服务器端文件夹、标签、搜索;
  3. 可以只下载邮件头部,节省流量;
  4. 邮件保存在服务器,本地电脑硬盘损坏不会丢失邮件。

❌ 缺点

  1. 邮件长期占用服务器存储空间;
  2. 依赖网络,离线状态默认无法查看未提前缓存的邮件;
  3. 协议比POP3复杂,服务器资源开销更高;
  4. 原始143端口明文传输账号密码,生产环境必须使用993加密IMAPS。

八、邮件协议整体汇总(SMTP / POP3 / IMAP)

协议用途默认端口(明文)加密端口
SMTP发送邮件,服务器间转发25465 / 587
POP3接收邮件,下载到本地110995
IMAP接收邮件,服务器上管理邮件143993

九、小结

  1. IMAP是应用层TCP协议,用于收取邮件;明文143,加密IMAPS使用993;
  2. 核心设计:邮件保存在服务器,所有操作在服务器上执行,实现多端同步;
  3. 支持按需获取邮件摘要,不用一次性下载全部邮件;
  4. 适合多设备使用邮箱;仅单设备离线场景可以考虑POP3。

思考题:IMAP可以直接在服务器上搜索邮件,这个功能相比POP3有什么优势?

标签:

0 条笔记