|
Server : Apache/2.2.17 (Unix) mod_ssl/2.2.17 OpenSSL/0.9.8e-fips-rhel5 DAV/2 PHP/5.2.17 System : Linux localhost 2.6.18-419.el5 #1 SMP Fri Feb 24 22:47:42 UTC 2017 x86_64 User : nobody ( 99) PHP Version : 5.2.17 Disable Function : NONE Directory : /proc/21585/root/usr/share/doc/dovecot-1.0.7/wiki/ |
Upload File : |
Quota
=====
There are different quota backends that Dovecot can use:
* <fs> [Quota.FS.txt]: Filesystem quota.
* <dirsize> [Quota.Dirsize.txt]: The simplest, but sometimes slow, quota
backend. It scans all the files from mail directories to calculate the
quota.
* <dict> [Quota.Dict.txt]: Store quota in a dictionary (table).
* <maildir> [Quota.Maildir.txt]: 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' <extra field>
[UserDatabase.ExtraFields.txt] from the user database (in the exact same format
as above). See<UserDatabase.txt> 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 <post-login
scripting> [PostLoginScripting.txt] 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:
---%<-------------------------------------------------------------------------
#!/bin/sh
export QUOTA=maildir:storage=`expr $QUOTA_BYTES / 1024`
exec /usr/local/libexec/dovecot/imap
---%<-------------------------------------------------------------------------
(This file was created from the wiki on 2007-06-15 04:42)