\documentclass{article}
\usepackage{ulem}
\pagestyle{headings}
\begin{document}
\tableofcontents

\part{ Horde IMAP Client library}
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.

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

C-client drivers for both IMAP and POP3 are also provided as proof-of-concept.

\section{ People}
Michael Slusarz created the library.

\section{ Description}
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\footnote{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+.

\section{ Features}
\begin{itemize}
\item{Fast. Horde\_Imap\_Client is orders of magnitude faster than the PHP imap extension (benchmarks to come).}
\begin{itemize}
\item{The PHP imap extension produces tremendously inefficient IMAP queries.  Horde\_Imap\_Client has been ruthlessly tuned to eliminate duplicate/unneeded queries.}
\end{itemize}
\item{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.}
\item{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.}
\item{Standards compliant. Horde\_Imap\_Client is strictly RFC compliant.}
\begin{itemize}
\item{Additionally, Horde\_Imap\_Client implements important core functionality that may not be available on your server.  Threading and \textbf{FULL} sorting (not a limited subset) are always available, regardless of whether your IMAP server supports the THREAD/SORT extensions.}
\end{itemize}
\item{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.}
\item{Easy debugging. Full IMAP logs are available via a single configuration option.}
\item{Advanced features.}
\begin{itemize}
\item{Horde\_Imap\_Client is the \textbf{ONLY} open-source PHP library that supports the CONDSTORE RFC 4551\footnote{http://tools.ietf.org/html/rfc4551} and QRESYNC RFC 5162\footnote{http://tools.ietf.org/html/rfc5162} 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.}
\item{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 RFC 2086\footnote{http://tools.ietf.org/html/rfc2086} or "new" style ACLs RFC 4314\footnote{http://tools.ietf.org/html/rfc4314}.}
\item{Supports, among others, MULTIAPPEND\footnote{http://tools.ietf.org/html/rfc3502}, CATENATE\footnote{http://tools.ietf.org/html/rfc4469}, UIDPLUS\footnote{http://tools.ietf.org/html/rfc4315}, ESEARCH\footnote{http://tools.ietf.org/html/rfc4731}, THREAD/SORT\footnote{http://tools.ietf.org/html/rfc5256}, ESORT\footnote{http://tools.ietf.org/html/rfc5267}, and LIST-STATUS\footnote{http://tools.ietf.org/html/rfc5819} - most of these extensions were specifically designed for disconnected clients\footnote{http://tools.ietf.org/html/rfc5550} and vastly reduce the amount of bandwidth and processing need to keep the client synchronized with the server.}
\item{Horde\_Imap\_Client was responsible\footnote{http://lists.andrew.cmu.edu/pipermail/imapproxy-info/2008-October/000771.html} for features added to imapproxy\footnote{http://imapproxy.org/} to eliminate the need to re-establish the session every time a user accesses the server.  Horde\_Imap\_Client is the \textbf{ONLY} open-source PHP library that leverages these features.  See this message\footnote{http://lists.horde.org/archives/imp/Week-of-Mon-20110523/052316.html} for more details.}
\end{itemize}
\end{itemize}
Further details can be found at http://lists.horde.org/archives/imp/Week-of-Mon-20110523/052285.html\footnote{http://lists.horde.org/archives/imp/Week-of-Mon-20110523/052285.html}.

\section{ Known Broken Imap Servers}
\begin{itemize}
\item{Courier (as of, at least, 4.5.0)}
\begin{itemize}
\item{SORT command on the server is broken - RFC 5256 [3] \textbf{REQUIRES} UTF-8 support, but Courier does not allow UTF-8 searches. Disabling the SORT capability on these servers is required (see imp/config/backends.php: capability\_ignore option).}
\end{itemize}
\item{Cyrus 2.4.14}
\begin{itemize}
\item{Reported that disabling caching will fix (Ticket \#11115\footnote{http://bugs.horde.org/ticket/11115})}
\end{itemize}
\end{itemize}
\section{ Resources}
The library code can be found at http://git.horde.org/horde-git/-/browse/framework/Imap\_Client/\footnote{http://git.horde.org/horde-git/-/browse/framework/Imap\_Client/}\newline
Developer documentation (API) can be found at http://dev.horde.org/api/master/lib/Imap\_Client/\footnote{http://dev.horde.org/api/master/lib/Imap\_Client/}


\noindent\rule{\textwidth}{1pt}
Back to the Project List\footnote{http://example.com/index.php?page=Project}

\end{document}
