IMAP "SEARCH" 命令的正确格式

Correct format for IMAP "SEARCH" command

我有两个 IMAP SEARCH 命令。谁能告诉我其中哪一个格式正确,或者它们是否确实是:

搜索 A:

UID SEARCH NOT DELETED (OR FROM "eBay" (OR SUBJECT "eBay" (OR TO "eBay" (OR CC "eBay" BODY "eBay"))))

搜索 B:

UID SEARCH (OR FROM "eBay" (OR SUBJECT "eBay" (OR TO "eBay" (OR CC "eBay" BODY "eBay")))) NOT DELETED

一个 returns 来自我收件箱的正确结果,但另一个没有。我正在尝试确定是我的邮件服务器软件有问题,还是发出命令的客户端。

谢谢

这些是表达相同搜索的等价方式。两者都是正确的,任何正确的服务器都应该 return 两次搜索的消息集相同。

稍微简化一下,下面两个是不同的表达方式"tell me which messages have not been read and are about subject ebay":

s1 uid search subject "ebay" unseen
s2 uid search unseen subject "ebay"

A and B 与 B and A 相同

这些搜索在语法上可能相同,但它们的性能可能完全不同。

有 2 个主要搜索子句,其中一个实际上是对一堆文本字段和正文进行搜索。另一个是非常便宜的标志检查(针对未删除的消息)。

如果执行搜索的服务器首先检查 /Deleted 标志,那么它可能会为自己节省大量检查其他文本字段(尤其是正文)的工作。

如果服务器天真地按照给定的顺序检查搜索子句,最好先进行标志检查(顶部搜索)。如果文件夹中没有已删除的邮件,则不会有太大区别,因为标志检查在成本方面可能微不足道。但是如果有很多被删除的消息,那么第二种形式的搜索可能会更昂贵,这取决于服务器是否足够聪明,可以先进行廉价测试。

是哪个服务器?