Status of IMAP Protocol Support in James
The IMAP support in James is completely experimental. There are two IMAP proposals in the CVS. Both contain code that should be reviewed, and neither is probably what we want to end up with.
Original IMAP proposal. This had some work done on it by Peter Goldstein, as can be seen from the CVS logs.
proposals/imap2 - a new version started by Darrell DeBoer.
imap2 is a partial implementation of IMAP.
No cut-and-paste code
Solid, easy to use test harness and test suite (can make changes and test without needing to start James - speeds up development iterations)
The state of the code is that all commands are at least partially funcitonal, with basic protocol tests. I can connect to James-IMAP using KMail, check mail, move mail around, copy, etc.
The huge caveat is that the mail store is not persistent at the moment, it just held in memory. This is nice for testing, but not much good in real life. Discussion should take place regarding James v3 mail stores to ensure that all necessary IMAP features are supported.
Instructions for building James with IMAP support
Building the imap2 proposal
- Get the latest James sources from CVS.
- 'cd proposals/imap2'
Running the tests
- Build the imap2 proposal
- You will need junit.jar in your $ANT_HOME/lib directory
- 'ant -f build-test.xml unit-tests'
Known defects (also check bugzilla):
I've been using James for quite some time now. I really wanted IMAP support, but I'm a bit afraid of using the experimental versions. So I installed DBMail http://www.dbmail.org and used that as IMAP storage. The nice thing is that DBMail also stores it's data in MySQL (or other db). Of course, if you use this, you're not using a 100% java solution, and it won't be very portable. And you'll have more trouble configuring the users. I'll clean up the mailet code a bit and make it available. If you're interested, let me know: firstname.lastname@example.org
Open Zimbra Java IMAP Code as Reference
So the Zimbra Java IMAP mail server is open source. Would it make sense to take a look at the Zimbra source code to see if it could help with the James IMAP development. They have a production implementation of IMAP running now for their solution. It might be possible to integrate the source code directly, or at the very least use it as a working reference. Thoughts? kevbaker at yahoo dot com