Configuration problem user quota
Hi,
I'm doing a migration from dovecot 2.3 to 2.4. I can't find why the user quota is not respected.
In my case in version 2.3 the user quota where read from LDAP:
user_attrs = mailBase=home,mailMessageStore=mail,dovecotQuota=quota_rule=*:storage=%$
I can't find how I can configure this in 2.4. The documentation refers to "quota_rule" but how and where?
In 2.4 I have:
userdb ldap { userdb_use_worker = yes userdb_ldap_filter = (&(objectClass=PromptMailUser)(accountStatus=TRUE)(mailDeliveryaddress=%{user})) fields { home = %{ldap:mailBase} mail = %{ldap:mailMessageStore} mail_path = %{ldap:mailMessageStore} quota_storage_size = %{ldap:dovecotQuota} } }
quota "User quota" { storage_size = 5G warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } warning warn-80 { quota_storage_percentage = 80 execute quota-warning { args = 80 %{user} } } }
The global quota works (set on 5Gb). The command
doveadm -D quota get -u <user>
shows:
Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_backend_rescan (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_fts_flatcurve_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_fts_flatcurve_plugin.so: undefined symbol: fts_flatcurve_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: crypt_acl_setting_parser_info (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Loading modules from directory: /usr/lib/dovecot/modules Jan 21 13:53:34 Debug: Module loaded: /usr/lib/dovecot/modules/lib10_quota_plugin.so Jan 21 13:53:34 Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Jan 21 13:53:34 Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so Jan 21 13:53:34 Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_backend_rescan (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Skipping module doveadm_fts_flatcurve_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_fts_flatcurve_plugin.so: undefined symbol: fts_flatcurve_user_module (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: crypt_acl_setting_parser_info (this is usually intentional, so just ignore this message) Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: auth-master: userdb lookup(user@domain.xx): Started userdb lookup Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: auth-master: conn unix:/run/dovecot//auth-userdb: Connecting Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: auth-master: conn unix:/run/dovecot//auth-userdb (pid=229336,uid=0): Client connected (fd=9) Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: auth-master: conn unix:/run/dovecot//auth-userdb (pid=229336,uid=0): auth input: user@domain.xx home=/vmail/intern/user mail=/vmail/intern/user/Maildir/ mail_path=/vmail/intern/user/Maildir/ quota_storage_size=10G Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: auth-master: userdb lookup(user@domain.xx): auth USER input: user@domain.xx home=/vmail/intern/user mail=/vmail/intern/user/Maildir/ mail_path=/vmail/intern/user/Maildir/ quota_storage_size=10G Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: auth-master: userdb lookup(user@domain.xx): Finished userdb lookup (username=user@domain.xx home=/vmail/intern/user mail=/vmail/intern/user/Maildir/ mail_path=/vmail/intern/user/Maildir/ quota_storage_size=10G) Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: Added userdb setting: mail=/vmail/intern/user/Maildir/ Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: Added userdb setting: mail_path=/vmail/intern/user/Maildir/ Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: Added userdb setting: quota_storage_size=10G Jan 21 13:53:34 doveadm(user@domain.xx): Debug: Effective uid=118, gid=125, home=/vmail/intern/user Jan 21 13:53:34 doveadm(user@domain.xx): Debug: open(/proc/self/io) failed: Permission denied (euid=118(vmail) egid=125(vmail) missing +r perm: /proc/self/io) Jan 21 13:53:34 doveadm(user@domain.xx): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes Jan 21 13:53:34 doveadm(user@domain.xx): Debug: maildir++: root=/vmail/intern/user/Maildir, index=, indexpvt=, control=, inbox=/vmail/intern/user/Maildir, alt= Jan 21 13:53:34 doveadm(user@domain.xx): Debug: quota-count: quota_over_status check: quota_over_mask unset - skipping Jan 21 13:53:34 doveadm(user@domain.xx): Debug: Mailbox INBOX: Mailbox opened Jan 21 13:53:34 doveadm(user@domain.xx): Debug: User session is finished Jan 21 13:53:34 doveadm(user@domain.xx): Debug: auth-master: conn unix:/run/dovecot//auth-userdb (pid=229336,uid=0): Disconnected: Connection closed (fd=9) Quota name Type Value Limit % User quota STORAGE 9116042 5242880 173 User quota MESSAGE 60188 - 0
--
Cordialement,
*R.J. Baart
Hi,
I'm doing a migration from dovecot 2.3 to 2.4. I can't find why the user quota is not respected.
In my case in version 2.3 the user quota where read from LDAP:
user_attrs =
mailBase=home,mailMessageStore=mail,dovecotQuota=quota_rule=*:storage=%$
I can't find how I can configure this in 2.4. The documentation refers to "quota_rule" but how and where?
In 2.4 I have:
userdb ldap { userdb_use_worker = yes userdb_ldap_filter = (&(objectClass=PromptMailUser)(accountStatus=TRUE)(mailDeliveryaddress=%{user})) fields { home = %{[1]ldap:mailBase} mail = %{[2]ldap:mailMessageStore} mail_path = %{[3]ldap:mailMessageStore} quota_storage_size = %{[4]ldap:dovecotQuota} } }
quota "User quota" { storage_size = 5G warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } warning warn-80 { quota_storage_percentage = 80 execute quota-warning { args = 80 %{user} } } }
The global quota works (set on 5Gb). The command
doveadm -D quota get -u <user>
shows:
Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_quota_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so: undefined symbol: quota_user_module (this is usually intentional, so just ignore this message) Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_sieve_plugin.so Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_backend_rescan (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_fts_flatcurve_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_fts_flatcurve_plugin.so: undefined symbol: fts_flatcurve_user_module (this is usually intentional, so just ignore this message) Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: crypt_acl_setting_parser_info (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Loading modules from directory: /usr/lib/dovecot/modules Jan 21 13:53:34 Debug: Module loaded: /usr/lib/dovecot/modules/lib10_quota_plugin.so Jan 21 13:53:34 Debug: Loading modules from directory: /usr/lib/dovecot/modules/doveadm Jan 21 13:53:34 Debug: Skipping module doveadm_acl_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_acl_plugin.so: undefined symbol: acl_user_module (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Module loaded: /usr/lib/dovecot/modules/doveadm/lib10_doveadm_quota_plugin.so Jan 21 13:53:34 Debug: Skipping module doveadm_fts_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/lib20_doveadm_fts_plugin.so: undefined symbol: fts_backend_rescan (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Skipping module doveadm_fts_flatcurve_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_fts_flatcurve_plugin.so: undefined symbol: fts_flatcurve_user_module (this is usually intentional, so just ignore this message) Jan 21 13:53:34 Debug: Skipping module doveadm_mail_crypt_plugin, because dlopen() failed: /usr/lib/dovecot/modules/doveadm/libdoveadm_mail_crypt_plugin.so: undefined symbol: crypt_acl_setting_parser_info (this is usually intentional, so just ignore this message) Jan 21 13:53:34 doveadm([5]user@domain.xx)<229340><>: Debug: auth-master: userdb lookup([6]user@domain.xx): Started userdb lookup Jan 21 13:53:34 doveadm([7]user@domain.xx)<229340><>: Debug: auth-master: conn unix:/run/dovecot//auth-userdb: Connecting Jan 21 13:53:34 doveadm([8]user@domain.xx)<229340><>: Debug: auth-master: conn unix:/run/dovecot//auth-userdb (pid=229336,uid=0): Client connected (fd=9) Jan 21 13:53:34 doveadm([9]user@domain.xx)<229340><>: Debug: auth-master: conn unix:/run/dovecot//auth-userdb (pid=229336,uid=0): auth input: [10]user@domain.xx home=/vmail/intern/user mail=/vmail/intern/user/Maildir/ mail_path=/vmail/intern/user/Maildir/ quota_storage_size=10G Jan 21 13:53:34 doveadm([11]user@domain.xx)<229340><>: Debug: auth-master: userdb lookup([12]user@domain.xx): auth USER input: [13]user@domain.xx home=/vmail/intern/user mail=/vmail/intern/user/Maildir/ mail_path=/vmail/intern/user/Maildir/ quota_storage_size=10G Jan 21 13:53:34 doveadm([14]user@domain.xx)<229340><>: Debug: auth-master: userdb lookup([15]user@domain.xx): Finished userdb lookup ([16]username=user@domain.xx home=/vmail/intern/user mail=/vmail/intern/user/Maildir/ mail_path=/vmail/intern/user/Maildir/ quota_storage_size=10G) Jan 21 13:53:34 doveadm([17]user@domain.xx)<229340><>: Debug: Added userdb setting: mail=/vmail/intern/user/Maildir/ Jan 21 13:53:34 doveadm([18]user@domain.xx)<229340><>: Debug: Added userdb setting: mail_path=/vmail/intern/user/Maildir/ Jan 21 13:53:34 doveadm([19]user@domain.xx)<229340><>: Debug: Added userdb setting: quota_storage_size=10G Jan 21 13:53:34 doveadm([20]user@domain.xx): Debug: Effective uid=118, gid=125, home=/vmail/intern/user Jan 21 13:53:34 doveadm([21]user@domain.xx): Debug: open(/proc/self/io) failed: Permission denied (euid=118(vmail) egid=125(vmail) missing +r perm: /proc/self/io) Jan 21 13:53:34 doveadm([22]user@domain.xx): Debug: Namespace inbox: type=private, prefix=, sep=, inbox=yes, hidden=no, list=yes, subscriptions=yes Jan 21 13:53:34 doveadm([23]user@domain.xx): Debug: maildir++: root=/vmail/intern/user/Maildir, index=, indexpvt=, control=, inbox=/vmail/intern/user/Maildir, alt= Jan 21 13:53:34 doveadm([24]user@domain.xx): Debug: quota-count: quota_over_status check: quota_over_mask unset - skipping Jan 21 13:53:34 doveadm([25]user@domain.xx): Debug: Mailbox INBOX: Mailbox opened Jan 21 13:53:34 doveadm([26]user@domain.xx): Debug: User session is finished Jan 21 13:53:34 doveadm([27]user@domain.xx): Debug: auth-master: conn unix:/run/dovecot//auth-userdb (pid=229336,uid=0): Disconnected: Connection closed (fd=9) Quota name Type Value Limit % User quota STORAGE 9116042 5242880 173 User quota MESSAGE 60188 - 0
--
Cordialement,
R.J. Baart
References
Visible links
- file:///tmp/tmp_2m1p1xn/ldap:mailBase
- file:///tmp/tmp_2m1p1xn/ldap:mailMessageStore
- file:///tmp/tmp_2m1p1xn/ldap:mailMessageStore
- file:///tmp/tmp_2m1p1xn/ldap:dovecotQuota
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:username=user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
- mailto:user@domain.xx
On 21/01/2026 15:35 EET Ruud Baart via dovecot <dovecot@dovecot.org> wrote:
Hi,
I'm doing a migration from dovecot 2.3 to 2.4. I can't find why the user quota is not respected.
In my case in version 2.3 the user quota where read from LDAP:
user_attrs = mailBase=home,mailMessageStore=mail,dovecotQuota=quota_rule=*:storage=%$
I can't find how I can configure this in 2.4. The documentation refers to "quota_rule" but how and where?
In 2.4 I have:
userdb ldap { userdb_use_worker = yes userdb_ldap_filter = (&(objectClass=PromptMailUser)(accountStatus=TRUE)(mailDeliveryaddress=%{user})) fields { home = %{ldap:mailBase} mail = %{ldap:mailMessageStore} mail_path = %{ldap:mailMessageStore} quota_storage_size = %{ldap:dovecotQuota} } }
quota "User quota" { storage_size = warning warn-95 { quota_storage_percentage = 95 execute quota-warning { args = 95 %{user} } } warning warn-80 { quota_storage_percentage = 80 execute quota-warning { args = 80 %{user} } } }
Jan 21 13:53:34 doveadm(user@domain.xx)<229340><>: Debug: Added userdb setting: quota_storage_size=10G
You probably want to remove that
storage_size =
from user quota?
Aki
participants (2)
-
Aki Tuomi
-
Ruud Baart