This documentation is for Dovecot v1.x, see wiki2 for v2.x documentation.
Differences between revisions 14 and 15
Revision 14 as of 2006-02-14 15:40:10
Size: 29981
Editor: RobinBreathe
Comment: Fix address of Authentication wiki; format mbox_very_dirty_syncs properly.
Revision 15 as of 2006-02-14 15:45:45
Size: 29865
Editor: RobinBreathe
Comment: Revert side-effects of the previous change which got mangled by the GUI editor.
Deletions are marked like this. Additions are marked like this.
Line 1: Line 1:
[[TableOfContents]]This is the main configuration file for Dovecot. In the actual file most of these option are commented out because they are the default values. The config file provides very finely tuned control of your IMAP server environment. This file applies to version 1.0 only. If you are running 0.9x then read the documentation within the config file because several things have changed. If you are running 0.9x you might want to consider [:UpgradingDovecot:migrating] to 1.0. [[TableOfContents]]

This is the main configuration file for Dovecot. In the actual file most of these option are commented out because they are the default values. The config file provides very finely tuned control of your IMAP server environment. This file applies to version 1.0 only. If you are running 0.9x then read the documentation within the config file because several things have changed. If you are running 0.9x you might want to consider [wiki:UpgradingDovecot migrating] to 1.0.
Line 4: Line 6:
The # character and everything after it is treated as comments. Extra spaces and tabs are ignored. If you want to use either of these explicitly, put the value inside quotes, eg.: key = "char and trailing whitespace "

Default values are shown after each value, it's not required to uncomment any of the lines. Exception to this are paths, they're just examples with real defaults being based on configure options. The paths listed here are for configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-ssldir=/etc/ssl

The # character and everything after it is treated as comments. Extra spaces
and tabs are ignored. If you want to use either of these explicitly, put the
value inside quotes, eg.: key = "char and trailing whitespace "

Default values are shown after each value, it's not required to uncomment
any of the lines. Exception to this are paths, they're just examples
with real defaults being based on configure options. The paths listed here
are for configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var
--with-ssldir=/etc/ssl
Line 9: Line 18:
Line 13: Line 21:
Line 15: Line 22:
Line 17: Line 23:
Line 22: Line 27:
IP or host address where to listen in for connections. It's not currently possible to specify multiple addresses. "*" listens in all IPv4 interfaces. "[""]" listens in all IPv6 interfaces, but may also listen in all IPv4 interfaces depending on the operating system. If you want to specify ports for each service, you will need to configure these settings inside the protocol imap/pop3 { ... } section, so you can specify different ports for IMAP/POP3.
IP or host address where to listen in for connections. It's not currently
possible to specify multiple addresses. "*" listens in all IPv4 interfaces.
"[::]" listens in all IPv6 interfaces, but may also listen in all IPv4
interfaces depending on the operating system. If you want to specify ports
for each service, you will need to configure these settings inside the
protocol imap/pop3 { ... } section, so you can specify different ports
for IMAP/POP3.
Line 29: Line 39:
IP or host address where to listen in for SSL connections. Defaults to above if not specified.

IP or host address where to listen in for SSL connections. Defaults
to above if not specified.
Line 34: Line 45:
Line 36: Line 46:
Line 40: Line 49:

PEM encoded X.509 SSL/TLS certificate and private key. They're opened before dropping root privileges, so keep the key file unreadable by anyone but root. Included doc/mkcert.sh can be used to easily generate self-signed certificate, just make sure to update the domains in dovecot-openssl.cnf
PEM encoded X.509 SSL/TLS certificate and private key. They're opened before
dropping root privileges, so keep the key file unreadable by anyone but
root. Included doc/mkcert.sh can be used to easily generate self-signed
certificate, just make sure to update the domains in dovecot-openssl.cnf
Line 47: Line 57:
Line 49: Line 58:
Line 53: Line 61:
Line 55: Line 62:
Line 59: Line 65:

SSL parameter file. Master process generates this file for login processes. It contains Diffie Hellman and RSA parameters.
SSL parameter file. Master process generates this file for login processes.
It contains Diffie Hellman and RSA parameters.
Line 65: Line 70:

How often to regenerate the SSL parameters file. Generation is quite CPU intensive operation. The value is in hours, 0 disables regeneration entirely.
How often to regenerate the SSL parameters file. Generation is quite CPU
intensive operation. The value is in hours, 0 disables regeneration
entirely.
Line 71: Line 76:
Line 73: Line 77:
Line 77: Line 80:

Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used (LOGINDISABLED capability). Note that 127.*.*.* and IPv6 ::1 addresses are considered secure, this setting has no effect if you connect from those addresses.
Disable LOGIN command and all other plaintext authentications unless
SSL/TLS is used (LOGINDISABLED capability). Note that 127.*.*.* and
IPv6 ::1 addresses are considered secure, this setting has no effect if
you connect from those addresses.
Line 85: Line 89:
Use this logfile instead of syslog(). /dev/stderr can be used if you want to use stderr for logging (ONLY /dev/stderr - otherwise it is closed).

Use this logfile instead of syslog(). /dev/stderr can be used if you want to
use stderr for logging (ONLY /dev/stderr - otherwise it is closed).
Line 90: Line 95:
Line 92: Line 96:
Line 96: Line 99:

Prefix for each line written to log file. % codes are in strftime(3) format.
Prefix for each line written to log file. % codes are in strftime(3)
format.
Line 104: Line 106:
Directory where authentication process places authentication UNIX sockets which login needs to be able to connect to. The sockets are created when running as root, so you don't have to worry about permissions. Note that everything in this directory is deleted when Dovecot is started.

Directory where authentication process places authentication UNIX sockets
which login needs to be able to connect to. The sockets are created when
running as root, so you don't have to worry about permissions. Note that
everything in this directory is deleted when Dovecot is started.
Line 109: Line 114:

chroot login process to the login_dir. Only reason not to do this is if you wish to run the whole Dovecot without roots. http://wiki.dovecot.org/Rootless
chroot login process to the login_dir. Only reason not to do this is if you
wish to run the whole Dovecot without roots.
http://wiki.dovecot.org/Rootless
Line 115: Line 120:

User to use for the login process. Create a completely new user for this, and don't use it anywhere else. The user must also belong to a group where only it has access, it's used to control access for authentication process. Note that this user is NOT used to access mails. http://wiki.dovecot.org/UserIds
User to use for the login process. Create a completely new user for this,
and don't use it anywhere else. The user must also belong to a group where
only it has access, it's used to control access for authentication process.
Note that this user is NOT used to access mails.
http://wiki.dovecot.org/UserIds
Line 121: Line 128:

