[Dovecot] Quota

Timo Sirainen tss at iki.fi
Sat Apr 23 17:04:00 EEST 2005


On 22.4.2005, at 02:26, Thomas Wouters wrote:

>>> The rquotad plugin is done, more or less, except for figuring out 
>>> how to
>>> properly get at a mailbox's physical location, if it has one. I 
>>> really
>>> don't want to maintain a static list in an environment variable; we
>>> currently use 10 different filesystems (all NFS) for mail storage, 
>>> and
>>> they all have different quotas and usage.
>
>> Well, that requires mbox/maildir-specific storage code then to get the
>> path.. I think zlib plugin checks that it works only with mboxes, that
>> might be helpful.
>
> Hmm. I currently cheat, casting the struct_mailbox to a struct 
> index_storage
> and using its 'dir' member. I don't even check that it is an 
> index_storage
> struct; I know I should, but when wouldn't it be ?

For now, yes.. I thought I had moved "dir" already out of it to 
mbox_storage though. Guess I did it only with index_mailbox.

>>> The quota-plugin thing obviously isn't quite done yet (at least, not 
>>> the
>>> tarball version from the patches/1.0 directory) -- it lacks some 
>>> error
>>> checking, I think,
>
>> I don't remember leaving anything intentionally?
>
> The one I ran into was cmd_getquotaroot not checking the return value 
> of
> quota_root_iter_init(), and my quota_root_iter_init() was failing.

It's not supposed to fail :) But I guess that iteration needs error 
checking as well. I changed quota_root_iter_deinit() return "int" where 
you can return -1 if it fails (just make init() return some dummy 
struct which causes next() to return NULL and deinit() to return -1).

Updated the plugin in web page.

> Something else I noticed was that the storage quota name should (for
> Thunderbird, at least) be allcaps, or it won't recognize it as storage
> quota. Thunderbird doesn't do message quota (which I implemented as 
> 'inode
> quota', as I'm maildir-centric) but I suspect that should probably be
> allcaps as well, for interoperability if nothing else.

It should be treated case-insensitive. Looks like Dovecot was using 
strcmp() to check its name, changed that. Changed also to use uppercase 
when sending the reply.

> And there's the bit where you need to set the MODULE_DIR and QUOTA
> environment variables and start imap by hand, rather than by dovecot. I
> hacked around that by hardcoding both in the source.

module_dir can be set in configuration file? Quota environment is also 
now forwarded from userdb as well. So it'd work at least with SQL and 
static userdbs..
-------------- next part --------------
A non-text attachment was scrubbed...
Name: PGP.sig
Type: application/pgp-signature
Size: 186 bytes
Desc: This is a digitally signed message part
URL: <http://dovecot.org/pipermail/dovecot/attachments/20050423/42799ae6/attachment-0001.bin>


More information about the dovecot mailing list