在 IMAP 追加命令中允许清除



这是允许对 IMAP 追加命令的"响应"吗?有时,我想上传一些邮件的邮件服务器会以这种方式响应,而我当前的实现确实允许 EXPUNGE。

A00003 APPEND "somefolder" (Seen) "12-Dec-2012 12:12:12 +0000" {1212}
* 1 EXPUNGE
* 18 EXISTS
* 18 RECENT
+ send APPEND data...

我有什么:

https://www.rfc-editor.org/rfc/rfc3501#section-7.4.1

当没有命令正在进行时,不得发送 EXPUNGE 响应,也不在响应 FETCH、STORE 或 SEARCH 命令时。

也:

在完成命令之前,命令不会"进行中"已收到;特别是,命令不是"正在进行"在命令延续的协商期间。

我无法将这些碎片放在一起。

服务器行为不正确。它不应该发送EXPUNGE然后发送+继续。也就是说,这条规则

in particular, a command is not "in progress" during the
negotiation of command continuation

有点毫无意义,我不会相信随机服务器会遵守它。

我可以猜到为什么存在该规则。在如下所示的命令中,3:7的含义取决于客户端在构造字符串3:7之前解析并处理了哪些EXPUNGE响应:

a uid search subject {3}
foo
3:7

但是服务器必须处理 MSN。 客户端通常可以选择通过使用 UID 而不是 MSN 来避免整个问题区域。

我的建议是避免发送 MSN,始终使用 UID,并尽可能容忍奇怪定时的EXPUNGE响应。

最新更新