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 may want to change the index file location if you're
using<NFS.txt> or if you're setting up <shared mailboxes>
[SharedMailboxes.txt].

You can change the index file location by adding ':INDEX=<path>' to
mail_location. For example:

---%<-------------------------------------------------------------------------
mail_location = maildir:~/Maildir:INDEX=/var/indexes/%u
---%<-------------------------------------------------------------------------

The index directories are created automatically, but note that it requires that
Dovecot has actually access to create the directories. Either make sure that
the index root directory ('/var/indexes' in the above example) is writable to
the logged in user, or create the user's directory with proper permissions
before the user logs in.

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<VirtualUsers#homedirs> [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-06-15 04:42)
