IMAP空闲超时

Pau*_*aul 11 imap

假设我使用IMAP IDLE来监视邮件文件夹中的更改.

IMAP规范说IDLE连接最多只能保持30分钟,但建议选择较少的分钟数 - 比如20分钟,然后取消空闲并重新启动.

我想知道如果邮件内容在空闲取消和创建新空闲之间发生变化会发生什么.可能会遗漏一封电子邮件.鉴于RECENT有点模糊,这可能导致在旧的空闲结束之前获得消息列表,并且新的空闲开始.

但这几乎与每20分钟一次的投票相同,并且打败了一些闲置的好处.

或者,可以在终止到期之前启动新的空闲会话.

但无论如何,我认为这个问题已经解决,所以我在这里寻求建议.

谢谢,

保罗

Luk*_*rny 22

如您所知,IMAP IDLE命令(RFC 2177)的目的是使服务器能够实时向客户端传输状态更新.在此上下文中,状态更新意味着未标记的IMAP服务器响应,例如EXISTS,RECENT,FETCH或EXPUNGE,这些响应在新消息到达,消息状态更新或消息被删除时发送.

但是,任何IMAP命令都可以返回这些IMAP 状态更新,而不仅仅是IDLE命令 - 例如,NOOP命令(请参阅RFC 3501第6.1.2节)也可用于轮询服务器更新(它早于IDLE)命令).闲置时,只有能够更有效地获取这些更新-如果你不使用IDLE命令,服务器的更新会简单地通过服务器时,客户端执行其他命令发送(或者即使没有命令执行过程中在某些情况下) - 有关详细信息,请参阅RFC 3501第5.2和5.3节.

这意味着如果在IDLE取消和新的IDLE命令之间更改了消息,则状态更新不应该丢失,就像它们在您从未使用IDLE时一样不会丢失(并且每隔几秒使用一次NOOP,例如) - 它们应该在新的IDLE命令启动后发送.