一、IMAP 是什么
IMAP(Internet Message Access Protocol,互联网消息访问协议),应用层协议,基于TCP。
明文端口:143;加密版本IMAPS(SSL)端口:993。
IMAP 是用于从邮件服务器收取邮件的协议,和POP3作用同类,但设计理念完全不同。
SMTP负责发邮件;POP3、IMAP负责收邮件。
POP3的思路:把邮件下载到本地,服务器删掉原件;
IMAP思路:邮件永久保存在邮件服务器,客户端只是远程查看、操作服务器上的邮件。
二、核心特点
- 邮件存储在服务器,不是下载到本地;客户端只是同步邮件元数据与内容;
- 多终端状态同步:已读、未读、星标、删除、文件夹移动等状态,全部保存在服务器,手机、电脑、网页邮箱状态保持一致;
- 支持邮件文件夹管理,可以在服务器创建、删除、重命名文件夹,邮件在服务器上移动;
- 支持邮件部分下载:可以只获取邮件标题、发件人、摘要,不需要直接下载完整邮件;大附件可以按需单独下载,节省流量;
- 支持邮件搜索:直接在服务器端执行搜索,不用下载全部邮件再本地检索;
- 支持同时多客户端在线访问同一个邮箱。
三、IMAP 会话模式
IMAP是带状态协议,连接建立后会话会维持状态,分为4种状态:
- 未认证状态:刚连接服务器,需要登录认证;
- 已认证状态:账号密码验证成功,可以操作邮箱文件夹;
- 选中状态:选定某个邮箱文件夹(如INBOX收件箱),之后操作针对这个文件夹;
- 注销状态:关闭连接,会话结束。
对比POP3:POP3一次会话只做下载删除;IMAP会长连接,持续同步邮件状态。
四、IMAP 常用命令
IMAP命令格式:客户端会给每条命令带上标签(如 A001),服务器返回结果时带上相同标签,用来匹配请求。
| 命令 | 作用 |
|---|---|
| LOGIN | 登录,用户名+密码 |
| LIST | 列出服务器上所有邮箱文件夹 |
| SELECT | 选中指定文件夹(例如 INBOX 收件箱),进入选中状态 |
| FETCH | 获取邮件内容/邮件头部(可以只拉标题,不拉全文) |
| SEARCH | 在服务器上搜索邮件 |
| STORE | 修改邮件标记(已读、星标、删除标记) |
| COPY | MOVE |
| EXPUNGE | 永久删除所有标记删除的邮件 |
| LOGOUT | 退出,关闭连接 |
重要:IMAP标记删除的邮件并不会立刻删除,需要执行
EXPUNGE才会真正清理。
五、IMAP 通信流程示例
- 客户端TCP连接服务器143/993端口,服务器返回就绪信息;
- 客户端发送
A001 LOGIN user@shturl. password完成登录; A002 LIST "" "*"获取所有文件夹;A003 SELECT INBOX选中收件箱;A004 FETCH 1:* (FLAGS ENVELOPE)批量获取邮件标记、标题、发件人信息(只拿摘要,不下载全文);- 打开某一封邮件,使用FETCH获取邮件正文;
A005 STORE 1 FLAGS (\Seen)将邮件标记为已读,状态保存到服务器;- 邮件删除:
STORE 2 FLAGS (\Deleted)打上删除标记; - 执行
EXPUNGE,服务器永久删除带删除标记的邮件; A006 LOGOUT退出会话。
六、IMAP vs POP3
| 项目 | IMAP | POP3 |
|---|---|---|
| 邮件存放位置 | 保留在邮件服务器 | 默认下载到本地,服务器删除 |
| 已读/星标标记 | 保存在服务器,多端同步 | 仅保存在本地,无法同步 |
| 文件夹管理 | 服务器端创建、移动邮件 | 仅本地文件夹,无法同步回服务器 |
| 邮件下载策略 | 可只拉邮件摘要,按需下载正文/附件 | 一次性下载整封邮件 |
| 推荐场景 | 手机、电脑多设备同时使用邮箱 | 单台电脑离线阅读邮件 |
| 端口 | 143明文 / 993加密 | 110明文 / 995加密 |
七、IMAP 的优缺点
✅ 优点
- 多终端同步,网页邮箱、手机APP、电脑客户端状态统一;
- 支持服务器端文件夹、标签、搜索;
- 可以只下载邮件头部,节省流量;
- 邮件保存在服务器,本地电脑硬盘损坏不会丢失邮件。
❌ 缺点
- 邮件长期占用服务器存储空间;
- 依赖网络,离线状态默认无法查看未提前缓存的邮件;
- 协议比POP3复杂,服务器资源开销更高;
- 原始143端口明文传输账号密码,生产环境必须使用993加密IMAPS。
八、邮件协议整体汇总(SMTP / POP3 / IMAP)
| 协议 | 用途 | 默认端口(明文) | 加密端口 |
|---|---|---|---|
| SMTP | 发送邮件,服务器间转发 | 25 | 465 / 587 |
| POP3 | 接收邮件,下载到本地 | 110 | 995 |
| IMAP | 接收邮件,服务器上管理邮件 | 143 | 993 |
九、小结
- IMAP是应用层TCP协议,用于收取邮件;明文143,加密IMAPS使用993;
- 核心设计:邮件保存在服务器,所有操作在服务器上执行,实现多端同步;
- 支持按需获取邮件摘要,不用一次性下载全部邮件;
- 适合多设备使用邮箱;仅单设备离线场景可以考虑POP3。
思考题:IMAP可以直接在服务器上搜索邮件,这个功能相比POP3有什么优势?
0 条笔记