POP3 的 UIDL 命令与 UID 持久化如何保证“下载后不重复拉取、换客户端不丢状态”?

1 POP3 的 UIDL 命令与 UID 持久化如何保证“下载后不重复拉取、换客户端不丢状态”?
UIDL 命令

POP3 UIDL 返回每封邮件的“唯一标识符(UID)”,在邮件保留期内对该信稳定(RFC 1939 §7);客户端用 UID 记住“已下载/已删”,避免重复拉取。

持久化

客户端本地维护 UID→状态映射;即使重连或换设备,凭 UIDL 比对即可续接,不会把已读信当新信。注意 POP3 本身无“已读”概念,状态全靠客户端 UID 映射。

服务端约束

服务器须保证 UID“邮件不删时不改变、删除后该 UID 不再复用”(RFC 要求稳定);若服务端 UID 不稳定(如重启重置),客户端会重复下载——这是选邮件系统时的隐性质量点。

取舍

POP3+UIDL 适合“单点下载清理”;多设备同步应改用 IMAP(状态在服务端)。邮件系统对 POP3 UIDL 的实现稳定性直接影响客户体验。

参考:RFC 1939 §7(UIDL 命令与 UID 稳定性要求)