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.
- proposals/imap
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
Simple architecture
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'
- 'ant'
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):