[imp] disallow Dynamic View

Brendan Oakley gentux2 at gmail.com
Thu Jan 17 19:17:36 UTC 2013


Hi Ralf,

These are good questions. They raise some questions I am still investigating.

On Thu, Jan 17, 2013 at 12:44 AM, Ralf Lang wrote:
>
> Have you enabled imap caching in imp/config/backends.local.php ?
> Does your IMAP server support this setting?

No, caching is not currently enabled. Our IMAP backend does not
support CONDSTORE or QRESYNC. We may end up enabling it anyway, but
probably not. Since we use a pool of load balanced web servers and a
user might hit more than one, a local disk cache would end up
duplicated and possibly inconsistent, and it is unclear if a shared
SQL-based cache would perform significantly better. I wonder about the
overhead of repeatedly re-syncing, or worse, simultaneous re-syncs
from multiple web servers. Since only one Horde_Cache driver can be
selected, a database cache presumably would rule out leveraging
eAccelerator or XCache, unless I misunderstand something? I am still
exploring this.

> Did you consider using up-imapproxy?

This is being explored as well. Up-imapproxy is probably not the best
choice for our environment because of the need to select between
multiple IMAP hosts, so I am also considering NGINX and Perdition.

IMP's PERFORMANCE doc seems to imply that it would not work to have an
XIMAPPROXY-enabled proxy on each web server potentially accessing the
same mailbox on the IMAP host. Conceivably a single imap proxy
instance could be used by all the web servers on the network, but that
would seem to defeat the purpose.

With up-imapproxy, every logged-in user constantly has an open
connection to the IMAP server. This would vastly increase the number
of simultaneous open connections on our storage engine. This is is
currently untested. It may turn out to be fine, but it could end up
being a problem. So we need the webmail client to be able to work well
without it.

NGINX would work well to handle selection of the backend IMAP host,
but given its design goals it is unclear if it would be comparable in
benefit to up-imapproxy. The host selection can just as easily be done
in Horde.

In any case, while pursuing these performance considerations is
valuable, I still need dynamic mode to be disallowed, at least for
now. My solution only partly works actually. I did not consider the
case of 'auto'. I think I can work that out, but it's no longer clean
and simple. I wonder if a preauth hook is really the best place for
it.

Thanks
Brendan


More information about the imp mailing list