This is the home page for AlphaMail, a mod_perl webmail solution with a C++ middleware component that is intended to make the system highly scalable. It is written using C++, perl, and HTML::Mason, and accesses mail stores through IMAPS. It is in active production use at the University of Oregon, and currently supports many *NIX variants with any RFC-compliant IMAP server including UW, Cyrus, and Dovecot.
Paginated PDF versions are linked from the text. I hope to have a way to obtain statistics for other open source web mail systems soon so that I can show comparisons. However, in the interim I have some great performance graphs from an active production system at the University of Oregon, which serves about 20,000-40,000 users a day.
These statistics include all IMAP network latencies and server processing of the request. They also include hits where a folder had to be opened (before it was cached), as well as when a page selection took the user to a new (uncached) section of the folder. The short requests are almost certainly hits that went to the cache only (because the cache already had the data), and the longer ones are the hits that required IMAP processing.
The very long ones (over 10 seconds) correspond to back-end IMAP contention, usually locks resulting from multiple client access (we support direct IMAP access which can compete with locks in the web mail if people use both, which unfortunately they sometimes do).
These numbers do not include client transfer times or browser rendering.
The production system was a dual 2GHz Opteron 246 x86_64 box with 4GB of memory. Here is the CPU usage graph for that system during the exact time period shown in the response time graphs. This graph uses running averages that span 5 minutes in order to smooth the noise (i.e. decoding an image for an icon view might cause a local 100% CPU spike). As you can see, the server is not ailing at all, and from a user perspective the response feels the same as from my idle development server. This indicates that it should be possible to serve about 40,000 users from this box before response time would be affected.
Another interesting graph is this scatter plot (older, but still valid), which shows that the folder size does not adversely affect response time: an intentional effect of the cache. Note: we are using mbox format, which should show horrible scaling for large numbers of messages.
IMAP servers such as Dovecot and Cyrus can help by being more efficient, but porting from one mailbox format to another in a large environment can be an immense undertaking. (There are scalability issues with Cyrus itself, since many institutions want to use NFS filers, and Cyrus does not support them.)
Version 1.0 was released on May 25, 2006. Various enhancements and bug fixes have appeared since then. See the Sourceforge site for details on the latest release.
See Milestones below for more information on general progress.
December, 2006
Tony Kay is moving to a research position, and will no longer have time to be the primary developer and maintainer of AlphaMail. He plans to continue to work with the project, but in much reduced capacity. It is likely that this will stall future extensions indefinitely, unless someone wishes to volunteer some development time.
You can get the source using the svn(1) command line utility. For example:
$ cd /usr/local/src $ svn export https://svn.sourceforge.net/svnroot/alphamail/releases/alphamail-1.0.24 alphamailwill get you release 1.0.24 (note that you will need autoconf for svn sources).
If you want to be able to pull updates on the fly (much better), then use:
$ cd /usr/local/src $ svn co https://svn.sourceforge.net/svnroot/alphamail/src/alphamail alphamail
You can then update the sources on a daily basis using:
$ cd /usr/local/src/alphamail $ svn update
NOTE: Development sources should not be treated as stable releases. They can be broken, or in a state of flux at any time.
Milestone | Description | Target Date | Date of Actual Completion |
---|---|---|---|
<0.70 | See ChangeLog for old version information | ||
1.0 | Official Release | June 1, 2006 | May 25, 2006 |
1.0.x | Latest Release | N/A | See ChangeLog (which may contain notes and projections on future releases as well) |
2.0 | Many planned features, including an AJAX interface mode with conversation views. | TBD. Only have one developer. Doing only bug fixes and minor enhancements at the present time. | TBD |
Mailing lists are hosted at the Source Forge Project page.
Source Builds
AlphaMail uses GNU autoconf 2.59, and builds cleanly on many platforms. The primary difficulty is meeting all of the dependencies for the Perl libraries. You must have mod_perl 2.0, libapreq2, and various perl modules. The cpan(1) command can build and install most of these without a problem. See the admin guide for a Quick Start guide.
I have tried to limit my dependencies to things that most modern distributions have access to in a package format. For many systems, run the configure script (which will report on missing or old Perl dependencies) and then just look for packages that resolve those.
Red Hat, Debian, Gentoo, etc.
We no longer have resources to maintain binary ports. Build files for various platforms are available in the aux/build subdirectory of SVN.
Mac OSX - Darwin Port
I have written a set of darwin port files for the Darwin Ports system. I do not have time to maintain, test, or update these, though I sometimes play with it when I want a version on my Mac Book Pro. I would be happy for a volunteer. The files are in the Devel SVN repository at aux/build/darwin/portfiles. They are also available from the releases directory, along with a guide to using them (OSX_HOWTO.txt). See also the local repository instructions at opendarwin.org.
Primary development was done by Tony Kay at the University of Oregon, where AlphaMail was adopted as the primary web mail interface.
Other contributors:
AlphaMail Logo by Tony Kay.
AlphaMail is free, and is licensed under the GPL. Participation and feedback is encouraged.
Please use the source forge tracker for reporting problems or feature requests. Please search for your issue before you enter a ticket.