Set max. process size in megabytes. If you don't use login_process_per_connection you might need to grow this.
Set max. process size in megabytes. If you don't use
login_process_per_connection you might need to grow this.
Line 127: Line 133:

Should each login be processed in it's own process (yes), or should one login process be allowed to process multiple connections (no)? Yes is more secure, espcially with SSL/TLS enabled. No is faster since there's no need to create processes all the time.
Should each login be processed in it's own process (yes), or should one
login process be allowed to process multiple connections (no)? Yes is more
secure, espcially with SSL/TLS enabled. No is faster since there's no need
to create processes all the time.
Line 133: Line 140:

Number of login processes to create. If login_process_per_user is yes, this is the number of extra processes waiting for users to log in.
Number of login processes to create. If login_process_per_user is
yes, this is the number of extra processes waiting for users to log in.
Line 139: Line 145:

Maximum number of extra login processes to create. The extra process count usually stays at login_processes_count, but when multiple users start logging in at the same time more extra processes are created. To prevent fork-bombing we check only once in a second if new processes should be created - if all of them are used at the time, we double their amount until limit set by this setting is reached. This setting is used only if login_process_per_use is yes.
Maximum number of extra login processes to create. The extra process count
usually stays at login_processes_count, but when multiple users start logging
in at the same time more extra processes are created. To prevent fork-bombing
we check only once in a second if new processes should be created - if all
of them are used at the time, we double their amount until limit set by this
setting is reached. This setting is used only if login_process_per_use is yes.
Line 145: Line 154:

Maximum number of connections allowed in login state. When this limit is reached, the oldest connections are dropped. If login_process_per_user is no, this is a per-process value, so the absolute maximum number of users logging in actually login_processes_count * max_logging_users.
Maximum number of connections allowed in login state. When this limit is
reached, the oldest connections are dropped. If login_process_per_user
is no, this is a per-process value, so the absolute maximum number of users
logging in actually login_processes_count * max_logging_users.
Line 151: Line 161:
Line 153: Line 162:
Line 157: Line 165:

Space-separated list of elements we want to log. The elements which have a non-empty variable value are joined together to form a comma-separated string.
Space-separated list of elements we want to log. The elements which have
a non-empty variable value are joined together to form a comma-separated
string.
Line 163: Line 171:

Login log format. %$ contains login_log_format_elements string, %s contains the data we want to log.
Login log format. %$ contains login_log_format_elements string, %s contains
the data we want to log.
Line 171: Line 178:
Maximum number of running mail processes. When this limit is reached, new users aren't allowed to log in.

Maximum number of running mail processes. When this limit is reached,
new users aren't allowed to log in.
Line 176: Line 184:

Show more verbose process titles (in ps). Currently shows user name and IP address. Useful for seeing who are actually using the IMAP processes (eg. shared mailboxes or if same uid is used for multiple accounts).
Show more verbose process titles (in ps). Currently shows user name and
IP address. Useful for seeing who are actually using the IMAP processes
(eg. shared mailboxes or if same uid is used for multiple accounts).
Line 182: Line 190:
Line 184: Line 191:
Line 188: Line 194:

Valid UID range for users, defaults to 500 and above. This is mostly to make sure that users can't log in as daemons or other system users. Note that denying root logins is hardcoded to dovecot binary and can't be done even if first_valid_uid is set to 0.
Valid UID range for users, defaults to 500 and above. This is mostly
to make sure that users can't log in as daemons or other system users.
Note that denying root logins is hardcoded to dovecot binary and can't
be done even if first_valid_uid is set to 0.
Line 195: Line 202:

Valid GID range for users, defaults to non-root/wheel. Users having non-valid GID as primary group ID aren't allowed to log in. If user belongs to supplementary groups with non-valid GIDs, those groups are not set.
Valid GID range for users, defaults to non-root/wheel. Users having
non-valid GID as primary group ID aren't allowed to log in. If user
belongs to supplementary groups with non-valid GIDs, those groups are
not set.
Line 202: Line 210:

Grant access to these extra groups for mail processes. Typical use would be to give "mail" group write access to /var/mail to be able to create dotlocks.
Grant access to these extra groups for mail processes. Typical use would be
to give "mail" group write access to /var/mail to be able to create dotlocks.
Line 210: Line 217:
':' separated list of directories under which chrooting is allowed for mail processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too). This setting doesn't affect login_chroot or auth_chroot variables. WARNING: Never add directories here which local users can modify, that may lead to root exploit. Usually this should be done only if you don't allow shell access for users. See doc/configuration.txt for more information.

':' separated list of directories under which chrooting is allowed for mail
processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too).
This setting doesn't affect login_chroot or auth_chroot variables.
WARNING: Never add directories here which local users can modify, that
may lead to root exploit. Usually this should be done only if you don't
allow shell access for users. See doc/configuration.txt for more information.
Line 215: Line 227:

Default chroot directory for mail processes. This can be overridden for specific users in user database by giving /./ in user's home directory (eg. /home/./user chroots into /home). Note that usually there is no real need to do chrooting, Dovecot doesn't allow users to access files outside their mail directory anyway.
Default chroot directory for mail processes. This can be overridden for
specific users in user database by giving /./ in user's home directory
(e
g. /home/./user chroots into /home). Note that usually there is no real
need to do chrooting, Dovecot doesn't allow users to access files outside
their mail directory anyway.
Line 223: Line 237:
Enable mail process debugging. This can help you figure out why Dovecot isn't finding your mails.

Enable mail process debugging. This can help you figure out why Dovecot
isn't finding your mails.
Line 230: Line 245:
Default MAIL environment to use when it's not set. By leaving this empty dovecot tries to do some automatic detection as described in doc/mail-storages.txt. There's a few special variables you can use, eg.:

Default MAIL environment to use when it's not set. By leaving this empty
dovecot tries to do some automatic detection as described in
doc/mail-storages.txt. There's a few special variables you can use, eg.:
Line 238: Line 255:
Line 240: Line 256:
Line 246: Line 261:
Line 252: Line 266:
If you need to set multiple mailbox locations or want to change default namespace settings, you can do it by defining namespace sections:

You can have private, shared and public namespaces. The only difference between them is how Dovecot announces them to client via NAMESPACE extension. Shared namespaces are meant for user-owned mailboxes which are shared to other users, while public namespaces are for more globally accessible mailboxes.

