Bjö*_*ist 17 gmail imap protocols gmail-imap
您可以使用网络界面,Google的Android客户端或使用IMAP访问Gmail.据我所知,网络界面和Android应用程序使用的协议与IMAP完全不同 - 它们不仅仅是接口.我之所以确定这一点,是因为Android应用程序可以毫无问题地在<3秒内打开1m邮件的文件夹.没有普通的IMAP客户端可以做到这一点.
所以我的问题是这个秘密协议的知识是什么?它的参考文档在哪里?是否进行了逆向工程?谷歌是否批准其使用?
arnt的答案提供了一种测试gmail原始imap速度的绝佳方法:
$ openssl s_client -host imap.gmail.com -port 993 -crlf
...
* OK Gimap ready for requests from 12.34.56.78
$ a LOGIN ***@*** ***
a OK
$ c SELECT "[Gmail]/All mail" !!!!
* FLAGS (\Answered \Flagged \Draft \Deleted \Seen)
* OK [PERMANENTFLAGS (\Answered \Flagged \Draft \Deleted \Seen \*)] Flags permitted.
* OK [UIDVALIDITY 673376278] UIDs valid.
* 1142417 EXISTS
* 0 RECENT
* OK [UIDNEXT 1159771] Predicted next UID.
* OK [HIGHESTMODSEQ 8670601]
c OK [READ-WRITE] [Gmail]/All mail selected. (Success)
Run Code Online (Sandbox Code Playgroud)
我标记的命令c SELECT "[Gmail]/All mail"大约需要20秒才能完成.由于那个时间比我相对功能不足的Android手机上的GMail应用程序启动和加载所有邮件标签所花费的时间更长,即使在我清除其缓存后也不到6秒.Web客户端甚至更快.
除非我遗漏了一些基本内容,否则这证明"无可置疑"Google的GMail客户端不使用IMAP,因为您永远不需要等待20秒才能完成任何SELECT命令.
Gig*_*igi 10
Android应用程序(至少是我使用的应用程序)使用IMAP.您可以通过在服务器上运行Wireshark来验证这一点.
至于为什么Android应用程序如此之快 - 我所知道的是它使用SEARCH命令来选择最近的n个消息.桌面客户端(如Thunderbird或Outlook)的重量更轻,下载文件夹中每条消息的标题和元数据,尽管建议他们不要这样做.
智能手机没有足够的资源来存储和处理数百万封电子邮件(尽管更多现代电子邮件可能会到达那里),因此SEARCH方法允许手持设备快速访问邮件.
无论如何,Wireshark可以揭示有关IMAP客户端和服务器行为的大量信息.如果你真的很好奇,那就试一试吧.如果服务器是Gmail,则无法执行此操作,但您可以在其他服务器(例如hMailServer)上进行尝试.
经过更多研究后,我发现GMail有一个API:https://developers.google.com/gmail/api/我不认为我在2013年发布此问题后发布了API.
使用该API,我创建了一个演示程序,可以获取标签的最后100封邮件:https://gist.github.com/bjourne/37a9d15b03862003008a1b0169190dbe
该计划的相关部分是:
resource = service.users().messages()
result = resource.list(userId = 'me', labelIds = [label]).execute()
mail_ids = [m['id'] for m in result['messages']]
start = time()
mails = []
batch = BatchHttpRequest()
cb = lambda req, res, exc: mails.append(to_mail(res))
for mail_id in mail_ids:
get_request = resource.get(**headers_params(mail_id))
batch.add(get_request, callback = cb)
result = batch.execute()
print('Took %.2f seconds' % (time() - start))
Run Code Online (Sandbox Code Playgroud)
它列出了包含超过570k消息的标签(IMAP术语中的文件夹)中按日期排序的最后100条消息.
在我的机器上,此循环大约需要0.5 - 0.8秒.我可以自信地宣称,这个星球上没有纯粹的IMAP客户端.可能,IMAP不会变得更快,因为它不适合Google内部存储邮件的方式.
所以我会回答我自己的问题.这是他们正在使用的API,并且之前没有公开过.
| 归档时间: |
|
| 查看次数: |
33050 次 |
| 最近记录: |