Dear imap developers,
we are using James 3 trunk in production for several weeks now. Great
work! The impression we got is that is already very stable at least in
our use case.
My personal mailbox is also running on that James IMAP server now. We
are using JPA/MySQL for mail storage. I am a big fan of huge mailboxes
(15000 mails/folder). After fixing three minor issues
(MAILBOX-197,MAILBOX-198,IMAP-375) Thunderbird and the mailclient on my
smartphone run smoothly even with those mailboxes.
There is only one thing left that bugs me: mailbox selection performance
Selecting a mailbox with 15000 mails takes 5 seconds on our server while
that one has 100% CPU load.
This is caused by class SelectedMailboxImpl which fetches all mails from
backing store mainly to achieve the following goals:
(a) determine applicable flags
(b) determine highestUid
(c) determine highestMsn (aka message count)
(d) create and maintain a MSN<>UID mapping
As far as I can see (a),(b) and (c) could be efficiently computed by the
store without fetching all mails.
Regarding (d):
I did some traces of real IMAP sessions on the TCP level. As far as I
can see most modern clients (at least the clients used by me) do not use
MSNs. Instead they do all the commands based on the UIDs. So perhaps the
MSN<>UID mapping could be lazily created when it is used the first time
(if it is used at all).
So here comes my question: Is anybody working in this area already or
would it make sense if I take a deeper look at it?
Regards,
Jan-Philipp Niewerth
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]