This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 6 and 7
Revision 6 as of 2006-10-22 08:59:22
Size: 2226
Editor: TimoSirainen
Comment: actually quota is in kilobytes..
Revision 7 as of 2006-11-30 15:14:07
Size: 2431
Editor: TimoSirainen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 41: Line 41:
user_query = SELECT home, uid, gid, 'dirsize:storage=' || quota_kb AS quota FROM users WHERE userid = '%u' }}} # PostgreSQL
user_query = SELECT home, uid, gid, 'dirsize:storage=' || quota_kb AS quota FROM users WHERE userid = '%u'
# MySQL doesn't support the || operator, so you'll need to do differently:
user_query = SELECT home, uid, gid, concat('dirsize:storage=', quota_kb) AS quota FROM users WHERE userid = '%u'
}}}

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. 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 field from the user database. See UserDatabase for more information about how to set them for the user database you are using. Here is an example using a SQL-based user database:

# PostgreSQL
user_query = SELECT home, uid, gid, 'dirsize:storage=' || quota_kb AS quota FROM users WHERE userid = '%u'
# MySQL doesn't support the || operator, so you'll need to do differently:
user_query = SELECT home, uid, gid, concat('dirsize:storage=', quota_kb) 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 

None: Quota (last edited 2021-06-15 23:54:28 by MichaelSlusarz)