[commits] [Wiki] changed: Project/HordeImapLib

Michael Slusarz slusarz at horde.org
Tue May 24 06:21:31 UTC 2011


slusarz  Tue, 24 May 2011 06:21:31 +0000

Modified page: http://wiki.horde.org/Project/HordeImapLib
New Revision:  1.6
Change log:  Flesh this out.  Brag a bit.

@@ -1,36 +1,47 @@
  [[toc]]

  + Horde IMAP Client library

-Create an abstracted interface to an IMAP server.  Create a  
native-PHP driver which will allow us to control all access to the  
IMAP server to be able to potentially use all features that IMAP  
provides.
+This library presents a fully abstracted interface to an IMAP server.  
  It provides a native-PHP driver that is significantly faster, more  
feature-rich, and extensible as opposed to PHP's imap (c-client)  
extension.

-++ Bugs
+Additionally, the library allows for abstracted access to POP3  
servers via a native-PHP driver.

-I'm sure there are bugs.
+C-client drivers for both IMAP and POP3 are also provided as  
proof-of-concept.

  ++ People

-Michael Slusarz is creating the library.
+Michael Slusarz created the library.

  ++ Description
-
-The library is stable.  A test program exists to allow anyone to test  
the code on their IMAP server.
-
-A c-client driver exists that implements as much of the library as  
possible using the imap_*() functions, and uses the Socket (native PHP  
code) library to implement the rest.
-
-POP3 drivers exist that uses the c-client driver and PHP socket code  
(recommended) to implement the commands that a POP server supports.

  The Socket library, which IMP 5.x uses for IMAP access, supports the  
following RFCs:

   
http://git.horde.org/co.php/framework/Imap_Client/lib/Horde/Imap/Client/Socket.php?rt=horde-git

  Additionally, the class includes a UTF-8 to UTF7-IMAP converter, an  
IMAP mailbox sorter, and an abstracted caching library.

  The library requires PHP 5.2.0+.
+
+++ Features
+
+* Fast. Horde_Imap_Client is orders of magnitude faster than the PHP  
imap extension (benchmarks to come).
+ * The PHP imap extension produces tremendously inefficient IMAP  
queries.  Horde_Imap_Client has been ruthlessly tuned to eliminate  
duplicate/unneeded queries.
+* Memory efficient. Horde_Imap_Client handles message data (which can  
easily be 10+ MB) entirely within PHP temporary streams.  No more than  
2 MB of a large data objects is stored in memory at any time.
+* Built-in caching. No need to muck around with caching message data;  
this is all handled internally.  Further, Horde_Imap_Client uses  
Horde_Cache which means that a large variety of caching options are  
available to use - anything from temporary files, SQL databases, to  
memcache servers can be used to cache this data.
+* Standards compliant. Horde_Imap_Client is strictly RFC compliant.
+ * Additionally, Horde_Imap_Client implements important core  
functionality that may not be available on your server.  Threading and  
**FULL** sorting (not a limited subset) are always available,  
regardless of whether your IMAP server supports the THREAD/SORT  
extensions.
+* Liberally commented code. It may not be perfect.  But at least we  
try to give you some idea of what's going on in there.
+* Easy debugging. Full IMAP logs are available via a single  
configuration option.
+* Advanced features.
+ * Horde_Imap_Client is the **ONLY** open-source PHP library that  
supports the CONDSTORE (http://tools.ietf.org/html/rfc4551 RFC 4551)  
and QRESYNC (http://tools.ietf.org/html/rfc5162 RFC 5162) IMAP  
extensions. These extensions ensure that changes made by other mail  
user agents (MUAs) are automatically synchronized.  Without CONDSTORE,  
it is IMPOSSIBLE to cache flag information so loading a mailbox on  
every page load requires parsing every message for flag changes.   
Additionally, these extensions are absolutely essential to correctly  
implement an AJAX mail interface that properly synchronizes changes.
+ * Full ACL support, and provides abstracted management of the ACLs  
so that a developer does not need to worry whether the server supports  
"old" style ACLs (http://tools.ietf.org/html/rfc2086 RFC 2086) or  
"new" style ACLs (http://tools.ietf.org/html/rfc4314 RFC 4314).
+ * Supports, among others, (http://tools.ietf.org/html/rfc3502  
MULTIAPPEND), (http://tools.ietf.org/html/rfc4469 CATENATE),  
(http://tools.ietf.org/html/rfc4315 UIDPLUS),  
(http://tools.ietf.org/html/rfc4731 ESEARCH),  
(http://tools.ietf.org/html/rfc5256 THREAD/SORT),  
(http://tools.ietf.org/html/rfc5267 ESORT), and  
(http://tools.ietf.org/html/rfc5819 LIST-STATUS) - most of these  
extensions were specifically designed for  
(http://tools.ietf.org/html/rfc5550 disconnected clients) and vastly  
reduce the amount of bandwidth and processing need to keep the client  
synchronized with the server.
+ * Horde_Imap_Client was  
(http://lists.andrew.cmu.edu/pipermail/imapproxy-info/2008-October/000771.html  
responsible) for features added to (http://imapproxy.org/ 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.

  ++ Resources

  The library code can be found at  
http://git.horde.org/horde-git/-/browse/framework/Imap_Client/
+Developer documentation (API) can be found at  
http://dev.horde.org/api/framework/Imap_Client/

  ----
  Back to the ((Projects|Project List))



More information about the commits mailing list