Re: Re: Quota count and clone questions
Hi,
I presume you figured this out after all this time, but in any case.
Since quota_clone is not cumulative, it always inserts new record with actual quota, to be able to get correct results in postfixadmin one must: DROP TRIGGER mergequota2 ON quota2;
And to prevent ERROR: duplicate key value violates unique constraint "quota2_pkey": CREATE FUNCTION public.clone_quota2() RETURNS trigger LANGUAGE plpgsql AS $$ BEGIN UPDATE quota2 SET bytes = NEW.bytes, messages = NEW.messages WHERE username = NEW.username; IF found THEN RETURN NULL; ELSE RETURN NEW; END IF; END; $$;
And then: CREATE TRIGGER clonequota2 BEFORE INSERT ON quota2 FOR EACH ROW EXECUTE PROCEDURE public.clone_quota2() ;
And finally just put: quota_clone_dict = proxy::sqlquota
Hope this helps somebody trying to figure out this too.
I figured out that I can't just drop maintaining quota2 if I want postfixadmin to report the quota status.
I also figured out a way to run a test on my config guesses. I will try to fit it in today, or tomorrow. But any advise to the questions below are welcomed!
On 2/13/19 8:53 PM, Robert Moskowitz via dovecot wrote: all this almost reads like I can drop maintaining the quota2 table?
From https://wiki.dovecot.org/Quota/Count
mailbox_list_index = yes
Avoid spending excessive time waiting for the quota calculation to
finish when
mails' vsizes aren't already cached. If this many mails are opened,
finish the
quota calculation on background in indexer-worker process. Mail
deliveries will
be assumed to succeed, and explicit quota lookups will return
internal error. mail_vsize_bg_after_count = 100
seems to belong in 10-mail.conf. That is where those var are shown.
But:
plugin {
10MB quota limit
quota = count:User quota quota_rule = *:storage=10M
This is required - it uses "virtual sizes" rather than "physical
sizes" for quota counting: quota_vsizes = yes }
I am having problems with. Right now for quota I have:
plugin { quota = dict:user::proxy::sqlquota trash = /etc/dovecot/dovecot-trash.conf.ext }
How do I reconcile these two?
Then for clone: https://wiki.dovecot.org/Plugins/QuotaClone
how does:
mail_plugins = $mail_plugins quota quota_clone plugin { quota_clone_dict = redis:host=127.0.0.1:port=6379 }
get replaced with something for mysql?
dovecot-sql.conf.ext:
driver = mysql connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=$Postfix_Database_Password default_pass_scheme = $cryptsha-CRYPT
following should all be on one line.
password_query = SELECT username as user, password, concat('/home/vmail/', maildir) as userdb_home, concat('maildir:/home/vmail/', maildir) as userdb_mail, 101 as userdb_uid, 12 as userdb_gid FROM mailbox WHERE username = '%u' AND active = '1'
following should all be on one line
user_query = SELECT concat('/home/vmail/', maildir) as home, concat('maildir:/home/vmail/', maildir) as mail, 101 AS uid, 12 AS gid, CONCAT('*:messages=30000:bytes=', quota) as quota_rule FROM mailbox WHERE username = '%u' AND active = '1'
and
dovecot-dict-sql.conf.ext:
connect = host=/var/lib/mysql/mysql.sock dbname=postfix user=postfix password=$Postfix_Database_Password map { pattern = priv/quota/storage table = quota2 username_field = username value_field = bytes } map { pattern = priv/quota/messages table = quota2 username_field = username value_field = messages }
thanks
participants (1)
-
Bratislav ILIC