The rules must be consecutive,
if your global config has
quota_rule1
quota_rule2
then the userdb must return
quota_rule3. Or it will overwrite an existing rule.
Aki
> On 06/10/2021 13:07 Stephane Magnier <steph.mag220 at
netcourrier.com> wrote:
>
>
> Hi,
>
> OK, I wrote this :
>
>
> > userdb {
> > driver = passwd
> > args = /etc/dovecot/quota-overrides
> >
> > result_success=continue-ok
> >
> > # Override fields from passwd
> > #override_fields = home=/home/virtual/%u
> > }
> >
>
> but sorry I don't understand the following line
>
> username::::::::::quota_ruleX=... where X is the next rule number.
>
> What should I write ?...... for instance : azt000:quota_rule1=+160GB ?
something like that ??
>
>
>
>
> Le 06/10/2021 ? 10:13, Aki Tuomi a ?crit?:
>
> > That `*` there is actually mailbox mask. You have to return an
additional quota_ruleN from your userdb for that user.
> >
> > You can do e.g.
> >
> > userdb {
> > ..
> > result_success=continue-ok}
> > }
> >
> > userdb {
> > driver = passwd
> > args = /etc/dovecot/quota-overrides
> > }
> >
> > and put in there
> >
> > username::::::::::quota_ruleX=... where X is the next rule number.
> >
> > the count of : might be wrong.
> >
> > Aki
> >
> >
> > > On 06/10/2021 10:43 Stephane Magnier <steph.mag220 at
netcourrier.com> wrote:
> > >
> > >
> > > Hi Again,
> > >
> > > Juste another one...
> > >
> > > The quota I've decided is 30Gb for everybody
> > > I would like to add an exception for the user AZT000 so here is
my test :
> > >
> > > I put 60 GB for AZT000, but apparently, this is not seen :-( No
error message
> > > Is there a general syntax for a specific user ?
> > >
> > > NB: I tried :
> > > quota_rule = azt000:storage=+60GB orquota_rule1 =
azt000:storage=+60GB same results
> > >
> > >
> > >
> > >
> > > > plugin {
> > > > quota = maildir:User quota
> > > > quota_rule = *:storage=30GB
> > > > quota_rule2 = Trash:storage=+100MB
> > > > quota_rule3 = Spam:storage=+20%%
> > > > # quota_rule = *:storage=70GB
> > > > # quota_rule = *:storage=70GB
> > > > quota_rule = azt000:storage=+60GB
> > > >
> > > >
> > > Le 06/10/2021 ? 08:09, Stephane Magnier a ?crit?:
> > >
> > >
> > > > Great !! works fine..
> > > >
> > > > I had in fact, twice the same d?claration of quotat and
storage on the same file..... one of them was with an upper case "S"
for Storage..
> > > >
> > > > Thanks again
> > > >
> > > >
> > > > Le 06/10/2021 ? 07:50, Aki Tuomi a ?crit?:
> > > >
> > > >
> > > > > > On 06/10/2021 08:38 Stephane Magnier
<steph.mag220 at netcourrier.com> wrote:
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > > Le 06/10/2021 ? 06:51, Aki Tuomi a ?crit?:
> > > > > >
> > > > > >
> > > > > >
> > > > > > > > On 06/10/2021 07:30 Stephane Magnier
<steph.mag220 at netcourrier.com> wrote:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > Le 06/10/2021 ? 06:10, Stephane Magnier
a ?crit?:
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > > > Hi,
> > > > > > > > > I am just running Dovecot v 2.3.8
.. seems to work fine.
> > > > > > > > > I just add the quota plugin..
and.. I cannot see any differences.. I cannot see any information on Quota per
user.. No specific info on Log file :-(
> > > > > > > > >
> > > > > > > > > Any help please ?
> > > > > > > > >
> > > > > > > > > Tahnks for your help
> > > > > > > > >
> > > > > > > > > Here is my config :
> > > > > > > > >
> > > > > > > > >
> > > > > > > > > # 2.3.8 (9df20d2db):
/etc/dovecot/dovecot.conf
> > > > > > > > > # Pigeonhole version 0.5.8
(b7b03ba2)
> > > > > > > > > # OS: Linux
4.18.0-305.12.1.el8_4.x86_64 x86_64 CentOS Linux release 8.4.2105 nfs4
> > > > > > > > > # Hostname:
mbox1.intranet.office.itx
> > > > > > > > > auth_cache_negative_ttl = 5 mins
> > > > > > > > > auth_cache_ttl = 5 mins
> > > > > > > > > auth_mechanisms = plain login
> > > > > > > > > auth_username_format = %u
> > > > > > > > > debug_log_path =
/var/log/dovecot-debug.log
> > > > > > > > > default_vsz_limit = 4 G
> > > > > > > > > info_log_path =
/var/log/dovecot-info.log
> > > > > > > > > listen = * [::]
> > > > > > > > > log_path = /var/log/dovecot.log
> > > > > > > > > login_trusted_networks =
172.18.0.0/16 127.0.0.1 ::1
> > > > > > > > > mail_access_groups = dovecot
> > > > > > > > > mail_fsync = always
> > > > > > > > > mail_location =
maildir:/var/spool2/mail/%u:LAYOUT=fs
> > > > > > > > > mail_nfs_storage = yes
> > > > > > > > > mail_plugins = " quota"
> > > > > > > > > mail_privileged_group = mail
> > > > > > > > > managesieve_notify_capability =
mailto
> > > > > > > > > managesieve_sieve_capability =
fileinto reject envelope encoded-character vacation subaddress
comparator-i;ascii-numeric relational regex imap4flags copy include variables
body enotify environment mailbox date ihave
> > > > > > > > > mbox_very_dirty_syncs = yes
> > > > > > > > > mbox_write_locks = fcntl
> > > > > > > > > mmap_disable = yes
> > > > > > > > > namespace inbox {
> > > > > > > > > disabled = no
> > > > > > > > > ignore_on_failure = no
> > > > > > > > > inbox = yes
> > > > > > > > > list = yes
> > > > > > > > > location =
> > > > > > > > > mailbox Archive {
> > > > > > > > > auto = no
> > > > > > > > > comment = " All my
Accepted/NON SPAM"
> > > > > > > > > special_use = \Archive
> > > > > > > > > }
> > > > > > > > > mailbox Drafts {
> > > > > > > > > auto = subscribe
> > > > > > > > > special_use = \Drafts
> > > > > > > > > }
> > > > > > > > > mailbox Junk {
> > > > > > > > > auto = subscribe
> > > > > > > > > autoexpunge = 90 days
> > > > > > > > > special_use = \Junk
> > > > > > > > > }
> > > > > > > > > mailbox Sent {
> > > > > > > > > auto = subscribe
> > > > > > > > > special_use = \Sent
> > > > > > > > > }
> > > > > > > > > mailbox Trash {
> > > > > > > > > auto = no
> > > > > > > > > autoexpunge = 60 days
> > > > > > > > > special_use = \Trash
> > > > > > > > > }
> > > > > > > > > mailbox virtual/All {
> > > > > > > > > auto = no
> > > > > > > > > special_use = \All
> > > > > > > > > }
> > > > > > > > > prefix =
> > > > > > > > > subscriptions = yes
> > > > > > > > > type = private
> > > > > > > > > }
> > > > > > > > > passdb {
> > > > > > > > > driver = pam
> > > > > > > > > }
> > > > > > > > > plugin {
> > > > > > > > > quota_grace = 10%%
> > > > > > > > > quota_max_mail_size = 100M
> > > > > > > > > quota_rule = *:storage=10000M
> > > > > > > > > quota_rule2 = Trash:Storage=+100M
> > > > > > > > > quota_rule3 = Spam:storage=+20%%
> > > > > > > > > quota_status_nouser = DUNNO
> > > > > > > > > quota_status_overquota = 552
5.2.2 Mailbox is full
> > > > > > > > > quota_status_success = DUNNO
> > > > > > > > > quota_warning = storage=95%%
quota-warning 95 %u
> > > > > > > > > quota_warning2 = storage=80%%
quota-warning 80 %u
> > > > > > > > > quota_warning3 = -storage=100%%
quota-warning below %u
> > > > > > > > > sieve =
file:~/sieve;active=~/.dovecot.sieve
> > > > > > > > > }
> > > > > > > > > pop3_uidl_format = %v-%u
> > > > > > > > > service auth {
> > > > > > > > > unix_listener auth-master {
> > > > > > > > > mode = 0666
> > > > > > > > > }
> > > > > > > > > unix_listener auth-userdb {
> > > > > > > > > mode = 0600
> > > > > > > > > user = mail
> > > > > > > > > }
> > > > > > > > > }
> > > > > > > > > service dict {
> > > > > > > > > unix_listener dict {
> > > > > > > > > mode = 0600
> > > > > > > > > user = mail
> > > > > > > > > }
> > > > > > > > > }
> > > > > > > > > service imap-login {
> > > > > > > > > inet_listener imap {
> > > > > > > > > port = 143
> > > > > > > > > }
> > > > > > > > > inet_listener imaps {
> > > > > > > > > port = 993
> > > > > > > > > ssl = yes
> > > > > > > > > }
> > > > > > > > > process_min_avail = 4
> > > > > > > > > service_count = 0
> > > > > > > > > }
> > > > > > > > > service lmtp {
> > > > > > > > > inet_listener lmtp {
> > > > > > > > > port = 24
> > > > > > > > > }
> > > > > > > > > unix_listener /var/run/lmtp {
> > > > > > > > > group = mail
> > > > > > > > > mode = 0660
> > > > > > > > > user = mail
> > > > > > > > > }
> > > > > > > > > }
> > > > > > > > > service pop3-login {
> > > > > > > > > inet_listener pop3 {
> > > > > > > > > address = *
> > > > > > > > > port = 110
> > > > > > > > > }
> > > > > > > > > inet_listener pop3s {
> > > > > > > > > port = 995
> > > > > > > > > ssl = yes
> > > > > > > > > }
> > > > > > > > > }
> > > > > > > > > service quota-warning {
> > > > > > > > > executable = script
/usr/local/bin/quota-warning.sh
> > > > > > > > > unix_listener quota-warning {
> > > > > > > > > user = mail
> > > > > > > > > }
> > > > > > > > > user = dovecot
> > > > > > > > > }
> > > > > > > > > service submission {
> > > > > > > > > process_limit = 250
> > > > > > > > > }
> > > > > > > > > ssl = required
> > > > > > > > > ssl_ca =
</etc/mail/ssl/ssl1/xxxxxp_net.ca-bundle
> > > > > > > > > ssl_cert =
</etc/mail/ssl/ssl1/xxxxxx_net.crt
> > > > > > > > > ssl_cipher_list =
HIGH:!aNULL:!ADH:!DH:!RC4:!MD5:!RSA
> > > > > > > > > ssl_dh = # hidden, use -P to show
it
> > > > > > > > > ssl_key = # hidden, use -P to show
it
> > > > > > > > > userdb {
> > > > > > > > > driver = passwd
> > > > > > > > > }
> > > > > > > > > verbose_proctitle = yes
> > > > > > > > > protocol lmtp {
> > > > > > > > > mail_fsync = optimized
> > > > > > > > > mail_plugins = autocreate quota
acl fts fts_solr zlib mail_log notify sieve
> > > > > > > > > postmaster_address = it at
intranet.office.itx
> > > > > > > > > }
> > > > > > > > > protocol lda {
> > > > > > > > > mail_fsync = optimized
> > > > > > > > > mail_plugins = " quota sieve
quota"
> > > > > > > > > }
> > > > > > > > > protocol imap {
> > > > > > > > > mail_max_userip_connections = 80
> > > > > > > > > mail_plugins = " quota quota
imap_quota"
> > > > > > > > > ssl_cert =
</etc/mail/ssl/ssl1/STAR_aztgrp_net.crt
> > > > > > > > > ssl_key = # hidden, use -P to
show it
> > > > > > > > > }
> > > > > > > > > protocol pop3 {
> > > > > > > > > mail_max_userip_connections = 10
> > > > > > > > > mail_plugins = " quota"
> > > > > > > > > }
> > > > > > > > > protocol submission {
> > > > > > > > > mail_max_userip_connections = 10
> > > > > > > > > mail_plugins = " quota"
> > > > > > > > > }
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > >
> > > > > > > > Just for info
> > > > > > > >
> > > > > > > > [root at mbox1 xenia]# doveadm quota
get -A |grep "STORAGE"
> > > > > > > > Nothing at all ?? weird
> > > > > > > > [root at mbox1 xenia]#
> > > > > > > >
> > > > > > > > [root at mbox1 xenia]# doveadm quota
get -u <user1>
> > > > > > > > Quota name Type Value Limit %
> > > > > > > > [root at mbox1 xenia]#
> > > > > > > > => Absolutely nothing is displayed
????
> > > > > > > >
> > > > > > > >
> > > > > > > > normally, the size of the user1 email
folder is about 21 Gb
> > > > > > > > So..just modified the line :quota_rule
= *:storage=100G
> > > > > > > > But nothing has changed...
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > >
> > > > > > > You are missing quota driver settings, the
recommended settings are
> > > > > > >
> > > > > > > plugin {
> > > > > > > quota = count
> > > > > > > quota_vsizes = yes
> > > > > > > }
> > > > > > >
> > > > > > > Aki
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > > Hi Aki,
> > > > > > Thanks for your reply..
> > > > > >
> > > > > > I just tryed to ad it.. but this can't
connect anymore .
> > > > > > Here is my exact declaration
"90-quota.conf"
> > > > > >
> > > > > > ( based on :
https://doc.dovecot.org/configuration_manual/quota/ )
> > > > > >
> > > > > >
> > > > > >
> > > > > > > plugin {
> > > > > > > quota = count
> > > > > > > quota_vsizes = yes
> > > > > > > #quota = maildir:User quota
> > > > > > > quota_rule = *:storage=100GB
> > > > > > > # quota_rule2 = Trash:storage=+100MB
> > > > > > > # quota_rule3 = Spam:storage=+20%%
> > > > > > > # 20% of 100GB = 20GB
> > > > > > > quota_status_success = DUNNO
> > > > > > > quota_status_nouser = DUNNO
> > > > > > > quota_status_overquota = "552 5.2.2
Mailbox is full"
> > > > > > > quota_warning = storage=95%% quota-warning
95 %u
> > > > > > > quota_warning2 = storage=80%% quota-warning
80 %u
> > > > > > > quota_warning3 = -storage=100%%
quota-warning below %u
> > > > > > >
> > > > > > > # LDA/LMTP allows saving the last mail to
bring user from under quota to
> > > > > > > # over quota, if the quota doesn't grow
too high. Default is to allow as
> > > > > > > # long as quota will stay under 10% above
the limit. Also allowed e.g. 10M.
> > > > > > > quota_grace = 10%%
> > > > > > >
> > > > > > > # Quota plugin can also limit the maximum
accepted mail size.
> > > > > > > quota_max_mail_size = 100M
> > > > > > > }
> > > > > > >
> > > > > > >
> > > > > > >
> > > > > >
> > > > > > The error message I have now is :
> > > > > >
> > > > > > Oct 06 07:23:35
imap(azt000)<7381><3pAIWajNgdcgAUHQ/kJ8Aikr1PIAQmFL>: Error: Failed
to initialize quota: Invalid quota root quota: Invalid rule Trash:Storage=+100M:
Unknown rule limit name: Storage
> > > > > > Oct 06 07:23:35
imap(azt000)<7382><jqwJWajNgtcgAUHQ/kJ8Aikr1PIAQmFL>: Error: Failed
to initialize quota: Invalid quota root quota: Invalid rule Trash:Storage=+100M:
Unknown rule limit name: Storage
> > > > > > Oct 06 07:26:02 master: Warning: Killed with
signal 15 (by pid=8420 uid=0 code=kill)
> > > > > > Oct 06 07:26:10
imap(azt000)<8468><cDRLYqjNcsSsEgA3>: Error: Failed to initialize
quota: Invalid quota root quota: Invalid rule Trash:Storage=+100M: Unknown rule
limit name: Storage
> > > > > > Oct 06 07:26:13
imap(azt000)<8469><mxN6YqjNdMSsEgA3>: Error: Failed to initialize
quota: Invalid quota root quota: Invalid rule Trash:Storage=+100M: Unknown rule
limit name: Storage
> > > > > >
> > > > > > Then you can see that I've removed the 2
lines
> > > > > > # quota_rule2 = Trash:storage=+100MB
> > > > > > # quota_rule3 = Spam:storage=+20%%
> > > > > >
> > > > > > but without any success
> > > > > >
> > > > > > Effectively.. what is the Word
"Storage" for Dovecot ?? no idea ... I just wrote what I saw :-)
> > > > > >
> > > > > > For info : all the mailbox are placed on a NFS
storage.. Don't know if this help to locate the problem..
> > > > > > Thanks and regards,
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > >
> > > > > Did you try changing Storage => storage in your
rule? It seems to be coming either from userdb or your config.
> > > > >
> > > > > Try `doveadm user azt000` to if your userdb is
providing these rules.
> > > > >
> > > > > Aki
> > > > >
> > > > >
>
>