Dovecot
dovecot(1) is an IMAP and POP3 mail user agent.
Installation
Most Linux and BSD distributions offer a dovecot package.
For systemd-capable systems, start and enable dovecot.service.
For BSD distributions, try:
service dovecot start
Configuration
dovecot(1) is primarily configured in /etc/dovecot/dovecot.conf (or /usr/local/etc/dovecot/dovecot.conf for BSDs).
A basic configuration looks like:
protocols = imap pop3 pop3_uidl_format = %g ssl = no disable_plaintext_auth = no log_path = /var/log/dovecot.log mail_location = maildir:~/Maildir auth_verbose = yes auth_mechanisms = plain passdb { driver = pam } userdb { driver = passwd args = blocking=no override_fields = uid=vmail gid=vmail }
For almost any configuration, it is necessary to have a vmail system user.
sudo groupadd -g 5000 vmail sudo useradd -u 5000 -g vmail -s /usr/bin/nologin -d /var/vmail -m vmail sudo touch /var/log/dovecot.log sudo chown vmail:vmail /var/log/dovecot.log
To test a configuration file, try dovecot -n.
Encryption
ssl = yes disable_plaintext_auth = yes ssl_cert=</path/to/cert.pem ssl_key=</path/to/key.pem
Local Users
The basic configuration for using local user authentication is:
passdb { driver = pam }
This causes /etc/pam.d/dovecot to be used. This should look like:
auth required pam_unix.so nullok account required pam_unix.so
If a different service file should be read, specify that service name like:
passdb { driver = pam args = foobar }
If a protocol-dependent service file should be read, i.e. /etc/pam.d/imap for IMAP and /etc/pam.d/pop for POP, try:
passdb { driver = pam args = %s }
Virtual Users
To handle mail for virtual users who do not correspond to local users, try:
mail_home = /var/vmail/%d/%n mail_location = maildir:~/mail passdb { driver = passwd-file args = /etc/dovecot/passwd } userdb { driver = static args = uid=vmail gid=vmail home=/home/vmail/%u }