This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 12 and 13
Revision 12 as of 2007-05-02 03:28:52
Size: 2916
Editor: router
Comment:
Revision 13 as of 2007-06-11 14:28:37
Size: 2931
Editor: TimoSirainen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 10: Line 10:
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: 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:
Line 19: Line 24:
# In case you're using Dovecot-LDA: # In case you're using deliver:
Line 26: Line 31:
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.: You can set the quota as kilobytes (called '''storage''') and/or as number of messages (called '''messages'''). Usually only the '''storage''' quota is used. These limits can be given to the quota backend as parameters, e.g.:
Line 38: Line 43:
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. 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 (in the exact same format as above). See UserDatabase for more information about how to set them for the user database you are using.
Line 45: Line 50:
# MySQL # MySQL:
Line 47: Line 52:
# PostgreSQL # PostgreSQL, SQLite:

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.

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
} 

Most of the quota backends have a few things in common:

You can set the quota as kilobytes (called storage) and/or as number of messages (called messages). Usually only the storage quota is used. 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 (in the exact same format as above). 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, SQLite:
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:

export QUOTA=maildir:storage=`expr $QUOTA_BYTES / 1024`
exec /usr/local/libexec/dovecot/imap

None: Quota (last edited 2018-07-27 07:33:57 by 2001:2060:49:110:b60:5467:7acd:478d)