Mail location
=============

 * For mbox-specific settings, see <MailLocation.Mbox.txt>
 * For Maildir-specific settings, see <MailLocation.Maildir.txt>

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' setting is empty, which means that Dovecot attempts
to locate automatically where your mails are. This is done by looking at
'~/Maildir', '/var/mail/username', '~/mail' 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 the 'mail_location' setting. See
<Variables.txt> for a full list, 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. ~/ works also.

Typically with Maildir it would be set to:

---%<-------------------------------------------------------------------------
mail_location = maildir:~/Maildir
---%<-------------------------------------------------------------------------

or with mbox:

---%<-------------------------------------------------------------------------
mail_location = mbox:~/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:~/mail:INBOX=/var/mail/%u:INDEX=~/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. Dovecot's <Sieve
plugin> [LDA.Sieve.txt] already requires a home directory to work, and it
probably won't be the last feature to require a home. See "Home directories" in
<VirtualUsers.txt> for more reasons why it's a good idea, and how to give
Dovecot a home directory even if you don't have a "real home directory".

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

---%<-------------------------------------------------------------------------
mail_location = maildir:/home/%u/Maildir
---%<-------------------------------------------------------------------------

Per-user mail locations
-----------------------

It's possible to override the default 'mail_location' for specific users by
making the<user database> [UserDatabase.txt] return 'mail' <extra field>
[UserDatabase.ExtraFields.txt]. See the <user database> [UserDatabase.txt] page
for the specific userdb you're using for more information how to do this. Below
are however a couple of examples.

Note that %h doesn't work in the userdb queries or templates. ~/ gets expanded
later, so use it instead.

SQL
---

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

LDAP
----

---%<-------------------------------------------------------------------------
user_attrs = homeDirectory=home,uidNumber=uid,gidNumber=gid,mailLocation=mail
---%<-------------------------------------------------------------------------

Passwd-file
-----------

---%<-------------------------------------------------------------------------
user:{PLAIN}password:1000:1000::/home/user::userdb_mail=mbox:~/mail:INBOX=/var/mail/%u
---%<-------------------------------------------------------------------------

Mixing mbox and maildir
-----------------------

It's possible to use both mboxes and maildirs for the same user by configuring
multiple namespaces. See<Namespaces.txt>.

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:

---%<-------------------------------------------------------------------------
#/bin/sh

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

# 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.

(This file was created from the wiki on 2007-04-13 14:32)
