Size: 2916
Comment:
|
← Revision 49 as of 2021-06-15 23:54:28 ⇥
Size: 69
Comment:
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
= Quota = There are different quota backends that Dovecot can use: * [wiki:Quota/FS fs]: Filesystem quota. * [wiki:Quota/Dirsize dirsize]: The simplest, but sometimes slow, quota backend. It scans all the files from mail directories to calculate the quota. * [wiki:Quota/Dict dict]: Store quota in a dictionary (table). * [wiki:Quota/Maildir maildir]: Maildir++ quota. The quota backends are implemented as plugins for Dovecot. There is also a plugin named "quota" which does the actual work [needs better clarification]. For reporting quota information via IMAP, there is the "imap_quota" plugin. Usually you'd enable these by adding them to the `mail_plugins` settings in config file: {{{ protocol imap { mail_plugins = quota imap_quota } protocol pop3 { mail_plugins = quota } # In case you're using Dovecot-LDA: protocol lda { mail_plugins = quota } }}} Most of the quota backends have a few things in common: You can set the quota as kilobytes (named '''storage''') and/or as number of messages (named '''messages'''). Usually only the '''storage''' quota is used. Usually these limits can be given to the quota backend as parameters, e.g.: {{{ plugin { # 10 MB quota limit quota = maildir:storage=10240 # 1000 messages quota limit quota = maildir:messages=1000 # 10 MB + 1000 messages quota limit quota = maildir:storage=10240:messages=1000 } }}} The above example shows how to set the same quota globally for everyone. You can override this for one or all users by returning a `quota` [:UserDatabase/ExtraFields:extra field] from the user database. See UserDatabase for more information about how to set them for the user database you are using. == Examples == === SQL === {{{ # MySQL user_query = SELECT home, uid, gid, concat('maildir:storage=', quota_kb) AS quota FROM users WHERE userid = '%u' # PostgreSQL user_query = SELECT home, uid, gid, 'maildir:storage=' || quota_kb AS quota FROM users WHERE userid = '%u' }}} === LDAP === {{{ # quotaStorage must be in the format mentioned above # For example: maildir:storage=10240 user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaStorage=quota # If you have the quota already as kilobytes in LDAP, there's a kludgy way to use it directly: user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaStorage=quota=maildir:storage }}} If you have the quota stored as bytes, you'll need to use a [:PostLoginScripting:post-login scripting] trick to use them. Something like: {{{ # quotaStorage contains the quota in bytes. It's exported into # $QUOTA_BYTES environment. user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaStorage=quota_bytes }}} And make imap's {{{mail_executable}}} point to a script: {{{ #!/bin/sh export QUOTA=maildir:storage=`expr $QUOTA_BYTES / 1024` exec /usr/local/libexec/dovecot/imap }}} |
Moved to https://doc.dovecot.org/configuration_manual/quota_plugin/ |