从同一ip地址打开imap连接是否有限制?

从同一ip地址打开imap连接是否有限制?,imap,gmail-imap,Imap,Gmail Imap,嗨,我正在实现电子邮件客户端应用程序。我的要求是我需要监视指定IMAP服务器中的所有可用邮箱。我为每个邮箱创建了单独的TCP连接。但我正在断开与IMAP服务器的连接。我正在尝试Gmail/yahoo进行测试。打开同一ip到特定IMAP服务器的多个连接是否有任何限制?尤其是Gmail和雅虎 或者,是否可以在不使用IMAP-NOTIFY的情况下监视单个连接中的所有邮箱?Gmail/Yahoo似乎都不支持IMAP-NOTIFY 请帮我解决…这是我以前在stackoverflow上回答过的问题,但现在只

嗨,我正在实现电子邮件客户端应用程序。我的要求是我需要监视指定IMAP服务器中的所有可用邮箱。我为每个邮箱创建了单独的TCP连接。但我正在断开与IMAP服务器的连接。我正在尝试Gmail/yahoo进行测试。打开同一ip到特定IMAP服务器的多个连接是否有任何限制?尤其是Gmail和雅虎

或者,是否可以在不使用IMAP-NOTIFY的情况下监视单个连接中的所有邮箱?Gmail/Yahoo似乎都不支持IMAP-NOTIFY


请帮我解决…

这是我以前在stackoverflow上回答过的问题,但现在只能通过。问题是如何“杀死太多的并行IMAP连接”。转载如下;核心要点是,出于某种原因,大多数服务器管理员更喜欢使用较少数量的短期连接,而不是更多在较长时间内处于活动状态的连接,但他们大部分时间都在后台静默地空闲。他们没有得到的是,IMAP协议的设计考虑到了长期存在的连接,并试图防止这将导致资源浪费,因为客户端在邮箱之间跳转时会不断重新同步邮箱

原答覆如下:

不,这是一个非常错误的想法。IMAP的设计使得监控单个邮箱需要一个连接;在大多数IMAP服务器实现中,这意味着一个进程。但是,除非用户正在使用的客户端严重中断,否则所有这些连接都将进入空闲模式。在空闲状态下,客户端将收到有关邮箱状态更新的被动通知。如果禁用这些连接,客户端将不得不主动轮询许多邮箱中的更改。现在自己决定——更糟糕的是,十个进程处于空闲状态,还是每两分钟有一个进程进行大量轮询?以下哪种解决方案会消耗更多的能源、CPU时间和IO操作?这是并行连接的数量

第二个问题是关于长期存在的联系。同样,这是IMAP的一个关键方面——每个连接都携带大量相关的状态信息,获取这些信息的成本相当高。除非您的服务器实现某些扩展,并且您的客户端使用它们(ESEARCH、CONDSTORE、QRESYNC是关键部分),否则打开邮箱可能需要O(n)操作。我不知道您的用户有多少条消息,但当您决定终止一个连接时,是否真的要传输例如250k条消息的消息标志,因为它已处于活动状态“太长”

最后,任何合理的IMAP服务器供应商都提供了一种方法来配置每个用户会话对并发进程数量的限制。使用它比维护一个脚本来临时终止“未使用”的连接要好得多


如果您想了解更多关于同步过程的信息,我关于在网络脆弱且资源有限的客户机上使用IMAP的论文将介绍客户机为了向其用户显示邮箱的更新视图所必须做的工作。

一般来说,许多服务器软件都有内置的限制,以防止滥用,并将每个帐户、每个IP的连接数限制为一定数量。无论你在构建什么,听起来都有点像恶意软件。