REMEMBER: If you add any namespaces, the default namespace must be added explicitly, ie. default_mail_env does nothing unless you have a namespace without a location setting. Default namespace is simply done by having a namespace with empty prefix.

If you need to set multiple mailbox locations or want to change default
namespace settings, you can do it by defining namespace sections:

You can have private, shared and public namespaces. The only difference
between them is how Dovecot announces them to client via NAMESPACE
extension. Shared namespaces are meant for user-owned mailboxes which are
shared to other users, while public namespaces are for more globally
accessible mailboxes.

REMEMBER: If you add any namespaces, the default namespace must be added
explicitly, ie. default_mail_env does nothing unless you have a namespace
without a location setting. Default namespace is simply done by having a
namespace with empty prefix.
Line 288: Line 311:
Space-separated list of fields to initially save into cache file. Currently these fields are allowed:

 flags, date.sent, date.received, size.virtual, size.physical mime.parts, imap.body, imap.bodystructure

Different IMAP clients work in different ways, so they benefit from different cached fields. Some do not benefit from them at all. Caching more than necessary generates useless disk I/O, so you don't want to do that either.

Dovecot attempts to automatically figure out what client wants and it keeps only that. However the first few times a mailbox is opened, Dovecot hasn't yet figured out what client needs, so it may not perform optimally. If you know what fields the majority of your clients need, it may be useful to set these fields by hand. If client doesn't actually use them, Dovecot will eventually drop them.

Usually you should just leave this field alone. The potential benefits are typically unnoticeable.

Space-separated list of fields to initially save into cache file. Currently
these fields are allowed:

 flags, date.sent, date.received, size.virtual, size.physical
mime.parts, imap.body, imap.bodystructure

Different IMAP clients work in different ways, so they benefit from
different cached fields. Some do not benefit from them at all. Caching more
than necessary generates useless disk I/O, so you don't want to do that
either.

Dovecot attempts to automatically figure out what client wants and it keeps
only that. However the first few times a mailbox is opened, Dovecot hasn't
yet figured out what client needs, so it may not perform optimally. If you
know what fields the majority of your clients need, it may be useful to set
these fields by hand. If client doesn't actually use them, Dovecot will
eventually drop them.

Usually you should just leave this field alone. The potential benefits are
typically unnoticeable.
Line 301: Line 335:

Space-separated list of fields that Dovecot should never save to cache file. Useful if you want to save disk space at the cost of more I/O when the fields needed.
Space-separated list of fields that Dovecot should never save to cache file.
Useful if you want to save disk space at the cost of more I/O when the fields
needed.
Line 309: Line 343:
Line 310: Line 345:
Line 314: Line 348:

Allow full filesystem access to clients. There's no access checks other than what the operating system does for the active UID/GID. It works with both maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/ or ~user/.
Allow full filesystem access to clients. There's no access checks other than
what the operating system does for the active UID/GID. It works with both
maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/
or ~user/.
Line 320: Line 355:

Maximum allowed length for mail keyword name. It's only forced when trying to create new keywords.
Maximum allowed length for mail keyword name. It's only forced when trying
to create new keywords.
Line 326: Line 360:

Save mails with CR+LF instead of plain LF. This makes sending those mails take less CPU, especially with sendfile() syscall with Linux and FreeBSD. But it also creates a bit more disk I/O which may just make it slower.
Save mails with CR+LF instead of plain LF. This makes sending those mails
take less CPU, especially with sendfile() syscall with Linux and FreeBSD.
But it also creates a bit more disk I/O which may just make it slower.
Line 334: Line 368:
Use mmap() instead of read() to read mail files. read() seems to be a bit faster with my Linux/x86 and it's better with NFS, so that's the default. Note that OpenBSD 3.3 and older don't work right with mail_read_mmaped = yes.

Use mmap() instead of read() to read mail files. read() seems to be a bit
faster with my Linux/x86 and it's better with NFS, so that's the default.
Note that OpenBSD 3.3 and older don't work right with mail_read_mmaped = yes.
Line 339: Line 375:

Don't use mmap() at all. This is required if you store indexes in remote filesystems (NFS or clustered filesystem).
Don't use mmap() at all. This is required if you store indexes in remote
filesystems (NFS or clustered filesystem).
Line 345: Line 380:

Don't write() to mmaped files. This is required for some operating systems which use separate caches for them, such as OpenBSD.
Don't write() to mmaped files. This is required for some operating systems
which use separate caches for them, such as OpenBSD.
Line 351: Line 385:

Locking method for index files. Alternatives are fcntl, flock and dotlock. Dotlocking uses some tricks which may create more disk I/O than other locking methods.
Locking method for index files. Alternatives are fcntl, flock and dotlock.
Dotlocking uses some tricks which may create more disk I/O than other locking
methods.
Line 357: Line 391:

