On Sep 21, 2009, at 12:32 PM, Chang Song wrote:

This is something completely new.
We are connecting to our pre-existing custom-made mail server.
IMAP needs to be plugged into the infrastructure.

OK, so you do have some existing mails that need to be accessed.

So basically we can simply use existing index_* since we need to have
index files (on local fs) no matter what.

Right. And even if you didn't use actual index files, the same index_*() functions will be useful for in-memory indexes.

I saw dbox source file there. Is the layer stable (as far as API goes)?
Tell me more about the abstraction layer.

It probably won't be useful then, because if you have existing mails they won't be in dbox format. I guess you could maybe do some kind of translation on the fly, but that could just be more trouble than implementing your own storage backend.

I'd probably start by implementing your own mailbox-list backend. Then you could see that IMAP's LIST, CREATE, DELETE, RENAME commands work. That should be somewhat easy to do. You could temporarily just use e.g. Maildir backend and:

mail_location = maildir:~/Maildir:LAYOUT=rpc

After that works, create "rpc" mail-storage as well. cydir might be a good an easy example. The biggest problem is the "mailbox_sync" part. It's easiest if you can just trust that the local index files are up- to-date, otherwise you somehow need to figure out what had changed in the mailbox and update the indexes.

Reply via email to