What is the imapproxy?

The name says almost all you need to know. It proxies IMAP transactions between an IMAP client and an IMAP server. The general idea is that the client should never know that it's not talking to the real IMAP server. The only thing that makes this a slightly unique Imap Proxy server is that it caches server connections.

[Top]


Why was imapproxy written in the first place?

imapproxy was written to compensate for webmail clients that are unable to maintain persistent connections to an IMAP server. Most webmail clients need to log in to an IMAP server for nearly every single transaction. This behaviour can cause tragic performance problems on the IMAP server. imapproxy tries to deal with this problem by leaving server connections open for a short time after a webmail client logs out. When the webmail client connects again, imapproxy will determine if there's a cached connection available and reuse it if possible.

[Top]


How does imapproxy keep track of which server connection is for which user?

Upon the first successful login to the real IMAP server (through the proxy), imapproxy fills in a little record that contains the username, an md5 digital signature of the password and the server socket descriptor that's being used. After you log out and then log back in again, imapproxy just has to find a record that matches your username and password. These records are stored in a hash table (with the username being the hash key) in memory, so the lookups are pretty fast.

[Top]


I set the cache expiration time for 5 minutes, but looking at my logs I noticed that connections are taking longer than 5 minutes to expire. Is this a bug?

This isn't a bug. Each time a client logs out of imapproxy, the real server connection is left open and the logout time is stored in a record corresponding to the connection. Every 60 seconds, a thread wakes up and expires every connection that's been logged out at least cache_expiration_time seconds. If your cache expiration time is set to 5 minutes, a cached connection could potentially not be expired for nearly 6 minutes.

[Top]


What platforms will imapproxy run on?

Note that this list frequently falls out of date, but IMAP Proxy is known to run on at least most modern variants of *nix.

So far it's been tested on Solaris 8, Solaris 9, RedHat 7.3, RedHat 9, Fedora 4-13, RHEL/CentOS 4-5, IRIX 6.5, FreeBSD 5.0, and even Freetz. With some manual tweaking, it's known to run on older versions of FreeBSD and Mac OS X. If you're running it on a platform not listed here, let us know and we'll update this list.

[Top]


Is this the Horde Imap Proxy?

No. You can find information about the Horde Imap Proxy here. This one is the Imap Proxy commonly known as up-imapproxy. They're two totally different Imap Proxy servers. I just shortened the name from up-imapproxy to imapproxy when I registered the domain. I thought www.upimapproxy.org looked pretty stupid.

[Top]


What's up with all the Commodore references throughout the code, and that link to www.commodore.ca on your home page?

A couple of the people involved with supporting IMAP Proxy (Dave and Ray) just happen to like Commodore Computers. We have no official affiliation with Commodore International We did receive written permission to use the Commodore logo on this site. If you'd like to donate any old Commodore stuff, or if you just want to tell me how cool Commodore Computers are, send an email to davemcmurtrie@gmail.com.

[Top]


Can IMAP Proxy support multiple backend servers?

The short answer is yes. The long answer is, don't use a screwdriver to hammer in a nail. If you want IMAP Proxy to be able to proxy to multiple backend IMAP servers, you can run multiple instances of IMAP Proxy and make sure each instance is looking at a different configuration file. Before you do this, take a look at perdition which appears to have been designed with this specific task in mind.

[Top]


Will IMAP Proxy allow me to read my email offline?

No.

[Top]


I sent patches and they're not included yet. Are you ever going to include them?

Like most people, I get busy doing stuff. I can't always quantify exactly what that stuff is. Unless I specifically respond to your patch submission and tell you that I'm not going to include it for some reason, I do actually intend on including your patches in a future release. I'm quite behind on studying and applying patches right now. To anybody that has submitted patches that I have not yet made a part of IMAP Proxy, I really do appreciate your contributions and I apologize for not adding your hard work into this project.

[Top]


Can I use IMAP Proxy with regular IMAP clients or will it just work with WebMail clients?

You should be able to use IMAP Proxy with any IMAP client, however it is really intended to be used with stateless WebMail clients like IMP and SquirrelMail. If you're using something stateful like a real IMAP client, or a stateful WebMail client (Prayer, for example) you probably don't need this IMAP Proxy.

[Top]