首页/网络/协议速查/IMAP4 协议总览

IMAP4 协议总览

邮件留在服务器、多端实时同步:客户端只拉取需要的部分(头/正文/附件)并回写标志位,是移动时代的标准收信协议。

协议速查网络更新于 2026-10-13

IMAP4 是什么

IMAP4 是「邮件留在服务器、多端实时同步」的收信协议,取代了 POP3 的「下载即搬走」模型。客户端不必整封下载,而是先看信头、按需取正文或附件,并把标志位(已读、星标、已删除)写回服务器,所以手机、网页与桌面三端的状态能保持一致。它按文件夹组织邮件,支持服务端检索与并发命令,是移动时代的标准收信协议。

基本信息

端口143 明文(可 STARTTLS)/ 993 隐式 TLS
规范RFC 3501(IMAP4rev1)、RFC 9051(IMAP4rev2)
命令模型每条命令带唯一标签(a1/a2…),应答带标签状态 OK/NO/BAD
数据行以 * 开头的无标签数据行
标志位\Seen 已读、\Flagged 星标、\Answered、\Draft、\Deleted
存储模型服务器端持久信箱,受配额(quota)限制

典型使用场景

  • 多设备同步收信:手机读过的邮件,桌面端不再显示未读
  • 只想看信头时节省流量:先 FETCH 头部再决定是否取正文
  • 服务端检索:让服务器按条件筛选,避免全量下载后本地过滤
  • 保留服务器副本备份,避免换设备后邮件丢失
  • 使用 IDLE 实现新邮件到达即时提醒

最小会话骨架

最小会话骨架
a1 CAPABILITY
a2 LOGIN alice ****
a3 SELECT INBOX
a4 FETCH 1:* (FLAGS)
a5 FETCH 1 (BODY.PEEK[HEADER.FIELDS (SUBJECT FROM)])
a6 SEARCH UNSEEN
a7 STORE 5 +FLAGS (\Seen)
a8 LOGOUT

常用命令速查

命令作用备注
CAPABILITY查询服务器支持的能力连接后先发,决定可用特性
LOGIN登录认证明文端口务必在 TLS 后使用
SELECT选中邮箱(文件夹)并返回状态只读场景用 EXAMINE
FETCH取元数据或正文BODY.PEEK 不会置为已读
STORE修改标志位实现已读/星标/删除
SEARCH服务端条件检索配合 UID 更稳定
IDLE保持连接等待服务端推送新邮件即时通知的实现
IMAP 命令必须带唯一标签,同一连接可并发多条命令(PIPELINING),与 POP3 的严格一问一答不同;这也是 IMAP 客户端能「边收信边标记」的原因。
取正文时先用 BODY.PEEK 可以避免「只是预览一下就把邮件标记成已读」的副作用;需要顺带置已读时,再用 STORE +FLAGS (\Seen) 显式操作。

易错点

  • 把「邮件都在服务器」当成无限存储:配额写满后新邮件会被直接拒收,需定期清理大附件
  • 用明文 143 端口登录并发送口令,凭据在网络中被明文传输
  • 只按序号(sequence number)引用邮件,删除后序号会变,应使用 UID 保证稳定
  • FETCH 正文时不加 PEEK,预览行为把邮件误标为已读
  • 以为 IMAP 与 POP3 可以混用同一套本地状态,两者同步模型不同,混用易产生重复或丢信

数据来源与参考

  • RFC 3501(IMAP4rev1)
  • RFC 9051(IMAP4rev2)

相关工具

​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