Hi all, I've written an implementation of group quotas for dbmail-1.2.3
At the moment it works with postgres only, but please take a look and give me
feedback now, before I go on to change the mysql version and the admin tools.
I've attached a patch for src/dbmail-1.2.3/pgsql/dbpgsql.c
Implementation is as follows:
Users are grouped by their client_idnr.
To create a limit of 10M for client number 2, insert the following into the
config table:
INSERT INTO config (item,value) VALUES ('client_maxmail_2',10485760)
When a mail arrives, following procedure is followed:
First, the user's individual maxmail is checked as normal.
If the message passes that check, then the config table is checked for a limit
for his client_idnr.
If no such limit exists, or the limit is 0, the message is allowed.
If a limit does exist, the size of all mailboxes belonging to users with that
client_idnr is calculated.
If the message would push the usage over the client's limit, the message is
rejected, otherwise the message is allowed.
This gives the flexability to retain a limit on individual accounts in the
group, while allowing other members to use up as much of the group quota as
they want.
The one thing that cannot be done is to give a user within the group unlimited
usage regardless of the group quota. That would defy the point of group quotas,
although there is an easy workaround which I could implement should there be
demand for it.
I've also changed the logic in the individual test -
it used to first calculate the total usage for that individual, and then
retrieve the individual's limit.
It now retrieves the limit first, and if it's 0, it skips calculating the
user's usage.
I'll wait until people have had a chance to find problems with the
implementation before writing the mysql version.
Also, I'll alter dbmail-adduser to let quotas be set with it.
Any suggestions as to the syntax for this?
I'm thinking of using
dbmail-adduser g clientid -q maxmail
As soon as I have it done for 1.2.x, I'll do it for 2.x, so the sooner I get
feedback, the sooner it can get into the tree.
-fr.
--
Feargal Reilly,
Codeshifter,
Chrysalink Systems.
dbpgsql.c.patch
Description: Binary data
pgpTRTggztsWc.pgp
Description: PGP signature
