This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 34 and 35
Revision 34 as of 2010-07-30 15:07:53
Size: 2687
Editor: TimoSirainen
Revision 35 as of 2010-07-30 15:17:45
Size: 2519
Editor: TimoSirainen
Comment: Plugin dependency error message is clearer now in code, no need to duplicate it here.
Deletions are marked like this. Additions are marked like this.
Line 29: Line 29:
If you get the error message "Can't load plugin imap_quota_plugin: Plugin quota must be loaded also", you forgot to load the global quota plugin as described above.


Quota backend specifies the method how Dovecot keeps track of the current quota usage. They don't (usually) specify users' quota limits, that's done by returning extra fields from userdb. There are different quota backends that Dovecot can use:

  • fs: Filesystem quota.

  • dirsize: The simplest and slowest quota backend, but it works quite well with mboxes.

  • dict: Store quota usage in a dictionary (e.g. SQL).

  • maildir: Store quota usage in Maildir++ maildirsize files. This is the most commonly used quota for virtual users.

Enabling quota plugins

There are 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.

Enable them in configuration files, e.g.:


mail_plugins = $mail_plugins quota


protocol imap {
  mail_plugins = $mail_plugins imap_quota


See Quota/Configuration for backend-independent quota configuration.

Quota recalculation

If your quotas are out of sync, you can use doveadm quota recalc command to recalculate them.

Quota and Trash mailbox

Standard way to expunge messages with IMAP works by:

  1. Marking message with \Deleted flag
  2. Actually expunging the message using EXPUNGE command

Both of these commands can be successfully used while user's quota is full. However many clients use a "move-to-Trash" feature, which works by:

  1. COPY the message to Trash mailbox
  2. Mark the message with \Deleted
  3. Expunge the message from the original mailbox.
  4. (Maybe later expunge the message from Trash when "clean trash" feature is used)

If user is over quota (or just under it), the first COPY command will fail and user may get an unintuitive message about not being able to delete messages because user is over quota. The possible solutions for this are:

  • Disable move-to-trash feature from client
  • You can create a separate quota rule ignoring Trash mailbox's quota. Note that this would allow users to store messages infinitely to the mailbox.
  • You can create a separate quota rule giving Trash mailbox somewhat higher quota limit (but not unlimited).

To make sure users don't start keeping messages permanently in Trash you can use a nightly cronjob to expunge old messages from Trash mailbox.

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