By default LIST command returns all entries in maildir beginning with dot. Enabling this option makes Dovecot return only entries which are directories. This is done by stat()ing each entry, so it causes more disk I/O. (For systems setting struct dirent->d_type, this check is free and it's done always regardless of this setting)
By default LIST command returns all entries in maildir beginning with dot.
Enabling this option makes Dovecot return only entries which are directories.
This is done by stat()ing each entry, so it causes more disk I/O.
(For systems setting struct dirent->d_type, this check is free and it's
done always regardless of this setting)
Line 363: Line 399:

Copy mail to another folders using hard links. This is much faster than actually copying the file. This is problematic only if something modifies the mail in one folder but doesn't want it modified in the others. I don't know any MUA which would modify mail files directly. IMAP protocol also requires that the mails don't change, so it would be problematic in any case. If you care about performance, enable it.
Copy mail to another folders using hard links. This is much faster than
actually copying the file. This is problematic only if something modifies
the mail in one folder but doesn't want it modified in the others. I don't
know any MUA which would modify mail files directly. IMAP protocol also
requires that the mails don't change, so it would be problematic in any case.
If you care about performance, enable it.
Line 371: Line 410:
Line 377: Line 415:
You can use multiple locking methods; if you do the order they're declared in is important to avoid deadlocks if other MTAs/MUAs are using multiple locking methods as well. Some operating systems don't allow using some of them simultaneously.
You can use multiple locking methods; if you do the order they're declared
in is important to avoid deadlocks if other MTAs/MUAs are using multiple
locking methods as well. Some operating systems don't allow using some of
them simultaneously.
Line 383: Line 423:
Line 385: Line 424:
Line 389: Line 427:

If dotlock exists but the mailbox isn't modified in any way, override the lock file after this many seconds.
If dotlock exists but the mailbox isn't modified in any way, override the
lock file after this many seconds.
Line 397: Line 434:
When mbox changes unexpectedly we have to fully read it to find out what changed. If the mbox is large this can take a long time. Since the change is usually just a newly appended mail, it'd be faster to simply read the new mails. If this setting is enabled, Dovecot does this but still safely fallbacks to re-reading the whole mbox file whenever something in mbox isn't how it's expected to be. The only real downside to this setting is that if some other MUA changes message flags, Dovecot doesn't notice it immediately. Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK  commands.

When mbox changes unexpectedly we have to fully read it to find out what
changed. If the mbox is large this can take a long time. Since the change
is usually just a newly appended mail, it'd be faster to simply read the
new mails. If this setting is enabled, Dovecot does this but still safely
fallbacks to re-reading the whole mbox file whenever something in mbox isn't
how it's expected to be. The only real downside to this setting is that if
some other MUA changes message flags, Dovecot doesn't notice it immediately.
Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK
commands.
Line 402: Line 447:

Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE, EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored.

{{{
mbox_very_dirty_syncs = no }}}

Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK commands and when closing the mailbox). This is especially useful for POP3 where clients often delete all mails. The downside is that our changes aren't immediately visible to other MUAs.
Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE,
EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored.
{{{
mbox_very_dirty_syncs = no
}}}
Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK
commands and when closing the mailbox). This is especially useful for POP3
where clients often delete all mails. The downside is that our changes
aren't immediately visible to other MUAs.
Line 413: Line 459:
Line 415: Line 460:
Line 419: Line 463:

Drop all privileges before exec()ing the mail process. This is mostly meant for debugging, otherwise you don't get core dumps. It could be a small security risk if you use single UID for multiple users, as the users could ptrace() each others processes then.
Drop all privileges before exec()ing the mail process. This is mostly
meant for debugging, otherwise you don't get core dumps. It could be a small
security risk if you use single UID for multiple users, as the users could
ptrace() each others processes then.
Line 425: Line 470:

Set max. process size in megabytes. Most of the memory goes to mmap()ing files, so it shouldn't harm much even if this limit is set pretty high.
Set max. process size in megabytes. Most of the memory goes to mmap()ing
files, so it shouldn't harm much even if this limit is set pretty high.
Line 431: Line 475:

Log prefix for mail processes. See doc/variables.txt for list of possible variables you can use.
Log prefix for mail processes. See doc/variables.txt for list of possible
variables you can use.
Line 439: Line 482:
Line 492: Line 536:
Line 556: Line 601:
More info on Authentication at: [http://wiki.dovecot.org/moin.cgi/Authentication http://wiki.dovecot.org/Authentication]
More info on Authentication at: http://wiki.dovecot.org/Authentication
Line 559: Line 605:
Line 563: Line 608:
Line 565: Line 609:
Line 569: Line 612:
Line 571: Line 613:
Line 575: Line 616:

Time to live in seconds for cached data. After this many seconds a cached record is forced out of cache.
Time to live in seconds for cached data. After this many seconds a cached
record is forced out of cache.
Line 581: Line 621:

Space separated list of realms for SASL authentication mechanisms that need them. You can leave it empty if you don't want to support multiple realms. Many clients simply use the first one listed here, so keep the default realm first.
Space separated list of realms for SASL authentication mechanisms that need
them. You can leave it empty if you don't want to support multiple realms.
Many clients simply use the first one listed here, so keep the default realm
first.
Line 587: Line 628:

Default realm/domain to use if none was specified. This is used for both SASL realms and appending @domain to username in plaintext logins.
Default realm/domain to use if none was specified. This is used for both
SASL realms and appending @domain to username in plaintext logins.
Line 593: Line 633:

List of allowed characters in username. If the user-given username contains a character not listed in here, the login automatically fails. This is just an extra check to make sure user can't exploit any potential quote escaping vulnerabilities with SQL/LDAP databases. If you want to allow all characters, set this value to empty.
List of allowed characters in username. If the user-given username contains
a character not listed in here, the login automatically fails. This is just
an extra check to make sure user can't exploit any potential quote escaping
vulnerabilities with SQL/LDAP databases. If you want to allow all characters,
set this value to empty.
Line 599: Line 641:

Username character translations before it's looked up from databases. The value contains series of from -> to characters. For example "@/@" means that '' and '/' characters are translated to '@'.  ''
Username character translations before it's looked up from databases. The
value contains series of from -> to characters. For example "@/@" means
that '' and '/' characters are translated to '@'.
Line 605: Line 647:
Line 607: Line 648:
Line 611: Line 651:

More verbose logging. Useful for figuring out why authentication isn't working.
More verbose logging. Useful for figuring out why authentication isn't
working.
Line 617: Line 656:

Even more verbose logging for debugging purposes. Shows for example SQL queries.
Even more verbose logging for debugging purposes. Shows for example SQL
queries.
Line 623: Line 661:

Maximum number of dovecot-auth worker processes. They're used to execute blocking passdb and userdb queries (eg. MySQL and PAM). They're automatically created and destroyed as needed.
Maximum number of dovecot-auth worker processes. They're used to execute
blocking passdb and userdb queries (eg. MySQL and PAM). They're
automatically created and destroyed as needed.
Line 770: Line 808:
It's possible to export the authentication interface to other programs, for example SMTP server which supports talking to Dovecot. Client socket handles the actual authentication - you give it a username and password and it returns OK or failure. So it's pretty safe to allow anyone access to it. Master socket is used to a) query if given client was successfully authenticated, b) userdb lookups.

Listener sockets will be created by Dovecot's master process using the settings given inside the auth section

It's possible to export the authentication interface to other programs,
for example SMTP server which supports talking to Dovecot. Client socket
handles the actual authentication - you give it a username and password
and it returns OK or failure. So it's pretty safe to allow anyone access to
it. Master socket is used to a) query if given client was successfully
authenticated, b) userdb lookups.

Listener sockets will be created by Dovecot's master process using the
settings given inside the auth section
Line 797: Line 841:
Connect sockets are assumed to be already running, Dovecot's master process only tries to connect to them. They don't need any other settings than path for the master socket, as the configuration is done elsewhere. Note that the client sockets must exist in login_dir. Connect sockets are assumed to be already running, Dovecot's master
process only tries to connect to them. They don't need any other settings
than path for the master socket, as the configuration is done elsewhere.
Note that the client sockets must exist in login_dir.

