On 20.4.2005, at 04:52, Thomas Wouters wrote:
The plugin seems a bit out-of-date, by the way; it passes the wrong number of arguments to 'mailbox_open', and uses a nonexistant function 'i_stream_get_size'.
Fixed and uploaded new quota.tar.gz to same place.
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.
I don't particularly care about checking quotas before an attempted write, but I implemented that as best I could; I still need to figure out how to decode the mail_transaction_context to see where a mail is moved from/to in order to finish it.
Probably just by checking if it's mbox/maildir and then casting struct mailbox to struct maildir_mailbox and looking what it contains.. Or if you actually want to see the filenames it gets more difficult.
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?
and a capability hook from what I can tell. (There *is* a capability for quotas, I hope, in IMAP ?) If you lack time but have an idea as to what needs to be done, I can work on it and submit patches.
After login you should be able to modify capability_string directly. Just append QUOTA there. But I think you'll have to modify the pre-login capability as well because some clients don't check it afterwards. I haven't really figured out yet what to do about it. One possibility would be to add some plugin_capability() function into the plugin and let login processes get capabilities of all plugins. But maybe it's not such a good idea. Easiest way would be just to put the capability string into config file.