Re: [Dovecot] Multiple quota roots with quota-fs backend
Hello Stewart,
You have to previously know or have determined: a) what FS's are under quota
That's easy in my case, because each filesystem is listed in dovecot.conf:
quota = fs:"Spool":mount=/var/spool/mail quota2 = fs:"Home0":mount=/home/f0 quota3 = fs:"Home1":mount=/home/f1 quota4 = fs:"Home2":mount=/home/f2 quota5 = fs:"Home3":mount=/home/f3 ...
AND b) know which ones the user uses
That should be easy to, because they are listed in mail_location. In my case this is: mail_location = mbox:~/Mail:INBOX=/var/spool/mail/%n
AND c) then make multiple calls, one for each FS that the user has stuff in
Let take 'quota_transaction_set_limits' as example:
If I understand Timo's source code correctly this is done by looping through the mountpoints of all quota roots. But then, and this is a problem, the lowest quota limit is used, because it is not checked, if the mbox file acctually _resides_ in this filesystem.
Well... I think what this behavior could be "fixed" in the same way I've used for GETQUOTAROOT:
I've just implemented a callback function 'root_match_box' that returns 'true', if a Mailbox resides on the filesystem defined "mount=" in quota definition and 'false' if not. This optional function is used in 'quota_root_iter_next' to filter the list of all quota roots.
From the source code: ----------------------8<---------------------------------------------- roots = array_get(&iter->quota->roots, &count); if (iter->i >= count) return NULL;
for (; iter->i < count; iter->i++) {
if (roots[iter->i]->backend.v.root_match_box != NULL) {
if (!roots[iter->i]->backend.v.root_match_box(roots[iter->i],
iter->box))
continue;
}
...
} ---------------------->8----------------------------------------------
The same should be correct in quota_transaction_set_limits, quota_transaction_commit and quota_default_test_alloc
But I should have a deeper look at this... :-)
BTW: If this behavior is indeed AIX specific, that's no problem, In this case the function should always returning 'true' or just not be included in the list of callback functions.
Regards, Ralf
--
Dipl.-Inform. (FH) Ralf Becker Rechenzentrum (r/ft) der FH Trier (Network|Mail|Web|Firewall) University of applied sciences Administrator Schneidershof, D-54293 Trier
Mail: beckerr@fh-trier.de Fon: +49 651 8103 499 WWW: http://www.fh-trier.de/~beckerr Fax: +49 651 8103 214
participants (1)
-
Ralf Becker