Quick Configuration
===================

If you just want to get Dovecot running with typical configuration in a typical
environment, here's what you'll have to do:

Contents


 1. Quick Configuration

     1. TLDR; Just want it running

     2. Configuration file

         1. Installing from sources

         2. Split configuration files

         3. Hints about writing configuration files

     3. Authentication

     4. Mail Location

     5. Mbox

     6. Maildir

     7. Client Workarounds

     8. SSL and Plaintext Authentication

     9. NFS

     10. Running

TLDR; Just want it running
--------------------------

Here is a very simple basic configuration with single vmail user to be placed
as dovecot.conf. Please note that some distros split configuration under
/etc/dovecot/conf.d, which, while it can be useful, is not required.

You need to create group vmail and user vmail.

---%<-------------------------------------------------------------------------
mail_home=/srv/mail/%Lu
mail_location=sdbox:~/Mail

## this is sometimes needed
#first_valid_uid = uid-of-vmail-user

# if you want to use system users
passdb {
  driver = pam
}

userdb {
  driver = passwd
  args = blocking=no
  override_fields = uid=vmail gid=vmail
}

ssl=yes
ssl_cert=</path/to/cert.pem
ssl_key=</path/to/key.pem
# if you are using v2.3.0-v2.3.2.1 (or want to support non-ECC DH algorithms)
# since v2.3.3 this setting has been made optional.
#ssl_dh=</path/to/dh.pem

namespace {
  inbox = yes
  separator = /
}
---%<-------------------------------------------------------------------------

Configuration file
------------------

Prebuilt packages usually install the configuration files into '/etc/dovecot/'.
You'll find the correct path by running:

---%<-------------------------------------------------------------------------
doveconf -n | head -n 1
---%<-------------------------------------------------------------------------

It's a good idea to read through all the config files and see what settings you
might want to change.

Installing from sources
-----------------------

If you compiled and installed Dovecot from sources, Dovecot has installed only
a '/usr/local/etc/dovecot/README' file, which contains the path to the
installed example configuration files, usually
'/usr/local/share/doc/dovecot/example-config'. Copy them to etc/:

---%<-------------------------------------------------------------------------
cp -r /usr/local/share/doc/dovecot/example-config/* /usr/local/etc/dovecot/
---%<-------------------------------------------------------------------------

Split configuration files
-------------------------

The default configuration starts from 'dovecot.conf', which contains an
'!include conf.d/*.conf' statement to read the rest of the configuration. The
idea is that the settings are nicely grouped into different files to make it
easier for new admins to scan through related settings. It doesn't matter which
config file you add which setting. In the production system it's often easier
to just have a single 'dovecot.conf' file, which you can create easily using

---%<-------------------------------------------------------------------------
doveconf -nP > dovecot.conf
---%<-------------------------------------------------------------------------

Hints about writing configuration files
---------------------------------------

 * Usually it does not matter in which file you write the setting, however,
   later settings replace earlier ones. If you use the same section multiple
   times, the settings are merged together.
 * Before v2.3, boolean settings in the 'plugin' section interpret /any/ value
   as *true*, even '0', 'no' and 'false'.
 * To read the content of a file, for instance for the SSL certificate option,
   prefix the filename with a '<', e.g.:

---%<-------------------------------------------------------------------------
ssl_cert = </etc/ssl/certs/imap.pem
---%<-------------------------------------------------------------------------

Authentication
--------------

You'll probably be using <PAM> [PasswordDatabase.PAM.txt] authentication. See
the <PAM> [PasswordDatabase.PAM.txt] page for how to configure it. A typical
configuration with Linux would be to create '/etc/pam.d/dovecot' which
contains:

---%<-------------------------------------------------------------------------
auth    required        pam_unix.so
account required        pam_unix.so
---%<-------------------------------------------------------------------------

If you're using something else, see <password databases> [PasswordDatabase.txt]
and <user databases> [UserDatabase.txt].

Mail Location
-------------

You can let Dovecot do its automatic mail location detection, but if that
doesn't work, you can set the location manually in 'mail_location' setting. See
<MailLocation.txt> for more information.

Mbox
----

Make sure that all software accessing the mboxes are using the same locking
methods in the same order. The order is important to prevent deadlocking. From
Dovecot's side you can change these from 'mbox_read_locks' and
'mbox_write_locks' settings. See <MboxLocking.txt> for more information.

If you're using '/var/mail/' directory for INBOXes, you may need to set
'mail_privileged_group = mail' so Dovecot can create dotlocks there.

For better performance you may want to set 'mbox_very_dirty_syncs = yes'
option.

Maildir
-------

For better performance you may want to set 'maildir_very_dirty_syncs = yes'
option.

Client Workarounds
------------------

Check 'imap_client_workarounds' and 'pop3_client_workarounds' and see if you
want to enable more of them than the defaults.

SSL and Plaintext Authentication
--------------------------------

If you intend to use SSL, set 'ssl_cert' and 'ssl_key' settings. Otherwise set
'ssl = no'. Easiest way to get SSL certificates built is to use Dovecot's
'doc/mkcert.sh' script. See <SSL.txt>.

By default 'disable_plaintext_auth = yes', which means that Dovecot will fail
the authentication if the client doesn't use SSL (or use <non-plaintext
authentication> [Authentication.Mechanisms.txt]). This is recommended in most
situations, since it prevents leaking passwords. However, if you don't offer
SSL for some reason, you'll probably want to set 'disable_plaintext_auth = no'.

Since v2.3.3 you only need ssl_key and ssl_cert, leaving ssl_dh unset (and
removing ssl-parameters.dat if left over from 2.2) will prevent using non-EC DH
algorithms.

NFS
---

If you're using NFS or some other remote filesystem that's shared between
multiple computers, you should read <NFS.txt>.

Running
-------

See <RunningDovecot.txt> and <Logging.txt>.

(This file was created from the wiki on 2019-06-19 12:42)
