[imp] Horde IMAP features (or why our webmail client is better than your webmail client)

Michael M Slusarz slusarz at horde.org
Wed May 25 19:11:40 UTC 2011

Quoting Patrick Boutilier <boutilpj at ednet.ns.ca>:

> From http://wiki.horde.org/Project/HordeImapLib :
> "Horde_Imap_Client was responsible for features added to imapproxy  
> to eliminate the need to re-establish the session every time a user  
> accesses the server. Horde_Imap_Client is the ONLY open-source PHP  
> library that leverages these features."
> Does Horde_Imap_Client still benefit from using imapproxy or is the  
> need for imapproxy gone?

Absolutely it still benefits.  Web applications are inherently  
stateless by design; the full environment needs to be recreated every  
time a browser makes a connection to a server.  Imapproxy (mostly)  
eliminates the overhead of creating the authenticated network  
connection between the PHP server and the IMAP server.  This is a  
significant savings of resources.

IMP goes even further by leveraging the new features of imapproxy to  
also skip re-configuring this connection.  Even when using imapproxy,  
a client still needs to re-initialize the IMAP session since it can  
not be sure whether the proxy is re-using an old connection, or it had  
to create a new connection.  IMAP session initialization includes the  

* Setting the language on the server (RFC 5255)
* Enabling CONDSTORE (RFC 4551) or QRESYNC (RFC 5162) via the ENABLE  
(RFC 5161) command
* Sending ID information (RFC 2971) - although this needs to be added  
as it is not currently done automatically

All other webmail clients, even if using imapproxy, need to perform  
these tasks on every page access.  This is a significant savings in  
time/network bandwidth.  E.g.:

2 ID ("name" "foo" "version" "1.0")
* ID ("name" "foo2" "version" "bar2" "os" "linux")
2 OK ID completed
3 OK Enabled.
* NAMESPACE (("" "/")) (("Other Users/" "/" "TRANSLATION" ("Andere  
Ben&APw-tzer/"))) (("Public Folders/" "/" "TRANSLATION" ("Gemeinsame  
4 OK Sprachwechsel durch LANGUAGE-Befehl ausgefuehrt

will only need to be sent once in IMP if using imapproxy.


Michael Slusarz [slusarz at horde.org]

More information about the imp mailing list