This documentation is for Dovecot v2.x, see wiki1 for v1.x documentation.
Differences between revisions 21 and 22
Revision 21 as of 2007-03-15 17:56:10
Size: 5066
Editor: TimoSirainen
Revision 22 as of 2007-03-18 21:39:11
Size: 4167
Editor: TimoSirainen
Deletions are marked like this. Additions are marked like this.
Line 2: Line 2:

 * For mbox-specific settings, see ["MailLocation/Mbox"]
 * For Maildir-specific settings, see ["MailLocation/Maildir"]
Line 93: Line 96:

== Only /var/mail mboxes ==

With POP3 it's been traditional that users have their mails only in /var/mail directory. IMAP however supports having multiple mailboxes, so each user has to have a private directory where the mailboxes are stored. Dovecot also needs a directory for its indexes unless you disable them completely.

If you '''really''' want to use Dovecot as a plain POP3 server without index files, you can work around the problem of not having the per-user directory:

 * Set users' home directory in userdb to some empty non-writable directory, for example {{{/var/empty}}}
 * Modify {{{mail_location}}} setting so that the mail root directory is also the empty directory and append {{{:INDEX=MEMORY}}} to it. For example: {{{mail_location = mbox:/var/empty:INBOX=/var/mail/%u:INDEX=MEMORY}}}
 * Note that if you have IMAP users, they'll see the {{{/var/empty}}} as the directory containing other mailboxes than INBOX. If the directory is writable, all the users will have their mailboxes shared.

Mail location

  • For mbox-specific settings, see ["MailLocation/Mbox"]
  • For Maildir-specific settings, see ["MailLocation/Maildir"]

In configuration file the default mail location is set using mail_location setting. This setting used to be called default_mail_env in Dovecot versions earlier than 1.0.rc11.

By default mail_location is empty, which means that Dovecot attempts to locate automatically where your mails are. This is done by looking at ~/Maildir, /var/mail/username and ~/mail in that order. It's usually a good idea to explicitly specify where the mails are, even if the autodetection happens to work.

You can use several variables in mail_location. A full list of them is in [wiki:Variables Variables], but the most commonly used ones are:

  • %u: Full username.

  • %n: User part in user@domain, same as %u if there's no domain.

  • %d: Domain part in user@domain, empty if there's no domain.

  • %h: Home directory.

Typically with maildir it would be set to:

mail_location = maildir:%h/Maildir 

or with mbox:

mail_location = mbox:%h/mail:INBOX=/var/mail/%u 

Use only absolute paths. Even if relative paths would appear to work, they might just as well break some day.

Index files

Index files are by default stored under the same directory as mails. With maildir they are stored in the actual maildirs, with mbox they are stored under .imap/ directory. You can change these by adding :INDEX=location to location string. For example:

mail_location = mbox:%h/mail:INBOX=/var/mail/%u:INDEX=%h/indexes 

If you really want to, you can also disable the index files completely by appending :INDEX=MEMORY.

Homeless users

Having a home directory for users is highly recommended. [wiki:LDA Deliver]'s Sieve plugin already uses the home directory, and it won't work without one. You could even make the home directory be the same as the mail directory, but this isn't necessarily a good idea, especially with mbox storage where the created files would show up as mailboxes. You could instead put the home directory under the mail directory, so that eg. your home directory becomes /var/mail/user/Maildir/home or /var/mail/user/mbox/.imap/home.

If you really don't want to set a home directory, you can simply use something like:

mail_location = maildir:/home/%u/Maildir 

Per-user mail locations

It's possible to override mail location for specific users by making the [wiki:UserDatabase user database] return mail [wiki:UserDatabase/ExtraFields extra field]. See the [:UserDatabase:user database] page for the specific userdb you're using for more information how to do this. Here are however a couple of examples:


user_query = SELECT home, uid, gid, mail FROM users WHERE user = '%u' 


user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,mailLocation=mail 



Mixing mbox and maildir

It's possible to use both mboxes and maildirs for the same user by configuring multiple namespaces. See ["Namespaces"].

Having both mboxes and maildirs mixed within the same namespace isn't currently supported.

Custom mailbox location detection

Dovecot by default detects the mailboxes in this order:

  1. maildir: ~/Maildir
  2. mbox: ~/mail, and /var/mail/%u if it exists
  3. mbox: ~/Mail, and /var/mail/%u if it exists

If you need something else, you can override the mail_executable setting to run a script, which sets the MAIL environment properly. For example:


if [ -f $HOME/.maildir ]; then
  export MAIL=maildir:$HOME/.maildir
  export MAIL=mbox:$HOME/mail:INBOX=/var/mail/$USER

# Finally execute the imap/pop3. If you use both, you'll need two scripts.
exec /usr/local/libexec/dovecot/imap

NOTE: If you're using namespaces, the MAIL environment is ignored. You'll need to set NAMESPACE_1 (and maybe _2, _3, etc. for each namespace) instead.

None: MailLocation (last edited 2019-09-11 14:05:46 by MichaelSlusarz)