Size: 1159
Comment:
|
Size: 2229
Comment: minor linguistic improvements
|
Deletions are marked like this. | Additions are marked like this. |
Line 1: | Line 1: |
== Filesystem quota == | = Quota = |
Line 3: | Line 3: |
Dovecot doesn't work too well with filesystem quota currently. But there are a few things you can do: | There are different quota backends that Dovecot can use: |
Line 5: | Line 5: |
* Set index file location to some partition where there are no quota limits. Dovecot can't currently handle out-of-quota error conditions when updating indexes. * mbox should work somewhat nicely as long as `mbox_lazy_writes=yes` in config file. Although if user doesn't delete any mails when closing the mailbox, Dovecot gives an "internal error". * Maildir also needs to update `dovecot-uidlist` file, which can't handle out-of-quota errors. Its location can be set using "CONTROL" parameter in default_mail_env. |
* [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. |
Line 9: | Line 10: |
So, use something like: | 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: |
Line 12: | Line 13: |
# mbox: default_mail_env = mbox:%h/mail:INBOX=/var/mail/%u:INDEX=/var/no-quotas/index/%u |
protocol imap { mail_plugins = quota imap_quota } protocol pop3 { mail_plugins = quota } # In case you're using Dovecot-LDA: protocol lda { mail_plugins = quota } }}} |
Line 15: | Line 24: |
# maildir: default_mail_env = maildir:%h/Maildir:INDEX=/var/no-quotas/index/%u:CONTROL=/var/no-quotas/control/%u }}} |
Most of the quota backends have a few things in common: |
Line 19: | Line 26: |
== Software quotas == | 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.: |
Line 21: | Line 28: |
Dovecot 1.0 supports quota using a quota plugin. It's currently discussed in [wiki:LDA Dovecot LDA] page and it supports only very simple quota calculation which is suitable only for mboxes. Maildir++ quota support will come later. | {{{ 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: {{{ 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 }}} |
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:
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