This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.


There are different quota backends that Dovecot can use:

The quota is supported as a plugin for Dovecot. There exists a plugin named "quota" which does the actual work. For reporting quota information via IMAP there exists also "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 can be given to the quota backend as parameters, eg.:

plugin {
  # 10MB quota limit
  quota = maildir:storage=10240
  # 1000 messages quota limit
  quota = maildir:messages=1000
  # 10MB + 1000 messages quota limit
  quota = maildir:storage=10240:messages=1000

The above example shows how to set the same quota globally for everone. You can override this for one or all users by returning quota field from userdb. See UserDatabase for more information about how to set them for the userdb you're using. Here's an example using SQL userdb:

user_query = SELECT home, uid, gid, 'dirsize:storage=' || quota_bytes AS quota FROM users WHERE userid = '%u' 

With LDAP use something like:

# quotaStorage must be in the format mentioned above
# For example: dirsize:storage=10240
user_attrs = uid,homeDirectory,,,uidNumber,gidNumber,quotaStorage=quota

# If you have the quota already as kilobytes in LDAP, there's a kludgy way to use it directly:
user_attrs = uid,homeDirectory,,,uidNumber,gidNumber,quotaStorage=quota=dirsize:storage