This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.

User database extra fields

A user database lookup typically returns [:UserDatabase:uid, gid, home and mail] fields. Other possibilities are:

Most commonly settings are overridden from plugin section. For example if your plugin section has quota=maildir:storage=1024 value and the userdb lookup returns quota=maildir:storage=2048, the original quota setting gets overridden. In fact if the lookup always returns a quota field, there's no point in having the quota setting in plugin section at all, because it always gets overridden anyway.

To understand how imap and pop3 processes see their settings, it may be helpful to know how Dovecot internally passes them:

  1. All actual settings are first placed into environment variables. The environment name may be different than the setting name.
  2. Everything inside plugin section is placed into environment variables. [:Variables:%variables] in values are expanded first.

  3. Everything from userdb lookup is placed into environment variables.
  4. At this point if [:PostLoginScripting:post-login scripting is used], it may modify the environment if wanted.

  5. imap/pop3 reads the settings from environment variables. It doesn't matter how they got there, they're read the exact same way.

At each step if the environment variable already exists, it's replaced with the new value (ie. the setting is overridden).

Note that

Examples

SQL

dovecot-sql.conf:

# NOTE: \ line splitting works only with v1.1
user_query = SELECT home, uid, gid, \
  'quota=maildir:storage=1024' as quota, mail_plugins \
  FROM users WHERE userid = '%u'

LDAP

dovecot-ldap.conf:

user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,quotaDovecot=quota,mail_plugins

passwd-file

user:{plain}pass:1000:1000::/home/user::userdb_quota=maildir:storage=102400 mail_plugins=quota,imap_quota