TableOfContents

This is the main configuration file for Dovecot. In the actual file most of these option are commented out because they are the default values. The config file provides very finely tuned control of your IMAP server environment. This file applies to version 1.0 only. If you are running 0.9x then read the documentation within the config file because several things have changed. If you are running 0.9x you might want to consider [wiki:UpgradingDovecot migrating] to 1.0.

Dovecot 1.0 configuration file - dovecot.conf

The # character and everything after it is treated as comments. Extra spaces and tabs are ignored. If you want to use either of these explicitly, put the value inside quotes, eg.: key = "char and trailing whitespace "

Default values are shown after each value, it's not required to uncomment any of the lines. Exception to this are paths, they're just examples with real defaults being based on configure options. The paths listed here are for configure --prefix=/usr --sysconfdir=/etc --localstatedir=/var --with-ssldir=/etc/ssl

Base directory where to store runtime data.

base_dir = /var/run/dovecot/

Protocols we want to be serving:

  • imap imaps pop3 pop3s

protocols = imap imaps

IP or host address where to listen in for connections. It's not currently possible to specify multiple addresses. "*" listens in all IPv4 interfaces. "[::]" listens in all IPv6 interfaces, but may also listen in all IPv4 interfaces depending on the operating system. If you want to specify ports for each service, you will need to configure these settings inside the protocol imap/pop3 { ... } section, so you can specify different ports for IMAP/POP3.

listen = *

SSL

IP or host address where to listen in for SSL connections. Defaults to above if not specified.

ssl_listen =

Disable SSL/TLS support.

ssl_disable = no

PEM encoded X.509 SSL/TLS certificate and private key. They're opened before dropping root privileges, so keep the key file unreadable by anyone but root. Included doc/mkcert.sh can be used to easily generate self-signed certificate, just make sure to update the domains in dovecot-openssl.cnf

ssl_cert_file = /etc/ssl/certs/dovecot.pem
ssl_key_file = /etc/ssl/private/dovecot.pem

File containing trusted SSL certificate authorities. Usually not needed.

ssl_ca_file = 

Request client to send a certificate.

ssl_verify_client_cert = no

SSL parameter file. Master process generates this file for login processes. It contains Diffie Hellman and RSA parameters.

ssl_parameters_file = /var/run/dovecot/ssl-parameters.dat

How often to regenerate the SSL parameters file. Generation is quite CPU intensive operation. The value is in hours, 0 disables regeneration entirely.

ssl_parameters_regenerate = 24

SSL ciphers to use

ssl_cipher_list = ALL:!LOW

Disable LOGIN command and all other plaintext authentications unless SSL/TLS is used (LOGINDISABLED capability). Note that 127.*.*.* and IPv6 ::1 addresses are considered secure, this setting has no effect if you connect from those addresses.

disable_plaintext_auth = yes

Logging

Use this logfile instead of syslog(). /dev/stderr can be used if you want to use stderr for logging (ONLY /dev/stderr - otherwise it is closed).

log_path = 

For informational messages, use this logfile instead of the default

info_log_path = 

Prefix for each line written to log file. % codes are in strftime(3) format.

log_timestamp = "%b %d %H:%M:%S "

Login processes

Directory where authentication process places authentication UNIX sockets which login needs to be able to connect to. The sockets are created when running as root, so you don't have to worry about permissions. Note that everything in this directory is deleted when Dovecot is started.

login_dir = /var/run/dovecot/login

chroot login process to the login_dir. Only reason not to do this is if you wish to run the whole Dovecot without roots. http://wiki.dovecot.org/Rootless

login_chroot = yes

User to use for the login process. Create a completely new user for this, and don't use it anywhere else. The user must also belong to a group where only it has access, it's used to control access for authentication process. Note that this user is NOT used to access mails. http://wiki.dovecot.org/UserIds

login_user = dovecot

Set max. process size in megabytes. If you don't use login_process_per_connection you might need to grow this.

login_process_size = 32

Should each login be processed in it's own process (yes), or should one login process be allowed to process multiple connections (no)? Yes is more secure, espcially with SSL/TLS enabled. No is faster since there's no need to create processes all the time.

login_process_per_connection = yes

Number of login processes to create. If login_process_per_user is yes, this is the number of extra processes waiting for users to log in.

login_processes_count = 3

Maximum number of extra login processes to create. The extra process count usually stays at login_processes_count, but when multiple users start logging in at the same time more extra processes are created. To prevent fork-bombing we check only once in a second if new processes should be created - if all of them are used at the time, we double their amount until limit set by this setting is reached. This setting is used only if login_process_per_use is yes.

login_max_processes_count = 128

Maximum number of connections allowed in login state. When this limit is reached, the oldest connections are dropped. If login_process_per_user is no, this is a per-process value, so the absolute maximum number of users logging in actually login_processes_count * max_logging_users.

login_max_logging_users = 256

Greeting message for clients.

login_greeting = Dovecot ready.

Space-separated list of elements we want to log. The elements which have a non-empty variable value are joined together to form a comma-separated string.

login_log_format_elements = user=<%u> method=%m rip=%r lip=%l %c

Login log format. %$ contains login_log_format_elements string, %s contains the data we want to log.

login_log_format = %$: %s

Mail Processes

Maximum number of running mail processes. When this limit is reached, new users aren't allowed to log in.

max_mail_processes = 1024

Show more verbose process titles (in ps). Currently shows user name and IP address. Useful for seeing who are actually using the IMAP processes (eg. shared mailboxes or if same uid is used for multiple accounts).

verbose_proctitle = no

Show protocol level SSL errors.

verbose_ssl = no

Valid UID range for users, defaults to 500 and above. This is mostly to make sure that users can't log in as daemons or other system users. Note that denying root logins is hardcoded to dovecot binary and can't be done even if first_valid_uid is set to 0.

first_valid_uid = 500
last_valid_uid = 0

Valid GID range for users, defaults to non-root/wheel. Users having non-valid GID as primary group ID aren't allowed to log in. If user belongs to supplementary groups with non-valid GIDs, those groups are not set.

first_valid_gid = 1
last_valid_gid = 0

Grant access to these extra groups for mail processes. Typical use would be to give "mail" group write access to /var/mail to be able to create dotlocks.

