IMAP4rev2 客户端应如何关联多个管道 IMAP 命令的未标记响应?

问题描述 投票:0回答:1

rfc 9051 定义了正在进行的多个命令(命令管道)

  • 流水线允许客户端发送另一个命令,而无需等待命令的完成结果响应
  • IMAP 使用标签来唯一标识从客户端发送的每个命令
  • IMAP 具有服务器可能发送的未标记响应,例如。每一条受影响的消息都有一个

.

IMAP 客户端如何正确地将此类未标记的响应与多个待处理命令中的任何一个关联起来?

  • 例如,客户端可能同时发送多个具有不同参数的相同命令,然后可能会收到无法区分的相同未标记响应
  • 一个旧版 imap 客户端向所有挂起的命令广播未标记的响应,这可能违反完整性mxk Go IMAP 2015
  • 截至 2024 年,所有其他 Go 客户端都已被证明是无法操作的垃圾,并且有很多,大部分是悲惨的 mxk 分叉
  • 服务器是否可以并行且无序地执行命令,但在响应另一命令之前以不间断的顺序发送一个命令的所有响应?
  • 该标准仅关注以前的错误的各个方面,即。一个命令对消息重新排序,而不是如何保证并发完整性
  • 多个并发客户端使用服务器总是会出现故障源,因此永远无法保证无错误操作
go email gmail imap email-client
1个回答
0
投票

答案取决于您为什么要将未标记的响应与命令相关联。

这个问题最常见的变体的答案是:在收到未标记的响应时解析它们并将它们作为结构化信息存储在 RAM 中,当您收到标记的响应时,在该数据结构中查找相关信息。

例如,如果 RFC 规定您在收到命令的标记响应时应该已经收到这样那样的

FETCH
响应(例如
UID STORE
),则在
FETCH
消息到达时对其进行解析并将每条消息的信息存储在数据结构中,当您处理标记的响应时,在该数据结构中查找消息并从中返回信息。您可能会说,这不会将未标记的响应与标记的响应相关联,而是将未标记的响应中的信息相关联。是的。没错。

此方法适用于除

SEARCH
之外的所有 IMAP。

© www.soinside.com 2019 - 2024. All rights reserved.