I think you should begin with Dovecot v1.1 code which makes it a lot easier. It has Cydir format that is really simple and serves as a pretty good example of how to implement a new backend.
I've been digging though the cydir format. It looks fairly simple. Basically, the short gist of it is that I will be replacing some of the service calls (that retrieve data) with web service calls (to retrieve data). The data for the messages themselves (i.e. the envelope) is stored in a database.
So looking into the cydir, I see the retrieval and storage functions. Since this is read only, this part is pretty simple, I think.
But the Maildir list functions seem a little more complicated. I'm walking through them right now. From looking into it, it seems there are several functions that I will need to define in my own class to handle/override the existing core functions. Where can I get a list of all of the virtual functions that can be derived from, without digging through the code completely.
Also, keeping in mind that everything is basically read only from a client perspective, can I only implement the read functions and still end up with a working system?
Please bear in mind that my C skills are 10 years old, so a lot of this is a learning experience :).
BTW, you mentioned the FS backend. I didn't see that under lib-storage/*.
Gary
Cydir is a mail_storage backend, but you'll probably need to also implement mailbox_list backend. Shouldn't be too difficult by looking at FS and Maildir++ backends I think.