在IMAP APPEND命令中允许EXPUNGE

时间:2014-12-02 10:51:02

标签: append imap rfc

这是一个允许的响应"到IMAP APPEND命令?有时我想上传某些消息的邮件服务器以这种方式响应,而我当前的实现确实允许EXPUNGE。

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

我有什么:

https://tools.ietf.org/html/rfc3501#section-7.4.1

  

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

此外:

  

命令不是"正在进行中"直到完成命令   已经收到;特别是,命令不是"正在进行中"   在指挥继续谈判期间。

我无法将各个部分放在一起。

1 个答案:

答案 0 :(得分:1)

服务器行为不正确。它不应发送EXPUNGE,然后发送+延续。那说,这个规则

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

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

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

a uid search subject {3}
foo
3:7

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

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