This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 4 and 5
Revision 4 as of 2006-06-17 12:32:35
Size: 1586
Editor: TimoSirainen
Comment:
Revision 5 as of 2006-08-29 12:25:50
Size: 1607
Editor: TimoSirainen
Comment:
Deletions are marked like this. Additions are marked like this.
Line 26: Line 26:
  path varchar(255) not null primary key,
Line 28: Line 27:
  current integer   path varchar(255) not null,
  current integer,
  primary key (username, path)

Dictionary quota

The dictionary quota backend supports both storage and messages quota limits. The current quota is kept in a dictionary. Currently (as of 1.0.beta9 and later), the only supported dictionary backend is MySQL.

The plugin parameter format is dict:<quota limits> <dictionary URI>. For example:

plugin {
  # 10MB and 1000 messages quota limit
  quota = dict:storage=10240:messages=1000 mysql:/etc/dovecot-dict-quota.conf
} 

Example dovecot-dict-quota.conf:

connect = host=localhost dbname=mails user=mailuser
table = quota
select_field = current
where_field = path
username_field = username 

Create the table like this:

create table quota (
  username varchar(255) not null,
  path varchar(255) not null,
  current integer,
  primary key (username, path)
); 

Dictionary proxy server

To avoid each process making a new SQL connection, you can make all dictionary communications go through a dictionary server process which keeps the connections permanently open. (1.0 RC1 and later)

The dictionary server is referenced with URI proxy:<dictionary server socket path>:<dictionary name>. The socket path may be left empty if you haven't changed base_dir setting in dovecot.conf. Otherwise set it to <base_dir>/dict-server. The dictionary names are configured in dovecot.conf. For example:

dict {
  quotadict = mysql:/etc/dovecot-dict-quota.conf
} 

Example quota plugin configuration for this:

plugin {
  quota = dict:storage=10240:messages=1000 proxy::quotadict
} 

None: Quota/Dict (last edited 2017-04-12 09:00:54 by TimoSirainen)