Size: 3564
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 and slowest quota backend. * [wiki:Quota/Dict dict]: Store quota in a dictionary (e.g. SQL). * [wiki:Quota/Maildir maildir]: Maildir++ quota. This is the most commonly used quota for virtual users. See ["Quota/New"] for Dovecot v1.1 / quota-rewrite patch quota configuration. == Enabling quota plugins == There are currently two quota related plugins: * quota: Implements the actual quota handling and includes also all the quota backends. * imap_quota: For reporting quota information via IMAP. Usually you'd enable these by adding them to the {{{mail_plugins}}} settings in the config file: {{{ protocol imap { mail_plugins = quota imap_quota } protocol pop3 { mail_plugins = quota } # In case you're using deliver: protocol lda { mail_plugins = quota } }}} == Configuring quota == Most of the quota backends have very similar configuration. They support two kinds of quota limits: * '''storage''': Quota limit in kilobytes. * '''messages''': Quota limit in number of messages. This isn't probably very useful. You can configure quota globally by placing the settings in plugin section in {{{dovecot.conf}}} and you can give per-user limits by having your [:UserDatabase:userdb] return the quota setting as an [:UserDatabase/ExtraFields:extra field]. The userdb quota setting always overrides the global plugin setting. The important thing to remember is to '''use the correct format for quota setting'''. You can't just return a numeric quota field from userdb and expect it to work. Dovecot wouldn't then know what quota backend to use. Here is an example global quota configuration: {{{ plugin { # 10 MB + 1000 messages quota limit quota = maildir:storage=10240:messages=1000 } }}} Now if you want to override this for some users, make your userdb return quota field '''in the exact same format'''. See below for some examples. == Examples == === SQL === {{{ # MySQL, quota in kilobytes: user_query = SELECT home, uid, gid, concat('maildir:storage=', quota_kb) AS quota FROM users WHERE userid = '%u' # MySQL, quota in bytes: user_query = SELECT home, uid, gid, concat('maildir:storage=', floor(quota/1024)) AS quota FROM users WHERE userid = '%u' # PostgreSQL, SQLite, quota in kilobytes: user_query = SELECT home, uid, gid, 'maildir:storage=' || quota_kb AS quota FROM users WHERE userid = '%u' }}} === LDAP === The easiest way from Dovecot's point of view is if you already have the quota in Dovecot's format in LDAP (e.g. {{{maildir:storage=102400}}}. Then you can use a configuration like this: {{{ user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaDovecot=quota }}} Unfortunately usually this isn't the case. So if you have the quota in kilobytes in LDAP, you can use it in a bit kludgy way: {{{ user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaKb=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: {{{ # quotaBytes is exported to $QUOTA_BYTES environment user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaBytes=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/ |