mail_extra_groups =

chroot

':' separated list of directories under which chrooting is allowed for mail processes (ie. /var/mail will allow chrooting to /var/mail/foo/bar too). This setting doesn't affect login_chroot or auth_chroot variables. WARNING: Never add directories here which local users can modify, that may lead to root exploit. Usually this should be done only if you don't allow shell access for users. See doc/configuration.txt for more information.

valid_chroot_dirs = 

Default chroot directory for mail processes. This can be overridden for specific users in user database by giving /./ in user's home directory (eg. /home/./user chroots into /home). Note that usually there is no real need to do chrooting, Dovecot doesn't allow users to access files outside their mail directory anyway.

mail_chroot = 

Debug

Enable mail process debugging. This can help you figure out why Dovecot isn't finding your mails.

mail_debug = no

Directories where Mail is Stored

Default MAIL environment to use when it's not set. By leaving this empty dovecot tries to do some automatic detection as described in doc/mail-storages.txt. There's a few special variables you can use, eg.:

  %u - 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

See doc/variables.txt for full list. Some examples:

  default_mail_env = maildir:/var/mail/%1u/%u/Maildir
  default_mail_env = mbox:~/mail/:INBOX=/var/mail/%u
  default_mail_env = mbox:/var/mail/%d/%n/:INDEX=/var/indexes/%d/%n

default_mail_env = 

Name Spaces

If you need to set multiple mailbox locations or want to change default namespace settings, you can do it by defining namespace sections:

You can have private, shared and public namespaces. The only difference between them is how Dovecot announces them to client via NAMESPACE extension. Shared namespaces are meant for user-owned mailboxes which are shared to other users, while public namespaces are for more globally accessible mailboxes.

REMEMBER: If you add any namespaces, the default namespace must be added explicitly, ie. default_mail_env does nothing unless you have a namespace without a location setting. Default namespace is simply done by having a namespace with empty prefix.

More on Namespaces at http://wiki.dovecot.org/Namespaces

namespace private {
   #Hierarchy separator to use. You should use the same separator for all
   #namespaces or some clients get confused. '/' is usually a good one.
   separator = /

   #Prefix required to access this namespace. This needs to be different for
   #all namespaces. For example "Public/".
   prefix = 

   #Physical location of the mailbox. This is in same format as
   #default_mail_env, which is also the default for it.
   location =

   #There can be only one INBOX, and this setting defines which namespace
   #has it.
   inbox = yes

   #If namespace is hidden, it's not advertised to clients via NAMESPACE
   #extension or shown in LIST replies. This is mostly useful when converting
   #from another server with different namespaces which you want to depricate
   #but still keep working. For example you can create hidden namespaces with
   #prefixes "~/mail/", "~%u/mail/" and "mail/".
   hidden = yes
}

Mail Caching

Space-separated list of fields to initially save into cache file. Currently these fields are allowed:

  • flags, date.sent, date.received, size.virtual, size.physical mime.parts, imap.body, imap.bodystructure

Different IMAP clients work in different ways, so they benefit from different cached fields. Some do not benefit from them at all. Caching more than necessary generates useless disk I/O, so you don't want to do that either.

Dovecot attempts to automatically figure out what client wants and it keeps only that. However the first few times a mailbox is opened, Dovecot hasn't yet figured out what client needs, so it may not perform optimally. If you know what fields the majority of your clients need, it may be useful to set these fields by hand. If client doesn't actually use them, Dovecot will eventually drop them.

Usually you should just leave this field alone. The potential benefits are typically unnoticeable.

mail_cache_fields = 

Space-separated list of fields that Dovecot should never save to cache file. Useful if you want to save disk space at the cost of more I/O when the fields needed.

mail_never_cache_fields = 

Misc

Like mailbox_check_interval, but used for IDLE command.

mailbox_idle_check_interval = 30

Allow full filesystem access to clients. There's no access checks other than what the operating system does for the active UID/GID. It works with both maildir and mboxes, allowing you to prefix mailboxes names with eg. /path/ or ~user/.

mail_full_filesystem_access = no

Maximum allowed length for mail keyword name. It's only forced when trying to create new keywords.

mail_max_keyword_length = 50

Save mails with CR+LF instead of plain LF. This makes sending those mails take less CPU, especially with sendfile() syscall with Linux and FreeBSD. But it also creates a bit more disk I/O which may just make it slower.

mail_save_crlf = no

File Locking and NFS

Use mmap() instead of read() to read mail files. read() seems to be a bit faster with my Linux/x86 and it's better with NFS, so that's the default. Note that OpenBSD 3.3 and older don't work right with mail_read_mmaped = yes.

mail_read_mmaped = no

Don't use mmap() at all. This is required if you store indexes in remote filesystems (NFS or clustered filesystem).

mmap_disable = no

Don't write() to mmaped files. This is required for some operating systems which use separate caches for them, such as OpenBSD.

mmap_no_write = no

Locking method for index files. Alternatives are fcntl, flock and dotlock. Dotlocking uses some tricks which may create more disk I/O than other locking methods.

lock_method = fcntl

