On 2.8.2013, at 19.18, Richard Platel <rplatel@tucows.com> wrote:
I'm not exactly sure what you thought of, but my idea was simply that you'd add your own dict proxy in the middle which hooks into the GET command, and increases its value by reading the filestoresize. You can already do that by pointing to a UNIX socket different from the normal dict server socket, similar as in http://wiki2.dovecot.org/AuthDatabase/Dict
If, for example, the user has 2GB quota, and 750MB of mail, and 500MB of files, we'd like the mail client to show that the user has 2GB quota, and 1.25GB used, .75GB free.
I see how via the dict userdb proxy I could reduce the user's quota allowance by the filestorage amount: quota_rule=*:storage=<user allowed storage - filestore size>, and the client would show the correct free amount, but not the correct total or used amount.
Is this what you mean, or is there some other setting or some other dict proxy entirely that I'm missing?
I didn't mean userdb dict proxy. I meant you'd use dict backend for calculating quota instead of Maildir++. http://wiki2.dovecot.org/Quota/Dict
So for example you could still keep using the file based quota and first step would be to configure:
plugin { quota = dict:User quota::file:%h/Maildir/dovecot-quota }
Next I thought you could have configured dict proxy to access the file, but %h or ~/ don't actually work there.. So you'd probably have to implement the whole file access via your dict server:
plugin { quota = dict:User quota::proxy:/var/run/dovecot/tucows-quota:quota }
Then you'd have a process listening on tucows-quota UNIX socket that handles the get/set/unset/atomic-inc dict commands. Or alternatively implement a new dict backend as a Dovecot plugin that does the same thing:
plugin { quota = dict:User quota::proxy::quota } dict { quota = tucowsquota: }