imap – 缓存什么modseq值?

我正在阅读
RFC 7162,试图弄清楚客户端在与支持CONDSTORE但不支持QRESYNC的服务器进行通信时应该如何表现.

初始连接情况很简单:客户端将其缓存的modseq值与对SELECT命令的HIGHESTMODSEQ响应进行比较,如果较低,则客户端可以使用FETCH CHANGEDSINCE或SEARCH MODSEQ检索任何更改.执行此操作后,客户端可以将HIGHESTMODSEQ值存储为邮箱的新缓存modseq值.

但是,如果客户端在选择邮箱时收到未经请求的FETCH响应,它是否可以从这些更新中的MODSEQ属性中得出任何可靠的结论?缓存看到的最高MODSEQ值是否安全,或者客户端是否会在这样做时丢失对邮箱状态的任何更新?

最佳答案 这很棘手.

这个问题可能是指RFC7162中的一种语言,它澄清了HIGHESTMODSEQ和MODSEQ是两种不同的野兽,并且当服务器被迫撤回一些EXPUNGE时,FETCH MODSEQ可能会到达,可能是因为客户端发送了一个使用MSN的命令(参见motivation)在第3.2章).

在这种特殊情况下,服务器只支持CONDSTORE而不支持QRESYNC,MODSEQ和HIGHESTMODSEQ仅用于跟踪元数据更改(例如FLAGS更新).他们不必更改消息清除.因此,由于QRESYNC,RFC试图阻止的情况可能会发生而不会产生任何致命的后果,因为您作为客户端不能将HIGHESTMODSEQ用于任何其他目的,而是FLAGS更新.基于此,我没有看到客户端在看到MODSEQ时不应在仅CONDSTORE服务器上碰撞HIGHESTMODSEQ的原因.

你应该在imap-protocol邮件列表上询问并寻求澄清.我也有一个关于如何正确处理这个问题的公开错误,RFC对我来说并不完全清楚.

点赞