[Dovecot] Adding new storage backend to Dovecot

Timo Sirainen tss at iki.fi
Thu Apr 24 15:45:35 EEST 2008


On Tue, 2008-04-22 at 20:15 -0700, Earl Dreller wrote:
> I'm exploring adding a new storage backend to dovecot, storing mail in some
> sort of database, and had a few questions. Hoping someone here might be able
> to help :)
> 
> -Is all of the 'storage' specific code in housed in lib-storage/index? Would
> adding a new storage backend be as simple as recreating all of the public
> functions of the current /mbox or /maildir code such as they pertain to that
> storage mechanism?

That's the simplest way to get started, but you may want to add
optimizations so that e.g. when FETCHing multiple different fields you
ask all the wanted information from database at once, instead of one at
a time.

> -Where is the particular storage method controlled? I've had a look around
> but can't seem to find where the decision to use the 'mbox' or 'maildir'
> code is.

lib-storage/mail-storage.c mail_storage_create() receives the driver.
It's configured by the user in mail_location setting, or if it's
unspecified it's tried to be autodetected.

> -Finally, if there isn't a filesystem associated with the mail storage area,
> obviously the index data code will need to change somewhere. Any ideas on
> the complexities of that?

You should keep using the indexing code, just make it be in-memory.

Look at http://dovecot.org/list/dovecot/2007-November/026632.html as an
example, although I don't know if it still compiles. In any case don't
even bother trying to implement this for v1.0, it's a lot easier with
v1.1. v1.1 also has a minimal cydir backend that's easier to follow than
mbox/maildir.
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 189 bytes
Desc: This is a digitally signed message part
Url : http://dovecot.org/pipermail/dovecot/attachments/20080424/05b75449/attachment.bin 


More information about the dovecot mailing list