By default LIST command returns all entries in maildir beginning with dot. Enabling this option makes Dovecot return only entries which are directories. This is done by stat()ing each entry, so it causes more disk I/O. (For systems setting struct dirent->d_type, this check is free and it's done always regardless of this setting)

maildir_stat_dirs = no

Copy mail to another folders using hard links. This is much faster than actually copying the file. This is problematic only if something modifies the mail in one folder but doesn't want it modified in the others. I don't know any MUA which would modify mail files directly. IMAP protocol also requires that the mails don't change, so it would be problematic in any case. If you care about performance, enable it.

maildir_copy_with_hardlinks = no

Which locking methods to use for locking mbox. There's four available:

  • dotlock: Create <mailbox>.lock file. This is the oldest and most NFS-safe solution. If you want to use /var/mail/ like directory, the users will need write access to that directory.

  • fcntl : Use this if possible. Works with NFS too if lockd is used.
  • flock : May not exist in all systems. Doesn't work with NFS.
  • lockf : May not exist in all systems. Doesn't work with NFS.

You can use multiple locking methods; if you do the order they're declared in is important to avoid deadlocks if other MTAs/MUAs are using multiple locking methods as well. Some operating systems don't allow using some of them simultaneously.

mbox_read_locks = fcntl
mbox_write_locks = dotlock fcntl

Maximum time in seconds to wait for lock (all of them) before aborting.

mbox_lock_timeout = 300

If dotlock exists but the mailbox isn't modified in any way, override the lock file after this many seconds.

mbox_dotlock_change_timeout = 30

More Misc

When mbox changes unexpectedly we have to fully read it to find out what changed. If the mbox is large this can take a long time. Since the change is usually just a newly appended mail, it'd be faster to simply read the new mails. If this setting is enabled, Dovecot does this but still safely fallbacks to re-reading the whole mbox file whenever something in mbox isn't how it's expected to be. The only real downside to this setting is that if some other MUA changes message flags, Dovecot doesn't notice it immediately. Note that a full sync is done with SELECT, EXAMINE, EXPUNGE and CHECK commands.

mbox_dirty_syncs = yes

Like mbox_dirty_syncs, but don't do full syncs even with SELECT, EXAMINE, EXPUNGE or CHECK commands. If this is set, mbox_dirty_syncs is ignored.

mbox_very_dirty_syncs = no

Delay writing mbox headers until doing a full write sync (EXPUNGE and CHECK commands and when closing the mailbox). This is especially useful for POP3 where clients often delete all mails. The downside is that our changes aren't immediately visible to other MUAs.

mbox_lazy_writes = yes

umask to use for mail files and directories

umask = 0077

Drop all privileges before exec()ing the mail process. This is mostly meant for debugging, otherwise you don't get core dumps. It could be a small security risk if you use single UID for multiple users, as the users could ptrace() each others processes then.

mail_drop_priv_before_exec = no

Set max. process size in megabytes. Most of the memory goes to mmap()ing files, so it shouldn't harm much even if this limit is set pretty high.

mail_process_size = 256

Log prefix for mail processes. See doc/variables.txt for list of possible variables you can use.

mail_log_prefix = "%Us(%u): "

IMAP Specific Settings

protocol imap {
  #Login executable location.
  login_executable = /usr/libexec/dovecot/imap-login

  #IMAP executable location
  mail_executable = /usr/libexec/dovecot/imap

  #This would write rawlogs into ~/dovecot.rawlog/ directory:
  mail_executable = /usr/libexec/dovecot/rawlog /usr/libexec/dovecot/imap

  #Maximum IMAP command line length in bytes. Some clients generate very long
  #command lines with huge mailboxes, so you may need to raise this if you get
  #"Too long argument" or "IMAP command line too large" errors often.
  imap_max_line_length = 65536

  #Support for dynamically loadable modules.
  mail_use_modules = no
  mail_modules = /usr/lib/dovecot/imap

  #Send IMAP capabilities in greeting message. This makes it unnecessary for
  #clients to request it with CAPABILITY command, so it saves one round-trip.
  #Many clients however don't understand it and ask the CAPABILITY anyway.
  login_greeting_capability = no

  #Workarounds for various client bugs:
  #  delay-newmail:
  #    Send EXISTS/RECENT new mail notifications only when replying to NOOP
  #    and CHECK commands. Some clients ignore them otherwise, for example
  #    OSX Mail. Outlook Express breaks more badly though, without this it
  #    may show user "Message no longer in server" errors. Note that OE6 still
  #    breaks even with this workaround if synchronization is set to
  #    "Headers Only".
  #  outlook-idle:
  #    Outlook and Outlook Express never abort IDLE command, so if no mail
  #    arrives in half a hour, Dovecot closes the connection. This is still
  #    fine, except Outlook doesn't connect back so you don't see if new mail
  #    arrives.
  #  netscape-eoh:
  #    Netscape 4.x breaks if message headers don't end with the empty "end of
  #    headers" line. Normally all messages have this, but setting this
  #    workaround makes sure that Netscape never breaks by adding the line if
  #    it doesn't exist. This is done only for FETCH BODY[HEADER.FIELDS..]
  #    commands. Note that RFC says this shouldn't be done.
  #  tb-extra-mailbox-sep:
  #    With mbox storage a mailbox can contain either mails or submailboxes,
  #    but not both. Thunderbird separates these two by forcing server to
  #    accept '/' suffix in mailbox names in subscriptions list.
  imap_client_workarounds = outlook-idle
}

POP3 specific settings

protocol pop3 {
  #Login executable location.
  login_executable = /usr/libexec/dovecot/pop3-login

  #POP3 executable location
  mail_executable = /usr/libexec/dovecot/pop3

  #Don't try to set mails non-recent or seen with POP3 sessions. This is
  #mostly intended to reduce disk I/O. With maildir it doesn't move files
  #from new/ to cur/, with mbox it doesn't write Status-header.
  #pop3_no_flag_updates = no

  #Support LAST command which exists in old POP3 specs, but has been removed
  #from new ones. Some clients still wish to use this though. Enabling this
  #makes RSET command clear all \Seen flags from messages.
  pop3_enable_last = no
  
  #POP3 UIDL format to use. You can use following variables:
  
  # %v - Mailbox UIDVALIDITY
  # %u - Mail UID
  # %m - MD5 sum of the mailbox headers in hex (mbox only)
  # %f - filename (maildir only)
  
  #If you want UIDL compatibility with other POP3 servers, use:
  # UW's ipop3d         : %08Xv%08Xu
  # Courier version 0   : %f
  # Courier version 1   : %u
  # Courier version 2   : %v-%u
  # Cyrus (<= 2.1.3)    : %u
  # Cyrus (>= 2.1.4)    : %v.%u
  
  #Note that Outlook 2003 seems to have problems with %v.%u format which is
  #Dovecot's default, so if you're building a new server it would be a good
  #idea to change this. %08Xu%08Xv should be pretty fail-safe.
  pop3_uidl_format = %v.%u

  #POP3 logout format string:
  # %t - number of TOP commands
  # %T - number of bytes sent to client as a result of TOP command
  # %r - number of RETR commands
  # %R - number of bytes sent to client as a result of RETR command
  # %d - number of deleted messages
  # %m - number of messages (before deletion)
  # %s - mailbox size in bytes (before deletion)
  pop3_logout_format = top=%t/%T, retr=%r/%R, del=%d/%m, size=%s

  #Support for dynamically loadable modules.
  mail_use_modules = no
  mail_modules = /usr/lib/dovecot/pop3

  #Workarounds for various client bugs:
  #  outlook-no-nuls:
  #    Outlook and Outlook Express hang if mails contain NUL characters.
  #    This setting replaces them with 0x80 character.
  #  oe-ns-eoh:
  #    Outlook Express and Netscape Mail breaks if end of headers-line is
  #    missing. This option simply sends it if it's missing.
  pop3_client_workarounds = 
}

Authentication Processes

More info on Authentication at: http://wiki.dovecot.org/Authentication

Executable location

auth_executable = /usr/libexec/dovecot/dovecot-auth

Set max. process size in megabytes.

auth_process_size = 256

Authentication cache size in kilobytes.

auth_cache_size = 0

Time to live in seconds for cached data. After this many seconds a cached record is forced out of cache.

auth_cache_ttl = 3600

Space separated list of realms for SASL authentication mechanisms that need them. You can leave it empty if you don't want to support multiple realms. Many clients simply use the first one listed here, so keep the default realm first.

auth_realms =

Default realm/domain to use if none was specified. This is used for both SASL realms and appending @domain to username in plaintext logins.

auth_default_realm = 

List of allowed characters in username. If the user-given username contains a character not listed in here, the login automatically fails. This is just an extra check to make sure user can't exploit any potential quote escaping vulnerabilities with SQL/LDAP databases. If you want to allow all characters, set this value to empty.

auth_username_chars = abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@

Username character translations before it's looked up from databases. The value contains series of from -> to characters. For example "@/@" means that and '/' characters are translated to '@'.

auth_username_translation =

Username to use for users logging in with ANONYMOUS SASL mechanism

auth_anonymous_username = anonymous

More verbose logging. Useful for figuring out why authentication isn't working.

auth_verbose = no

Even more verbose logging for debugging purposes. Shows for example SQL queries.

auth_debug = no

Maximum number of dovecot-auth worker processes. They're used to execute blocking passdb and userdb queries (eg. MySQL and PAM). They're automatically created and destroyed as needed.

auth_worker_max_count = 30

auth default {

  Space separated list of wanted authentication mechanisms:
    plain digest-md5 cram-md5 apop anonymous

  mechanisms = plain
  
  Password database is used to verify user's password (and nothing more).
  You can have multiple passdbs and userdbs. This is useful if you want to
  allow both system users (/etc/passwd) and virtual users to login without
  duplicating the system users into virtual database.
  
  http://wiki.dovecot.org/Authentication
  
  PAM authentication. Preferred nowadays by most systems.
  Note that PAM can only be used to verify if user's password is correct,
  so it can't be used as userdb. If you don't want to use a separate user
  database (passwd usually), you can use static userdb.
  passdb pam {
    [-session] [<service name>]
    
    -session makes Dovecot open and immediately close PAM session. Some
    PAM plugins need this to work.
    
    If service name is "*", it means the authenticating service name
    is used, eg. pop3 or imap.

    args = dovecot
  }

  /etc/passwd or similar, using getpwnam()
  In many systems nowadays this uses Name Service Switch, which is
  configured in /etc/nsswitch.conf.
  passdb passwd {
  }

  /etc/shadow or similiar, using getspnam(). Deprecated by PAM nowadays.
  passdb shadow {
  }

  passwd-like file with specified location
  passdb passwd-file {
    Path for passwd-file
    args = 
  }

  checkpassword executable authentication
  passdb checkpassword {
    Path for checkpassword binary
    args = 
  }

  SQL database
  passdb sql {
    Path for SQL configuration file, see doc/dovecot-sql.conf for example
    args = 
  }

  LDAP database
  passdb ldap {
    Path for LDAP configuration file, see doc/dovecot-ldap.conf for example
    args = 
  }

  vpopmail authentication
  passdb vpopmail {
  }

  
  User database specifies where mails are located and what user/group IDs
  own them. For single-UID configuration use "static".
  
  http://wiki.dovecot.org/Authentication
  http://wiki.dovecot.org/VirtualUsers
  

  /etc/passwd or similar, using getpwnam()
  In many systems nowadays this uses Name Service Switch, which is
  configured in /etc/nsswitch.conf.
  userdb passwd {
  }

  passwd-like file with specified location
  userdb passwd-file {
    Path for passwd-file
    args =
  }

  static settings generated from template
  userdb static {
    Template for settings. Can return anything a userdb could normally
    return, eg.: uid, gid, home, mail, nice
    
    A few examples:
    
     args = uid=500 gid=500 home=/var/mail/%u
     args = uid=500 gid=500 home=/home/%u mail=mbox:/home/%u/mail nice=10
    
    args =
  }

  SQL database
  userdb sql {
    Path for SQL configuration file, see doc/dovecot-sql.conf for example
    args = 
  }

  LDAP database
  userdb ldap {
    Path for LDAP configuration file, see doc/dovecot-ldap.conf for example
    args = 
  }

  vpopmail
  userdb vpopmail {
  }

  User to use for the process. This user needs access to only user and
  password databases, nothing else. Only shadow and pam authentication
  requires roots, so use something else if possible. Note that passwd
  authentication with BSDs internally accesses shadow files, which also
  requires roots. Note that this user is NOT used to access mails.
  That user is specified by userdb above.
  user = root

  Directory where to chroot the process. Most authentication backends don't
  work if this is set, and there's no point chrooting if auth_user is root.
  Note that valid_chroot_dirs isn't needed to use this setting.
  chroot = 

  Number of authentication processes to create
  count = 1

  Require a valid SSL client certificate or the authentication fails.
  ssl_require_client_cert = no
}

Authentication Exporting

It's possible to export the authentication interface to other programs, for example SMTP server which supports talking to Dovecot. Client socket handles the actual authentication - you give it a username and password and it returns OK or failure. So it's pretty safe to allow anyone access to it. Master socket is used to a) query if given client was successfully authenticated, b) userdb lookups.

Listener sockets will be created by Dovecot's master process using the settings given inside the auth section

auth default_with_listener {
 mechanisms = plain
 passdb passwd {
 }
 userdb pam {
 }
 socket listen {
   master {
     path = /var/run/dovecot/auth-master
     mode = 0600
     Default user/group is the one who started dovecot-auth (root)
     user = 
     group = 
   }
   client {
     path = /var/run/dovecot-auth-client
     mode = 0660
   }
 }
}

Connect sockets are assumed to be already running, Dovecot's master process only tries to connect to them. They don't need any other settings than path for the master socket, as the configuration is done elsewhere. Note that the client sockets must exist in login_dir.

auth external {
 socket connect {
   master {
     path = /var/run/dovecot/auth-master
   }
 }
}

None: MainConfig (last edited 2011-04-25 16:53:54 by generator)