CASSANDRA_GEODB_KEYSPACE
Default | "d8s_cluster" |
---|---|
Value | Python String |
Changes |
|
Cassandra keyspace used for dovecot cluster.
Appearance
CASSANDRA_GEODB_KEYSPACE
Default | "d8s_cluster" |
---|---|
Value | Python String |
Changes |
|
Cassandra keyspace used for dovecot cluster.
CASSANDRA_KEYSPACE
Default | "d8s_cluster" |
---|---|
Value | Python String |
Changes |
|
Cassandra keyspace to use.
CASSANDRA_LOAD_BALANCING_POLICY
Default | "DCAwareRoundRobin" |
---|---|
Value | Python String |
Allowed Values | "RoundRobin" "DCAwareRoundRobin" |
Changes |
|
Policy to use for cassandra load balancing. Determines how requests are distributed among nodes in the cluster.
CASSANDRA_USED_HOSTS_PER_REMOTE_DC
.CASSANDRA_LOCAL_DC
Default | "d8s_cluster" |
---|---|
Value | Python String |
Changes |
|
Name of the local datacenter in Cassandra cluster.
CASSANDRA_PORT
Default | 9042 |
---|---|
Value | Python Integer |
The port Cassandra servers listen on.
CASSANDRA_PROTOCOL_VERSION
Default | 4 |
---|---|
Value | Python Integer |
Version of the cassandra protocol to be used.
CASSANDRA_SERVERS
Default | "localhost" |
---|---|
Value | Python String |
Comma separated list of Cassandra server endpoints.
CASSANDRA_SITE
Default | "d8s_cluster" |
---|---|
Value | Python String |
Changes |
|
Name of the local datacenter in Cassandra cluster.
CASSANDRA_TLS_ENABLED
Default | False |
---|---|
Value | Python Boolean |
Whether to use TLS in Cassandra connections.
CASSANDRA_USED_HOSTS_PER_REMOTE_DC
Default | 0 |
---|---|
Value | Python Integer |
Changes |
|
If CASSANDRA_LOAD_BALANCING_POLICY
is set to "DCAwareRoundRobin",
controls how many nodes in each remote datacenter will have connections opened
against them.
CELERY_BROKER_TRANSPORT_OPTIONS
Default | {} |
---|---|
Value | Python Dictionary |
Needed when using Redis Sentinel where it's required to provide "master_name" as a key in the dictionary.
CELERY_BROKER_URL
Default | "redis://localhost:6379/0" |
---|---|
Value | Python String |
A valid URI to Redis server or Redis Sentinel used for controller task brokering.
CELERY_RESULT_BACKEND
Default | "redis://localhost:6379/0" |
---|---|
Value | Python String |
A valid URI to Redis server or Redis Sentinel used for holding task results.
CELERY_RESULT_BACKEND_TRANSPORT_OPTIONS
Default | {} |
---|---|
Value | Python Dictionary |
Needed when using Redis Sentinel for celery results where it's required to provide "master_name" as a key in the dictionary.
CELERY_RESULT_EXPIRES_SECS
Default | 60 |
---|---|
Value | Python Integer |
Time to live of task results in Redis (in seconds).
CLUSTER_SITE
Default | "dc1a" |
---|---|
Value | Python String |
Palomar site this controller is responsible for. Must be the same
site name configured in dovecot proxies with cluster_local_site
.
CONTROLLER_API_URL
Default | "http://localhost:8000" |
---|---|
Value | Python String |
URL controller API runs on. The server will bind to this address and the admin UI uses this address to send the HTTP requests.
DRY_RUN
Default | 200 |
---|---|
Value | Python Integer |
Changes |
|
Whether to enable DRY_RUN mode to log but not perform controller worker actions, such as: set_host_offline, set_host_online and move group.
GROUP_BALANCE_ENABLED
Default | False |
---|---|
Value | Python Boolean |
Whether to enable group balancing feature. This feature slowly redistributes users between groups in the same backend so they are roughly the same size.
GROUP_BALANCE_GROUP_SIZE_RATIO_SLACK
Default | 10 |
---|---|
Value | Python Integer |
Changes |
|
If group size differences are larger than the given percentage, users will be redistributed.
GROUP_BALANCE_GROUP_SIZE_SLACK_PERCENT
Default | 10 |
---|---|
Value | Python Integer |
Changes |
|
If group size differences are larger than the given percentage, users will be redistributed.
GROUP_BALANCE_MAX_USER_MOVES_PER_PASS
Default | 200 |
---|---|
Value | Python Integer |
See Also |
Maximum total number of users that can be moved (across all groups) at each
iteration of group balancing. Should be higher than
GROUP_BALANCE_MAX_USER_MOVE_BETWEEN_GROUPS
since that setting
controls number of users moved between a group pair while this setting
controls the total sum of users moved across all group pairs.
GROUP_BALANCE_MAX_USER_MOVE_BETWEEN_GROUPS
Default | 100 |
---|---|
Value | Python Integer |
See Also |
Maximum number of users that can be moved between individual groups at each iteration of balancing. Used to prevent big swings in group sizes and too much load on Cassandra.
GROUP_MOVE_FINISH_TIMEOUT_SECS
Default | 600 |
---|---|
Value | Python Integer |
Changes |
|
Maximum time for a group move to finish in seconds. Controller tries to calculate the finish time based on the trend of moved users so far. If it seems that backends won't be able to finish the move in time, it will be forced. A forced move is done by directly setting group's backend ID in GeoDB.
GROUP_MOVE_START_TIMEOUT_SECS
Default | 180 |
---|---|
Value | Python Integer |
Changes |
|
Maximum allowed time of a group move to start in seconds. If backends don't start moving group after this time, a force move will be done. A forced move is done by directly setting group's backend ID in GeoDB.
HOST_FAILURE_COOL_TIME_SECS
Default | 3600 |
---|---|
Value | Python Integer |
Minimum time in seconds between moving groups from hosts with failing logins to other hosts. If a host has high failure rate and the cool off time from its last group move has passed, controller will try to find another host which also has passed its cool-off period to move a group to.
HOST_FAILURE_MIN_LOGINS
Default | 10 |
---|---|
Value | Python Integer |
Minimum number of logins needed in past 5 minutes to start processing host's health (i.e. change backend status if necessary or move groups from it if there is high failure rate).
HOST_FAILURE_RATIO
Default | 0.1 |
---|---|
Value | Python Float |
Ratio of failed logins or mail deliveries to trigger group moves. Must be in (0, 1) range exclusive.
HOST_LOAD_BALANCE_GROUP_MIN_COOL_TIME_SECS
Default | 3600 |
---|---|
Value | Python Integer |
Changes |
|
Minimum time in seconds a group will not be moved to a new backend. If a group needs to be moved for load balancing, this period is honored and groups that have been moved recently will not be moved again. Must be larger than 0.
HOST_LOAD_BALANCE_MIN_COOL_TIME_SECS
Default | 3600 |
---|---|
Value | Python Integer |
Changes |
|
Minimum time in seconds a group will not be moved to a new backend. If a group needs to be moved for load balancing, this period is honored and groups that have been moved recently will not be moved again. Must be larger than 0.
HOST_LOAD_BALANCE_MIN_SAMPLES
Default | 3000 |
---|---|
Value | Python Integer |
Number of samples over the last 24 hours needed for all the Z-scores for a host to do load balancing.
HOST_LOAD_BALANCE_SCORE_DELTA_THRESHOLD_RATIO
Default | 0.5 |
---|---|
Value | Python Float |
Minimum load score difference between backends to initiate group move. See Cluster Controller Load Balancing.
PROMETHEUS_JOB_NAME
Default | "" |
---|---|
Value | Python String |
If set, will be used as the job name to scrape backend and proxy statistics. Required when a Prometheus instance is used that is managed outside of kubernetes installation (e.g. a central instance or mixed environments). If the Prometheus instance scrapes each site hosts with a different job name, this setting must have the value of the job name to prevent unwanted data in query results. Can be empty if using the bundled Prometheus with controller.
PROMETHEUS_URL
Default | "http://localhost:9090/" |
---|---|
Value | Python String |
URL of Prometheus used to gather backend and proxy statistics.
acl
Value | Named Filter |
---|---|
See Also | |
Plugin | acl plugin |
Changes |
|
Specifies an ACL entry on global, namespace or mailbox level. The filter name
refers to the acl_id
setting.
Has two settings:
acl_id
acl_rights
acl_defaults_from_inbox
Default | no |
---|---|
Value | boolean |
Plugin | acl plugin |
If enabled, the default ACLs for private and shared namespaces (but not public namespaces) are taken from the INBOX. This means that giving somebody access to your INBOX will give them access to all your other mailboxes as well, unless the specific mailboxes' ACLs override the INBOX's.
acl_driver
Default | [None] |
---|---|
Value | string |
Plugin | acl plugin |
Changes |
|
The ACL driver to use. This setting is REQUIRED - if empty, the acl plugin is disabled.
Currently, there is a single driver available: vfile
. This driver
supports two ways of defining the ACL configuration:
global: ACL rules are applied to all users.
per-mailbox: Each mailbox has separate ACL rules. They are stored in a
dovecot-acl
file in each mailbox (or mail_control_path
)
directory. This is the default.
acl_global_path
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | acl plugin |
Changes |
|
Location of global ACL configuration file. This option is deprecated, you
should use acl
instead.
acl_globals_only
Default | no |
---|---|
Value | boolean |
Plugin | acl plugin |
If enabled, don't try to find dovecot-acl
files from mailbox
directories. This reduces unnecessary disk I/O when only global ACLs are
used.
acl_groups
Default | [None] |
---|---|
Value | string |
Plugin | acl plugin |
A comma-separated string which contains all the groups the user belongs to.
A user's UNIX groups have no effect on ACLs (you can enable them by using a special post-login scripting.
The default ACL for mailboxes is to give the mailbox owner all permissions and other users none. Mailboxes in public namespaces don't have owners, so by default no one can access them.
acl_id
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | acl plugin |
Changes |
|
Specifies identity to match. See ACL File Format for values. The
acl
filter name refers to this setting.
acl_ignore
Default | no |
---|---|
Value | boolean |
Plugin | acl plugin |
Changes |
|
Can be used in global config, namespace, or mailbox level to ignore ACLs.
namespace ignore {
acl_ignore = yes
}
acl_rights
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | acl plugin |
Changes |
|
Specifies rights for this acl. See ACL File Format for values. This is
usually used in acl
block.
acl_sharing_map
Value | Named Filter |
---|---|
See Also | |
Plugin | acl plugin |
Changes |
|
A shared mailbox dictionary that defines which users may LIST mailboxes shared by other users.
See shared mailbox listing for further details on the contents of the dictionary entries.
Example:
acl_sharing_map {
dict file {
path = /var/lib/dovecot/shared-mailboxes
}
}
acl_user
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | acl plugin |
See auth_master_user_separator
for the format of this setting.
apparmor_hats
Default | [None] |
---|---|
Value | Boolean List |
Plugin | apparmor plugin |
List of AppArmor "hats" to change to when a user is loaded.
Example:
apparmor_hats {
hat_name = yes
another_hat = yes
}
auth_allow_cleartext
Default | no |
---|---|
Value | boolean |
Changes |
|
If no
, disables the LOGIN command and all other cleartext
authentication unless SSL/TLS is used (LOGINDISABLED capability) or the
connection is secured (see ssl
).
See SSL configuration for more detailed explanation of how
this setting interacts with the ssl
setting.
This setting replaces the disable_plaintext_auth
setting.
auth_allow_weak_schemes
Default | no |
---|---|
Value | boolean |
Changes |
|
Controls whether password schemes marked as weak are allowed to be used. See password schemes for disabled by default schemes.
If enabled, will emit warning to logs. If a disabled scheme is used, an error is logged.
Notably, any explicitly cleartext schemes (such as PLAIN), CRAM-MD5, and DIGEST-MD5 are not affected by this setting.
auth_anonymous_username
Default | anonymous |
---|---|
Value | string |
This specifies the username to be used for users logging in with the ANONYMOUS SASL mechanism.
auth_cache_negative_ttl
Default | 1hour |
---|---|
Value | time |
This sets the time to live for negative hits to passdb or userdb (i.e., when the user is not found or there is a password mismatch).
The value 0
completely disables caching of these hits.
auth_cache_size
Default | [None] |
---|---|
Value | size |
The authentication cache size (e.g., 10M
).
auth_cache_size = 0
disables use of the authentication cache.
A typical passdb cache entry is around 50 bytes and a typical userdb cache entry is around 100-200 bytes, depending on the amount of information your user and password database lookups return.
auth_cache_ttl
Default | 1hour |
---|---|
Value | time |
Time to live for cache entries.
After the TTL expires, the cached record is no longer used, unless the main database look-up returns internal failure.
Entries are removed from the cache only when the cache is full and a new entry is to be added.
auth_cache_verify_password_with_worker
Default | no |
---|---|
Value | boolean |
The auth master process by default is responsible for the hash
verifications. Setting this to yes
moves the verification to auth-worker
processes. This allows distributing the hash calculations to multiple CPU
cores, which could make sense if strong hashes are used.
auth_debug
Default | no |
---|---|
Value | boolean |
Changes |
|
Enables all authentication debug logging (also enables
auth_verbose
).
Passwords are logged as <hidden>
.
auth_debug_passwords
Default | no |
---|---|
Value | boolean |
This setting adjusts log verbosity. In the event of password mismatches, the passwords and the scheme used are logged so that the problem can be debugged.
Note: You also need to enable log_debug = category=auth
.
auth_default_domain
Default | no |
---|---|
Value | boolean |
Changes |
|
This setting indicates the default realm/domain to use if none has
been specified. The setting is used for both SASL realms
and appending an @domain
element to the username in cleartext logins.
auth_failure_delay
Default | 2secs |
---|---|
Value | time |
See Also |
This is the delay before replying to failed authentication attempts. Using passdb: nodelay Extra Field bypasses this setting.
This setting defines the interval for which the authentication process flushes all auth failures. Thus, this is the maximum interval a user may encounter. However, there can be additional delays added by authentication penalty.
This setting doesn't affect internal failures. See
auth_internal_failure_delay
.
auth_internal_failure_delay
Default | 2secs |
---|---|
Value | time (milliseconds) |
See Also | |
Changes |
|
The delay before replying to client when authentication fails with internal failure. An additional 0..50% delay is added on top of this to prevent thundering herd issues.
This setting is intended to prevent clients from hammering the server with immediate retries.
auth_master_user_separator
Default | [None] |
---|---|
Value | string |
The separator to use to enable master users to login by specifying the master username within the normal username string (i.e., not using the SASL mechanism's master support).
Example:
# Allows master login of the format <username>*<masteruser>
# E.g. if user = foo, and master_user = muser,
# login username = foo*muser
auth_master_user_separator = *
auth_mechanisms
Default | plain |
---|---|
Value | Boolean List |
See Also |
Here you can supply a space-separated list of the authentication mechanisms you wish to use.
Example:
auth_mechanisms = plain login
auth_policy
Value | Named Filter |
---|---|
See Also | |
Changes |
|
Filter for auth policy specific settings.
auth_policy_check_after_auth
Default | yes |
---|---|
Value | boolean |
See Also |
Do policy lookup after authentication is completed?
auth_policy_check_before_auth
Default | yes |
---|---|
Value | boolean |
See Also |
Do policy lookup before authentication is started?
auth_policy_hash_mech
Default | sha256 |
---|---|
Value | string |
Allowed Values | md4 md5 sha1 sha256 sha512 |
See Also |
Hash mechanism to use for password.
auth_policy_hash_nonce
Default | [None] |
---|---|
Value | string |
See Also |
Cluster-wide nonce to add to hash.
This should contain a secret randomly generated string, which is the same for each Dovecot server within the cluster.
REQUIRED configuration when you want to use authentication policy.
Example:
auth_policy_hash_nonce = <localized_random_string>
auth_policy_log_only
Default | no |
---|---|
Value | boolean |
See Also |
Only log what the policy server response would do?
If yes
, no request is made to the policy server.
auth_policy_reject_on_fail
Default | no |
---|---|
Value | boolean |
See Also |
If policy request fails for some reason, should users be rejected?
auth_policy_report_after_auth
Default | yes |
---|---|
Value | boolean |
Report authentication result?
If no
, there will be no report for the authentication result.
auth_policy_request_attributes
Default | login=%{requested_username} pwhash=%{hashed_password} remote=%{remote_ip} device_id=%{client_id} protocol=%{protocol} session_id=%{session} fail_type=%{fail_type} |
---|---|
Value | String List |
See Also | |
Changes |
|
Request attributes specification.
See Auth Policy Variables for variables that can be used for this setting.
auth_policy_server_api_header
Default | [None] |
---|---|
Value | string |
See Also |
Header and value to add to request (for API authentication).
Note: See https://en.wikipedia.org/wiki/Basic_access_authentication#Client_side
This can be used when you are using the weakforced policy server and the web listener password is "super":
$ echo -n wforce:super | base64
d2ZvcmNlOnN1cGVy
Then the correct value for this setting is:
auth_policy_server_api_header = Authorization: Basic d2ZvcmNlOnN1cGVy
auth_policy_server_url
Default | [None] |
---|---|
Value | URL |
URL of the policy server.
URL is appended with ?command=allow/report
. If URL ends with &
, the
?
is not appended.
REQUIRED configuration when you want to use authentication policy.
Example:
auth_policy_server_url = http://example.com:4001/
auth_realms
Default | [None] |
---|---|
Value | Boolean List |
This setting supplies a list of realms for those SASL authentication mechanisms that need them. Realms are an integral part of Digest-MD5.
You will need to specify realms you want to advertise to the client in the config file:
Example:
auth_realms = example.com another.example.com foo
auth_socket_path
Default | auth-userdb |
---|---|
Value | string |
The UNIX socket path to the master authentication server for finding users.
This must be set to cluster-userdb
in Palomar cluster configurations, for
both proxies and backends.
auth_ssl_require_client_cert
Default | no |
---|---|
Value | boolean |
See Also |
If yes
, authentication fails when a valid SSL client certificate is not
provided.
auth_ssl_username_from_cert
Default | no |
---|---|
Value | boolean |
See Also |
Setting to yes
indicates that the username should be taken from the
client's SSL certificate.
Generally, this will be either commonName
or x500UniqueIdentifier
.
The text is looked up from subject DN's specified field using OpenSSL's
X509_NAME_get_text_by_NID() function. By default the CommonName field is
used. You can change the field with
ssl_server_cert_username_field = name
setting (parsed using OpenSSL's
OBJ_txt2nid() function).
x500UniqueIdentifier
is a common choice.
auth_username_chars
Default | abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ01234567890.-_@ |
---|---|
Value | string |
The list of the characters allowed in a username.
If the user-supplied username contains a character not listed here, login automatically fails.
This is an additional check to make sure the user can't exploit any quote-escaping vulnerabilities that may be connected with SQL/LDAP databases.
If you want to allow all characters, leave the value empty.
auth_username_format
Default | %{user | lower} |
---|---|
Value | string |
When this setting is used globally, it changes the username, including
%{user}
variable, for all passdb and userdb lookups.
This setting can also be used in passdb/userdb
passwd_file { auth_username_format } to change the username for the duration
of the lookup. The %{user}
variable is not changed. If used inside other
passdbs/userdbs the setting is ignored.
You can use the standard variables here.
Examples:
%{user | lower}
: Lowercases the username%{user | username}
: Drops the domain if one was supplied%{user | username}-AT-%{user | domain}
: Changes the "@" symbol into "-AT-" before lookupThis translation is done after the changes specified with the
auth_username_translation
setting.
auth_verbose
Default | no |
---|---|
Value | boolean |
Adjust log verbosity.
If yes
, log unsuccessful authentication attempts and why they failed.
auth_verbose_passwords
Default | no |
---|---|
Value | string |
Allowed Values | no yes plain sha1 |
In case of password mismatches, log the attempted password. You can also
truncate the logged password to n
chars by appending :n
(e.g.
sha1:6
).
Available transformations:
plain
, yes
: Output cleartext password (NOT RECOMMENDED)sha1
: Output SHA1 hashed passwordauth_worker_max_count
Default | 30 |
---|---|
Value | unsigned integer |
Maximum number of dovecot-auth worker processes active.
The auth workers are used to execute blocking passdb and userdb queries (e.g., MySQL and PAM). They are automatically created and destroyed as necessary.
cassandra_connect_timeout
Default | 5s |
---|---|
Value | time (milliseconds) |
Connection timeout.
cassandra_debug_queries
Default | no |
---|---|
Value | boolean |
Whether to log CQL queries.
cassandra_delete_consistency
Default | local-quorum |
---|---|
Value | string |
Allowed Values | any local-serial serial one two three local-quorum quorum each-quorum all |
See Also |
Write consistency when deleting from the database. See Cassandra: Consistency.
cassandra_delete_fallback_consistency
Default | local-quorum |
---|---|
Value | string |
Allowed Values | any local-serial serial one two three local-quorum quorum each-quorum all |
See Also |
Write consistency when deleting from the database fails with primary consistency.
cassandra_execution_retry_interval
Default | [None] |
---|---|
Value | time (milliseconds) |
If the driver supports speculative execution policy, configures constant speculative execution policy. See https://docs.datastax.com/en/developer/java-driver/latest/manual/core/speculative_execution/index.html
cassandra_execution_retry_times
Default | [None] |
---|---|
Value | time (milliseconds) |
If the driver supports speculative execution policy, configures constant speculative execution policy. See https://docs.datastax.com/en/developer/java-driver/latest/manual/core/speculative_execution/index.html
cassandra_heartbeat_interval
Default | 30s |
---|---|
Value | time |
How often to send keepalive packets to cassandra nodes.
cassandra_hosts
Default | [None] |
---|---|
Value | Boolean List |
List of hosts or IP addresses to connect.
cassandra_idle_timeout
Default | 0 |
---|---|
Value | time (milliseconds) |
How long to idle before disconnecting.
cassandra_io_thread_count
Default | [driver dependent] |
---|---|
Value | unsigned integer |
Set number of IO threads to handle query requests.
cassandra_keyspace
Default | [None] |
---|---|
Value | string |
Specifies the keyspace name to use.
cassandra_latency_aware_routing
Default | no |
---|---|
Value | boolean |
When turned on, latency-aware routing tracks the latency of queries to avoid sending new queries to poorly performing Cassandra nodes.
cassandra_log_level
Default | warn |
---|---|
Value | string |
Allowed Values | critical error warn info debug trace |
Driver log level.
cassandra_log_retries
Default | no |
---|---|
Value | boolean |
Whether to log about failed requests that are retried (which may or may not succeed after the retry).
cassandra_metrics
Default | [None] |
---|---|
Value | string |
Path where to write JSON metrics. See Cassandra: Metrics.
cassandra_page_size
Default | [None] |
---|---|
Value | unsigned integer |
When a query returns many rows, it can be sometimes inefficient to return them as a single response message. Instead, the driver can break the results into pages which get returned as they are needed.
This setting controls the size of each page.
Set to 0
to disable.
cassandra_password
Default | [None] |
---|---|
Value | string |
Password for authentication.
cassandra_port
Default | 9042 |
---|---|
Value | Port Number |
CQL port to use.
cassandra_protocol_version
Default | depends on driver version |
---|---|
Value | string |
Allowed Values | 3 4 5 |
Cassandra protocol version to use. It is good idea to specify this to avoid warnings about version handshake if the driver supports a higher protocol version than the server.
INFO
If you want to use server-side prepared statements, you need to
use at least 4
.
cassandra_read_consistency
Default | local-quorum |
---|---|
Value | string |
Allowed Values | any local-serial serial one two three local-quorum quorum each-quorum all |
See Also |
Read consistency.
cassandra_read_fallback_consistency
Default | local-quorum |
---|---|
Value | string |
Allowed Values | any local-serial serial one two three local-quorum quorum each-quorum all |
See Also |
Read consistency if primary consistency fails.
cassandra_request_timeout
Default | 60s |
---|---|
Value | time (milliseconds) |
How long to wait for a query to finish.
cassandra_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no cert-only cert-ip |
See Also |
Whether to use SSL when connecting to Cassandra, and how to verify the certificate:
no
cert-only
cert-ip
You can also skip certificate validation by setting
ssl_client_require_valid_cert = yes
. The cassandra_ssl
setting
value must something else than no
.
Configure SSL certificates using the ssl_client_*
settings. See
SSL configuration.
cassandra_user
Default | [None] |
---|---|
Value | string |
Username for authentication.
cassandra_warn_timeout
Default | 5s |
---|---|
Value | time (milliseconds) |
Emit warning if query takes longer than this.
cassandra_write_consistency
Default | local-quorum |
---|---|
Value | string |
Allowed Values | any local-serial serial one two three local-quorum quorum each-quorum all |
See Also |
Write consistency when updating or inserting to the database.
cassandra_write_fallback_consistency
Default | local-quorum |
---|---|
Value | string |
Allowed Values | any local-serial serial one two three local-quorum quorum each-quorum all |
See Also |
Write consistency when updating or inserting to the database fails with primary consistency.
charset_aliases
Default | [None] |
---|---|
Value | String List |
Plugin | charset-alias plugin |
List of <from>=<to>
charsets. The "from" charsets
will be treated as "to" charsets when decoding to UTF-8.
Example:
charset_aliases {
shift_jis = sjis-win
euc-jp = eucjp-win
iso-2022-jp = iso-2022-jp-3
}
cluster_backend_name
Default | [None] |
---|---|
Value | string |
Host name of the backend. This must be the same name as used by
doveadm cluster-backend
commands.
Cluster: Applies only to Backend.
cluster_backend_test_password
Default | [None] |
---|---|
Value | string |
Password used for logging into backends to see if it's up or down.
Cluster: Applies only to Proxy.
cluster_backend_test_username
Default | [None] |
---|---|
Value | string |
This setting is used for two purposes:
%{backend_host}
variable expands to the hostname of the backend.doveadm cluster group access
command. This command just needs any existing user to work - it doesn't
matter that it's not actually in the accessed group.Cluster: Applies to both Proxy and Backend.
cluster_default_group_count
Default | [None] |
---|---|
Value | unsigned integer |
Number of user groups that may be automatically created. This is used for
creating a group for a user that doesn't yet have one. The group will be
named default-N
where N is between 1 and cluster_default_group_count
.
Cluster: Applies only to Proxy.
cluster_geodb
Default | [None] |
---|---|
Value | string |
Dictionary URI used for the globally shared GeoDB. This typically points to Cassandra.
Cluster: Applies to both Proxy and Backend.
cluster_local_site
Default | [None] |
---|---|
Value | string |
Name of the local site. This must be the same name as used by
doveadm cluster-site
commands.
Cluster: Applies to both Proxy and Backend.
cluster_localdb
Default | [None] |
---|---|
Value | string |
Dictionary URI used for the server-specific local database. This typically
points to SQLite under /dev/shm
.
Cluster: Applies to both Proxy and Backend.
cluster_proxy_check_backends
Default | yes |
---|---|
Value | string |
If enabled, this proxy runs checks to see whether backends are up or down.
If disabled, this proxy never sets any backends offline.
Cluster: Applies only to Proxy.
cluster_user_move_timeout
Default | 31secs |
---|---|
Value | time |
If user moving hasn't finished by this timeout, just assume it finished and continue to the next user.
Cluster: Applies only to Proxy.
compress_bz2_block_size_100k
Default | 9 |
---|---|
Value | unsigned integer |
Plugin | mail-compress plugin |
The compression block size to use. Must be between 1
(100 000
bytes)
and 9
(900 000
bytes).
compress_deflate_level
Default | 6 |
---|---|
Value | unsigned integer |
Plugin | mail-compress plugin |
The compression level to use for deflate compression. Must be between 0
(no compression) and 9
.
compress_gz_level
Default | 6 |
---|---|
Value | unsigned integer |
Plugin | mail-compress plugin |
The compression level to use for gz compression. Must be between 0
(no compression) and 9
.
compress_zstd_level
Default | 3 |
---|---|
Value | unsigned integer |
Plugin | mail-compress plugin |
The compression level to use for zstd compression. Must be between 1
and
22
.
crypt_acl_require_secure_key_sharing
Default | no |
---|---|
Value | boolean |
Plugin | mail-crypt plugin |
If enabled, you cannot share a key to groups or someone without a public key.
crypt_global_private_key
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | mail-crypt plugin |
List of global private key(s) to decrypt mails. Add
crypt_private_key_file
and optionally
crypt_private_key_password
inside each filter.
crypt_global_private_keys
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | mail-crypt plugin |
List of private keys to decrypt files. Add crypt_private_key_file
and optionally crypt_private_key_password
inside each filter.
crypt_global_public_key_file
Default | [None] |
---|---|
Value | File |
Plugin | mail-crypt plugin |
Public key to encrypt files. Key must be in PEM pkey format. The PEM key may additionally be base64-encoded into a single line, which can make it easier to store into userdb extra fields.
crypt_private_key_file
Default | [None] |
---|---|
Value | File |
See Also | |
Plugin | mail-crypt plugin |
Private key in Mail Crypt Plugin: Converting EC key to PKEY. The PEM key may additionally be base64-encoded into a single line, which can make it easier to store into userdb extra fields.
Used inside crypt_global_private_keys
and
crypt_user_key_encryption_key
lists.
crypt_private_key_name
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | mail-crypt plugin |
Name of the private key inside crypt_global_private_keys
or
crypt_user_key_encryption_key
.
crypt_private_key_password
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | mail-crypt plugin |
Password to decrypt crypt_private_key_file
.
crypt_user_key_curve
Default | [None] |
---|---|
Value | string |
Plugin | mail-crypt plugin |
Defines the elliptic curve to use for key generation.
Any valid curve supported by the underlying cryptographic library is allowed.
Example:
crypt_user_key_curve = secp521r1
This must be set if you wish to use folder keys rather than global keys.
With global keys (either RSA or EC keys), all keying material is taken from the setting and no key generation is performed.
In folder-keys mode, a key pair is generated for the user, and a folder-specific key pair is generated. The latter is encrypted by means of the user's key pair.
For EdDSA, you need to use X448 or X25519, case sensitive.
crypt_user_key_encryption_key
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | mail-crypt plugin |
List of private key(s) to decrypt user's master private key. Add
crypt_private_key_file
and optionally
crypt_private_key_password
inside each filter.
crypt_user_key_password
Default | [None] |
---|---|
Value | string |
Plugin | mail-crypt plugin |
Password to decrypt user's master private key.
crypt_user_key_require_encrypted
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | mail-crypt plugin |
If yes, require user's master private key to be encrypted with
crypt_user_key_password
or
crypt_user_key_encryption_key
. If they are unset new user key
generation will fail. This setting doesn't affect already existing
non-encrypted keys.
crypt_write_algorithm
Default | aes-256-gcm-sha256 |
---|---|
Value | string |
Plugin | mail-crypt plugin |
Set the encryption algorithm. If empty new mails are not encrypted, but existing mails can still be decrypted.
debug_log_path
Default | info_log_path |
---|---|
Value | string |
The log file to use for debug messages.
default_client_limit
Default | 1000 |
---|---|
Value | unsigned integer |
Default value for service_client_limit
, if not overridden by
service-specific configuration.
default_idle_kill_interval
Default | 1 min |
---|---|
Value | time |
Default value for service_idle_kill_interval
, if not overridden by
service-specific configuration.
default_internal_group
Default | dovecot |
---|---|
Value | string |
See Also |
Define the default internal group.
default_internal_user
Default | dovecot |
---|---|
Value | string |
See Also |
Define the default internal user.
Unprivileged processes run under the ID of the internal user. This user should be distinct from the login user, to prevent login processes from disturbing other processes.
default_login_user
Default | dovenull |
---|---|
Value | string |
The user the login process should run as.
This is the least trusted user in Dovecot: this user should not have access to anything at all.
default_process_limit
Default | 100 |
---|---|
Value | unsigned integer |
Default value for service_process_limit
, if not overridden by
service-specific configuration.
default_vsz_limit
Default | 1 G |
---|---|
Value | size |
Default value for service_vsz_limit
, if not overridden by
service-specific configuration.
deliver_log_format
Default | msgid=%{msgid}: %{message} |
---|---|
Value | String without variables |
The format to use for logging mail deliveries.
Variables that can be used for this setting (see Global variables
):
Variable Name | Description |
---|---|
%{message} |
Delivery status message (e.g., saved to INBOX) |
%{msgid} |
|
%{subject} |
Subject |
%{from} |
From address |
%{from_envelope} |
SMTP FROM envelope |
%{size} |
Physical size |
%{vsize} |
Virtual size |
%{to_envelope} |
RCPT TO envelope |
%{delivery_time} |
How many milliseconds to deliver the mail |
%{session_time} |
LMTP session duration, not including %{delivery_time} |
%{storage_id} |
Backend-specific ID for mail, e.g. Maildir filename |
Example:
deliver_log_format = stime=%{session_time} msgid=%{msgid}: %{message}
dict
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new dict. The filter name refers to the dict_name
setting.
Example:
dict file {
# ...
}
Since an empty dict_driver
defaults to dict_name
, there
is no need to specify the dict_driver
setting explicitly.
dict_driver
Default | <dict_name> |
---|---|
Value | string |
The dict driver to use. Defaults to dict_name
.
dict_file_path
Default | [None] |
---|---|
Value | string |
Path for the dictionary file.
dict_map
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new dict mapping. The filter name refers to the
dict_map_pattern
setting.
dict_map_expire_field
Default | [None] |
---|---|
Value | string |
Field in the SQL table to use for tracking dict key expiration. This field is optional if no expiration is used by the code accessing the dict map.
dict_map_field
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new field for the dict map. The filter name refers to the
dict_map_field_pattern
setting. The fields are part of the SQL
query looking up the dict key.
dict_map_field_name
Default | [None] |
---|---|
Value | string |
See Also |
Field in the SQL table to use for the dict_map_field
.
dict_map_field_pattern
Default | [None] |
---|---|
Value | string |
See Also |
Variable in the dict_map_pattern
that maps to this
dict_map_field
. The value must always begin with $
.
dict_map_field_type
Default | string |
---|---|
Value | string |
Allowed Values | string int uint double hexblob uuid |
See Also |
Type of the field in the SQL table for the dict_map_field
.
dict_map_ldap_filter
Default | [None] |
---|---|
Value | string |
The ldap filter to use to find the ldap entry.
This setting is required for ldap dict_map
dict_map_pattern
Default | [None] |
---|---|
Value | string |
Pattern that is matched to the accessed dict keys. The dict_map
filter name refers to this setting. If the pattern matches the key, this dict
map (and no other) is used. The dict maps are processed in the order listed in
the configuration file.
dict_map_sql_table
Default | [None] |
---|---|
Value | string |
SQL table to use for accessing this dict map.
dict_map_username_field
Default | [None] |
---|---|
Value | string |
Field in the SQL table to use for accessing private dict keys in this dict map. This setting is optional if only shared keys are accessed.
dict_map_value
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
sql: Creates a new value for the dict map. The filter name refers to the
dict_map_value_name
setting. Dict supports reading/writing multiple
values for the same key.
ldap: Value to be returned from an ldap search, as a variable-expression
dict_map_value_name
Default | [None] |
---|---|
Value | string |
See Also |
Field in the SQL table to use for the dict_map_value
.
dict_map_value_type
Default | string |
---|---|
Value | string |
Allowed Values | string int uint double hexblob uuid |
See Also |
Type of the field in the SQL table for the dict_map_value
.
dict_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of the dict. The dict_driver
setting defaults to this.
dict_proxy_idle_timeout
Default | [None] |
---|---|
Value | time (milliseconds) |
How long to keep the connection open to dict server before disconnecting. 0
means immediate disconnection after finishing the operation.
dict_proxy_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of the dict to access in the dict server. This refers to the
dict_name
setting.
dict_proxy_slow_warn
Default | 5s |
---|---|
Value | time (milliseconds) |
Log a warning about dict lookups that take longer than this interval.
dict_proxy_socket_path
Default | dict |
---|---|
Value | string |
Points to the dict server's UNIX socket. The path is relative to the the
base_dir
setting. This should be changed to dict-async
if the
dict driver supports asynchronous lookups (e.g. ldap, pgsql, cassandra, NOT
mysql). The dict-async
service allows more than one client, so this
configuration prevents creating unnecessarily many dict processes.
dict_server
Value | Named Filter |
---|---|
See Also |
Named filter for the dict server settings. Add the available named dicts for
the dict server under this filter using the dict
settings.
For example:
dict_server {
dict quota {
driver = sql
# ...
}
dict acl {
driver = file
# ...
}
}
dotlock_use_excl
Default | yes |
---|---|
Value | boolean |
If yes
, rely on O_EXCL to work when creating dotlock files.
NFS has supported O_EXCL since version 3, so yes
should be safe to use
by default.
doveadm_allowed_commands
Default | ALL |
---|---|
Value | Boolean List |
Lists the commands that the client may use with the doveadm server.
The setting ALL
allows all commands.
doveadm_api_key
Default | [None] |
---|---|
Value | string |
Set an API key for use of the HTTP API for the doveadm server.
If set, the key must be included in the HTTP request (via X-API-Key header) base64 encoded.
doveadm_password
Default | [None] |
---|---|
Value | string |
The doveadm client and server must have a shared secret. This setting configures the doveadm server's password, used for client authentication.
Because it grants access to users' mailboxes, it must be kept secret.
doveadm_port
Default | [None] |
---|---|
Value | Port Number |
The destination port to be used for the next doveadm proxying hop. This implicitly enables doing a passdb lookup for finding the proxy settings.
A value of 0
means that proxying is not in use. This also means no passdb
lookup is done - only userdb lookup.
This setting is required with Palomar cluster configuration even in backends, because the backend may still ask proxy to reject the connection and proxy the user to another backend.
doveadm_server
Value | Named Filter |
---|
Filter for doveadm server specific settings.
doveadm_socket_path
Default | doveadm-server |
---|---|
Value | string |
The UNIX socket or host (host:port
syntax is allowed) for connecting to
the doveadm server.
doveadm_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no ssl starttls |
TODO
doveadm_username
Default | doveadm |
---|---|
Value | string |
The username for authentication to the doveadm service.
doveadm_worker_count
Default | [None] |
---|---|
Value | unsigned integer |
If the worker count set here is non-zero, mail commands are run via this many connections to the doveadm service.
If 0
, commands are run directly in the same process.
dovecot_config_version
Default | [None] |
---|---|
Value | string |
Changes |
|
Dovecot configuration version. It uses the same versioning as Dovecot in
general, e.g. 3.0.5
. This must be the first setting in the
configuration file. It specifies the configuration syntax, the used setting
names and the expected default values.
When there are default configuration changes in newer Dovecot versions, the existing installations will continue to work the same as before with the same default settings until this version number is increased. If there are other configuration changes, the old configuration will either keep working or there will be a clear failure at startup.
dovecot_storage_version
Default | [None] |
---|---|
Value | string |
Changes |
|
Dovecot storage file format version. It uses the same versioning as Dovecot in
general, e.g. 3.0.5
. It specifies the oldest Dovecot version
that must be able to read files written by this Dovecot instance. The intention
is that when upgrading Dovecot cluster, this setting is first kept as the old
Dovecot version. Once the cluster is fully upgraded to a new version and
there is no intention to rollback to the old version anymore, this version
number can be increased.
dsync_alt_char
Default | _ |
---|---|
Value | string |
When the source and destination mailbox formats are different, it's possible for a mailbox name to exist on one source that isn't valid for the destination. Any invalid characters are replaced with the character indicated here.
dsync_commit_msgs_interval
Default | 100 |
---|---|
Value | unsigned integer |
Dsync will commit this number of messages incrementally, to avoid huge transactions that fail.
dsync_features
Default | [None] |
---|---|
Value | string |
This setting specifies features and workarounds that can be used with dsync. Options are specified in this setting via a space-separated list.
Available options:
empty-header-workaround
no-header-hashes
event_exporter
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new event exporter. The filter name refers to the
event_exporter_name
setting.
event_exporter_driver
Default | log |
---|---|
Value | string |
Allowed Values | log file unix http-post drop |
See Also |
The event exporter driver to use.
event_exporter_file_path
Default | [None] |
---|---|
Value | string |
Path to event log file with event_exporter_driver = file
.
event_exporter_format
Default | [None] |
---|---|
Value | string |
See Also |
Format used for serializing the event.
event_exporter_http_post_url
Default | [None] |
---|---|
Value | string |
Target URL for event_exporter_driver = http-post
.
event_exporter_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of the event exporter. It is referred by the metric_exporter
settings.
event_exporter_time_format
Default | rfc3339 |
---|---|
Value | string |
Allowed Values | rfc3339 unix |
See Also |
rfc3339
YYYY-MM-DDTHH:MM:SS.uuuuuuZ
).unix
event_exporter_unix_connect_timeout
Default | 250ms |
---|---|
Value | time (milliseconds) |
See Also |
Timeout when connecting to unix socket with
event_exporter_driver = unix
.
event_exporter_unix_path
Default | [None] |
---|---|
Value | string |
See Also |
Path to event unix socket with event_exporter_driver = unix
.
execute
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Configure external execution script. Used by various different features, such as welcome. Currently only a single execute block (per feature) is allowed.
execute_args
Default | [None] |
---|---|
Value | string |
External execution script arguments. The parameters are split by space characters. Currently escape characters are not supported.
execute_driver
Default | [None] |
---|---|
Value | string |
Allowed Values | unix fork tcp |
See Also |
How to execute the external script:
unix
script
service listening in
execute_unix_socket_path
.fork
execute_fork_path
binary directly.tcp
script
service listening in
execute_tcp_host
:execute_tcp_port
.execute_fork_path
Default | execute_name |
---|---|
Value | string |
Path to the binary that is executed with execute_driver = fork
.
execute_name
Default | [None] |
---|---|
Value | string |
Name of the execution script. This is the execute
named filter
name. It is also used to provide a default driver-specific settings:
unix
execute_unix_socket_path
.fork
execute_fork_path
.tcp
execute_tcp_host
:execute_tcp_port
.execute_tcp_host
Default | execute_name = host: |
---|---|
Value | string |
TCP host where to connect to with execute_driver = tcp
.
execute_tcp_port
Default | execute_name = :port |
---|---|
Value | string |
TCP port where to connect to with execute_driver = tcp
.
execute_unix_socket_path
Default | execute_name |
---|---|
Value | string |
UNIX socket path where to connect to with execute_driver = unix
.
fifo_listener
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new FIFO listener for a service
. The filter name refers
to the fifo_listener_path
setting.
fifo_listener_group
Default | [None] |
---|---|
Value | string |
Group of the listener file. Empty (default) means GID 0 (root/wheel).
fifo_listener_mode
Default | 0600 |
---|---|
Value | octal unsigned integer |
Mode of the file. Note that 0600
is an octal value, while 600
is a
different decimal value. Setting mode to 0
disables the listener.
fifo_listener_path
Default | [None] |
---|---|
Value | String without variables |
See Also |
Path to the FIFO, relative to base_dir
setting. The
fifo_listener
filter name refers to this setting.
fifo_listener_type
Default | [None] |
---|---|
Value | string |
Changes |
|
Listener type. This string value has service-specific meaning and is used to distinguish different listener types that one service may employ.
fifo_listener_user
Default | [None] |
---|---|
Value | string |
Owner of the listener file. Empty (default) means UID 0 (root).
first_valid_gid
Default | 1 |
---|---|
Value | unsigned integer |
See Also |
This setting and last_valid_gid
specify the valid GID
range for users.
A user whose primary GID is outside this range is not allowed to log in.
If the user belongs to any supplementary groups, the corresponding IDs are not set.
first_valid_uid
Default | 500 |
---|---|
Value | unsigned integer |
See Also |
This setting and last_valid_uid
specify the valid UID
range for users.
A user whose UID is outside this range is not allowed to log in.
fs
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Create a new fs to the list of filesystems. The filter name refers
to fs_name
setting.
Example:
fs posix {
# ...
}
Since an empty fs_driver
default to fs_name
there is no
need to specify fs_driver
explicitly.
It's possible to specify the same fs
multiple times by separating the
fs_name
and fs_driver
settings:
fs compress1 {
fs_driver = compress
}
fs compress2 {
fs_driver = compress
}
fs_auth_cache
Value | Named Filter |
---|---|
Plugin | obox plugin |
Named filter for fs-auth service. Used for configuring dictionary for authentication cache. This allows sharing the cache between multiple servers.
fs_auth_request_max_retries
Default | 1 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
If fs-auth fails to perform authentication lookup, retry the HTTP request this many times.
fs_auth_request_timeout
Default | 10s |
---|---|
Value | time (milliseconds) |
Plugin | obox plugin |
Absolute HTTP request timeout for authentication lookups.
fs_aws_s3
Value | Named Filter |
---|---|
See Also | |
Plugin | obox plugin |
Filter for AWS S3-specific settings. fs_s3
filter is also used.
fs_azure
Value | Named Filter |
---|---|
Plugin | obox plugin |
Filter for Azure-specific settings.
fs_azure_account_name
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Azure account name for all authentication types.
fs_azure_auth_type
Default | user-sas |
---|---|
Value | string |
Allowed Values | user-sas service-sas legacy |
Plugin | obox plugin |
Azure authentication type to use.
Options:
Value | Description |
---|---|
user-sas |
See Azure User SAS |
service-sas |
See Azure Service SAS |
legacy |
See Azure Legacy Authentication |
fs_azure_bulk_delete_limit
Default | 256 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Number of deletes supported within the same bulk delete request. 0
disables
bulk deletes.
fs_azure_container_name
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
Azure container name.
fs_azure_legacy_auth_secret
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Base64-encoded authentication shared key secret when using
fs_azure_auth_type = legacy
.
fs_azure_service_sas_secret
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Base64-encoded authentication shared key secret when using
fs_azure_auth_type = service-sas
.
fs_azure_user_sas_client_id
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
ClientId to be used for authentication against Entra IDM. This is needed only
with fs_azure_auth_type = user-sas
.
fs_azure_user_sas_client_secret
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Client secret to be used for authentication against Entra IDM (base64 encoded).
This is needed only with fs_azure_auth_type = user-sas
.
fs_azure_user_sas_tenant_id
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
TenantId to be used for authentication against Entra IDM. This is needed only
with fs_azure_auth_type = user-sas
.
fs_compress_read_plain_fallback
Default | no |
---|---|
Value | boolean |
See Also |
By default fs-compress plugin fails if the file wasn't compressed. If this setting is enabled the file is returned as-is (i.e. allows reading plaintext files).
fs_compress_write_method
Default | [None] |
---|---|
Value | string |
See Also |
Which Compression Method to use for writing new files.
fs_crypt_read_plain_fallback
Default | no |
---|---|
Value | boolean |
If enabled files that are not encrypted are returned as-is. By default it results in a read error.
fs_dict_value_encoding
Default | raw |
---|---|
Value | string |
Allowed Values | raw hex base64 |
How to encode file contents into the dict value.
fs_dictmap_bucket_cache_path
Default | [None]obox { "%{home}/buckets.cache" } |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Required when fs_dictmap_bucket_size
is set. Bucket counters are
cached in this file. This path should be located under the obox indexes
directory (on the SSD backed cache mount point; e.g.
%{home}/buckets.cache
).
fs_dictmap_bucket_deleted_days
Default | 0obox { 11 } |
---|---|
Value | unsigned integer |
See Also | |
Plugin | obox plugin |
Track Cassandra's tombstones in buckets.cache
file to avoid creating
excessively large buckets when a lot of mails are saved and deleted in a
folder. The value should be one day longer than gc_grace_seconds
for the
user_mailbox_objects
table. By default this is 10 days, so in that case
fs_dictmap_bucket_deleted_days = 11
should be used. When determining
whether fs_dictmap_bucket_size
is reached and a new one needs to be
created, with this setting the tombstones are also taken into account. This
tracking is preserved only as long as the buckets.cache
exists.
fs_dictmap_bucket_size
Default | 0obox { 10000 } |
---|---|
Value | unsigned integer |
Dependencies | |
See Also | |
Plugin | obox plugin |
Separate email objects into buckets, where each bucket can have a maximum of
this many emails. This should be set to 10000
with Cassandra to avoid
partitions becoming too large when there are a lot of emails.
fs_dictmap_cleanup_uncertain
Default | yes |
---|---|
Value | boolean |
See Also | |
Plugin | obox plugin |
If a write to Cassandra fails with uncertainty and this setting is enabled Dovecot attempts to clean it up.
fs_dictmap_delete_dangling_links
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | obox plugin |
If an object exists in dict, but not in storage, delete it automatically from dict when it's noticed.
WARNING
This setting isn't safe to use by default, because storage may return "object doesn't exist" errors only temporarily during split brain.
fs_dictmap_delete_timestamp
Default | 10s |
---|---|
Value | time (milliseconds) |
Plugin | obox plugin |
Increase Cassandra's DELETE
timestamp by this value. This is useful to make
sure the DELETE
isn't ignored because Dovecot backends' times are slightly
different.
WARNING
If the same key is intentionally attempted to be written again soon afterwards,
the write becomes ignored. Dovecot doesn't normally do this, but this can
happen if the user is deleted with doveadm obox user delete
and the same
user is recreated. This can also happen with doveadm backup
that reverts
changes by deleting a mailbox; running the doveadm backup
again will
recreate the mailbox with the same GUID.
fs_dictmap_dict_prefix
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
Prefix that is added to all dict keys.
fs_dictmap_diff_table
Default | no metacache { yes } |
---|---|
Value | boolean |
See Also | |
Plugin | obox plugin |
Store diff and self index bundle objects to a separate table. This is a Cassandra-backend optimization.
fs_dictmap_lock_path
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
If fs_dictmap_refcounting_table
is enabled, use this dictionary for
creating lock files to objects while they're being copied or deleted. This
attempts to prevent race conditions where an object copy and delete runs
simultaneously and both succeed, but the copied object no longer exists. This
can't be fully prevented if different servers do this concurrently. If
lazy-expunge plugin is used this setting isn't really needed, because such
race conditions are practically nonexistent. Not using the setting will
improve performance by avoiding a Cassandra SELECT
when copying mails.
fs_dictmap_max_parallel_iter
Default | 10 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Changes |
|
Describes how many parallel dict iterations can be created internally. The
default value is 10
. Parallel iterations can especially help speed up
reading huge folders.
fs_dictmap_nlinks_limit
Default | 0obox { 3 } |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Defines the maximum number of results returned from a dictionary iteration
lookup (i.e. Cassandra CQL query) when checking the number of links to an
object. Limiting this may improve performance. Currently Dovecot only cares
whether the link count is 0
, 1
or "more than 1
" so for a bit of
extra safety we recommend setting it to 3
.
fs_dictmap_refcounting_index
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | obox plugin |
Similar to the fs_dictmap_refcounting_table
setting, but instead of
using a reverse table to track the references, assume that the database has a
reverse index set up.
fs_dictmap_refcounting_table
Default | no obox { yes } |
---|---|
Value | boolean |
See Also | |
Plugin | obox plugin |
Enable reference counted objects. Reference counting allows a single mail object to be stored in multiple mailboxes, without the need to create a new copy of the message data in object storage.
fs_dictmap_storage_objectid_migrate
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
This is expected to be used with storage-objectid-prefix when adding fs-dictmap
for an existing installation. The newly created object IDs have
<storage-objectid-prefix>/<object-id>
path while the migrated object IDs
have <user>/mailboxes/<mailbox-guid>/<oid>
path. The newly created object
IDs can be detected from the 0x80
bit in the object ID's extra-data
.
Migrated object IDs can't be copied directly within dict - they'll be first
copied to a new object ID using the parent fs.
fs_dictmap_storage_objectid_prefix
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Use fake object IDs with object storage that internally uses paths. This makes
their performance much better, since it allows caching object IDs in Dovecot
index files and copying them via dict. This works by storing object in
<prefix>/<objectid>
. This setting should be used inside obox plugin
named filter for storing mails under <prefix>
(but not for
metacache
or fts
).
For example:
fs_dictmap_storage_objectid_prefix = %{user}/mails/
fs_dictmap_storage_passthrough_paths
Default | none |
---|---|
Value | string |
Allowed Values | none full read-only |
See Also | |
Plugin | obox plugin |
Use fake object IDs with object storage that internally uses path. Assume that
object ID is the same as the path. Objects can't be copied within the dict.
This setting should be used inside metacache
and
fts_dovecot
named filters, because they don't need to support
copying objects. For mails, use fs_dictmap_storage_objectid_prefix
instead.
Value | Description |
---|---|
none |
Don't use fake object IDs. |
full |
The object ID is written to dict as an empty value, because it's not used. |
read-only |
Useful for backwards compatibility. The path is written to the dict as the object ID even though it is not used (except potentially by an older Dovecot version). |
fs_driver
Default | fs_name |
---|---|
Value | string |
See Also |
fs_fscache_path
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
Path to the fscache.
fs_fscache_size
Default | [None] |
---|---|
Value | size |
Plugin | obox plugin |
Size of the fscache.
fs_http_add_headers
Default | [None] |
---|---|
Value | String List |
Plugin | obox plugin |
Headers to add to HTTP requests.
fs_http_log_headers
Default | [None] |
---|---|
Value | Boolean List |
Plugin | obox plugin |
Headers with the given name in HTTP responses are logged as part of any error,
debug or warning messages related to the HTTP request. These headers are also
included in the http_request_finished
event as fields prefixed with
http_hdr_
.
fs_http_log_trace_headers
Default | yes |
---|---|
Value | boolean |
Plugin | obox plugin |
If yes add X-Dovecot-User:
and X-Dovecot-Session:
headers to HTTP
request. The session header is useful to correlate object storage requests to
AppSuite/Dovecot sessions.
fs_http_reason_header_max_length
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
If non-zero add X-Dovecot-Reason:
header to the HTTP request. The value
contains a human-readable string why the request is being sent.
fs_http_slow_warning
Default | 5s |
---|---|
Value | time (milliseconds) |
Plugin | obox plugin |
Log a warning about any HTTP request that takes longer than this time.
fs_name
Default | [None] |
---|---|
Value | string |
See Also |
fs_posix_fsync
Default | yes |
---|---|
Value | boolean |
Configure whether fsync()
is called after writes to guarantee that the file
is written to disk.
fs_posix_mode
Default | 0600 |
---|---|
Value | octal unsigned integer |
Mode to use for creating files.
fs_posix_prefix
Default | [None] |
---|---|
Value | string |
Directory prefix where files are read from/written to.
INFO
The trailing /
is not automatically added, so using e.g. /tmp/foo
as
prefix will cause /tmp/foofilename
to be created.
fs_s3
Value | Named Filter |
---|---|
Plugin | obox plugin |
Filter for S3-specific settings.
fs_s3_access_key
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
S3 access key. Not needed when AWS IAM is used.
fs_s3_auth_role
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
If not empty, perform AWS IAM lookup using this role.
fs_s3_bucket
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
S3 bucket name added to the request path.
fs_s3_bulk_delete_limit
Default | 1000 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Number of deletes supported within the same bulk delete request. 0
disables
bulk deletes.
fs_s3_region
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Specify region name for AWS S3 bucket. Only needed when using v4 signing.
fs_s3_secret
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
S3 secret. Not needed when AWS IAM is used.
fs_s3_signing
Default | v4 |
---|---|
Value | string |
Allowed Values | v4 v2 |
See Also | |
Plugin | obox plugin |
AWS s3 signing version to use. It is recommended to keep the default
v4 signing which also requires
fs_s3_region
to be set. The AWS v2 signing
is deprecated.
fs_s3_url
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
URL for accessing the S3 storage. For example:
https://BUCKETNAME.s3.example.com
fs_server_backend
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Specifies how to store files with fs-server.
fs_sproxyd
Value | Named Filter |
---|---|
See Also | |
Plugin | obox plugin |
Filter for sproxyd-specific settings.
fs_sproxyd_class
Default | 2 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Scality Class of Service. 2
means that the objects are written to the
Scality RING 3 times in total. This is generally the minimum allowable
redundancy for mail and index objects.
FTS data is more easily reproducible, so losing those indexes is not as
critical; Class of Service 1
may be appropriate based on customer
requirements.
fs_sproxyd_url
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
URL for accessing the sproxyd storage.
fts
Default | [None] |
---|---|
Value | Named List Filter |
Plugin | fts plugin |
Configures the used fts driver to perform fts plugin indexing. If not
specified, FTS is disabled. The filter name refers to the
fts_driver
setting.
Example:
fts solr {
# ...
}
fts_autoindex
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | fts plugin |
If enabled, index mail as it is delivered or appended.
It can be overridden at the mailbox level, e.g. you can disable autoindexing for selected mailboxes using this setting:
Example:
fts_autoindex = yes
# ...
mailbox trash {
special_use = Trash
fts_autoindex = no
}
mailbox spam {
special_use = Junk
fts_autoindex = no
}
mailbox storage/* {
fts_autoindex = no
}
fts_autoindex_max_recent_msgs
Default | [None] |
---|---|
Value | unsigned integer |
See Also | |
Plugin | fts plugin |
To exclude infrequently accessed mailboxes from automatic indexing, set
this value to the maximum number of Recent
flagged messages that exist
in the mailbox.
A value of 0
means to ignore this setting.
Mailboxes with more flagged Recent
messages than this value will not
be autoindexed, even though they get deliveries or appends. This is useful
for, e.g., inactive Junk folders.
Any folders excluded from automatic indexing will still be indexed, if a search on them is performed.
Example:
fts_autoindex_max_recent_msgs = 999
fts_decoder_driver
Default | [None] |
---|---|
Value | string |
Allowed Values | script tika |
Plugin | fts plugin |
Optional setting. If set, decode attachments to plaintext using the selected service and index the resulting plaintext.
fts_decoder_script_socket_path
Default | [None] |
---|---|
Value | string |
Plugin | fts plugin |
Changes |
|
Name of the script service used to decode the attachments.
See the decode2text.sh
script included in Dovecot for how to use this.
Example:
fts_decoder_driver = script
fts_decoder_script_socket_path = decode2text
service decode2text {
executable = script /usr/lib/dovecot/decode2text.sh
user = vmail
unix_listener decode2text {
mode = 0666
}
}
fts_decoder_tika_url
Default | [None] |
---|---|
Value | string |
Plugin | fts plugin |
Changes |
|
URL for Apache Tika decoder for attachments.
Example:
fts_decoder_driver = tika
fts_decoder_tika_url = http://tikahost:9998/tika/
fts_dovecot_message_count_stats
Default | no |
---|---|
Value | string |
Plugin | fts-dovecot plugin |
Enable tracking per-folder message counts in fts.S stats file. This is
useful for the doveadm fts check fast
command
to return per-folder results. Note that this changes the fts.S file format to
be backwards incompatible, so this should be enabled only after all backends
in the cluster have been upgraded.
Old Dovecot versions won't fail when they see the new fts.S file, but it needs to be regenerated, which can temporarily cause bad performance.
fts_dovecot_prefix
Default | no |
---|---|
Value | string |
Plugin | fts-dovecot plugin |
Specifies how prefix search should be invoked. May not work with some filters.
Options:
Value | Description |
---|---|
yes |
Equivalent to 0-255 |
<num>-[<num>] |
Search strings with that length will be treated as prefixes (e.g. 4- , 3-10 ) |
no |
No prefix searching is performed |
fts_driver
Default | [None] |
---|---|
Value | string |
Allowed Values | dovecot solr flatcurve |
Plugin | fts plugin |
Configures the used fts driver to perform fts plugin indexing. The
fts
filter name refers to this setting.
fts_header_excludes
Default | [None] |
---|---|
Value | Boolean List |
Plugin | fts plugin |
The list of headers to include or exclude.
includes
take precedence over excludes
: if a header matches both,
it is indexed.*
at the end of a header name matches anything starting
with that header name.Example:
fts_header_excludes {
Received = yes
DKIM-* = yes
X-* = yes
Comments = yes
}
fts_header_includes {
X-Spam-Status = yes
Comments = yes
}
Received
headers, all DKIM-
headers and all X-
experimental
headers are excluded, with the following exceptions:
Comments
and X-Spam-Status
are indexed anyway, as they match
both excludes
and includes
lists.Example:
fts_header_excludes {
* = yes
}
fts_header_includes {
From = yes
To = yes
Cc = yes
Bcc = yes
Subject = yes
Message-ID = yes
In-* = yes
X-CustomApp-* = yes
}
includes
.fts_header_includes
Default | [None] |
---|---|
Value | Boolean List |
See Also | |
Plugin | fts plugin |
fts_message_max_size
Default | [None] |
---|---|
Value | size |
Plugin | fts plugin |
Changes |
|
Maximum body size that is processed by fts. 0
means unlimited.
fts_search_add_missing
Default | body-search-only |
---|---|
Value | string |
Allowed Values | body-search-only yes |
Plugin | fts plugin |
Should missing mails be added to FTS indexes before search?
With body-search-only
this is done only when the search query requests
searching message bodies, i.e. header searches are not updating the FTS index.
The unindexed mails are searched without FTS, i.e. either getting the headers
from dovecot.index.cache
or by opening the emails if the headers aren't in
cache. This may be a useful optimization if the user's client only uses header
searches.
INFO
Only the yes
option guarantees consistent search results. Otherwise it's
possible that the search results will be different depending on whether the
search was performed via FTS index or not.
fts_search_read_fallback
Default | yes |
---|---|
Value | boolean |
Plugin | fts plugin |
If FTS lookup or indexing fails, fall back to searching without FTS (i.e. possibly opening all emails). This may timeout for large mailboxes and/or slow storage.
fts_search_timeout
Default | 30s |
---|---|
Value | time |
Plugin | fts plugin |
When the full text search driver detects that the index isn't up-to-date,
the indexer is told to index the messages and is given this much time to do
so. If this time limit is reached, an error is returned, indicating that
the search timed out during waiting for the indexing to complete:
NO [INUSE] Timeout while waiting for indexing to finish
.
A value of 0
means no timeout.
fts_solr_batch_size
Default | 1000 |
---|---|
Value | unsigned integer |
Plugin | fts-solr plugin |
Configures the number of mails sent to Solr in a single request.
fts_autoindex = yes
each new mail gets separately indexed on
arrival, so fts_solr_batch_size
only matters during the initial indexing
of a mailbox.fts_autoindex = no
new mails don't get indexed on arrival, so
fts_solr_batch_size
is used when indexing is triggered.fts_solr_soft_commit
Default | yes |
---|---|
Value | boolean |
See Also | |
Plugin | fts-solr plugin |
Controls whether new mails are immediately searchable via Solr.
fts_solr_url
Default | [None] |
---|---|
Value | string |
Plugin | fts-solr plugin |
Required base URL for Solr.
INFO
Remember to add your core name if using solr 7+: /solr/dovecot
.
Example:
fts_solr_url = http://solr.example.org:8983/solr/dovecot/
fts_solr_batch_size = 1000
haproxy_timeout
Default | 3secs |
---|---|
Value | time |
When to abort the HAProxy connection when no complete header has been received.
haproxy_trusted_networks
Default | [None] |
---|---|
Value | string |
A space-separated list of trusted network ranges for HAProxy connections.
Connections from networks outside these ranges to ports that are configured for HAProxy are aborted immediately.
hostname
Default | <system's real hostname@domain.tld> |
---|---|
Value | string |
The hostname to be used in email messages sent out by the local delivery agent (such as the Message-ID: header), in LMTP replies, and as the hostname advertised by submission SMTP service.
http_client_connect_timeout
Default | [None] |
---|---|
Value | time (milliseconds) |
See Also | |
Changes |
|
Max time to wait for TCP connect and SSL handshake to finish before retrying.
0
= use http_client_request_timeout
.
http_client_delete_request_max_attempts
Default | [None] |
---|---|
Value | unsigned integer |
See Also | |
Changes |
|
If non-zero, override http_client_request_max_attempts
for
DELETE
requests.
http_client_delete_request_timeout
Default | [None] |
---|---|
Value | time (milliseconds) |
See Also | |
Changes |
|
If non-zero, override http_client_request_timeout
for
DELETE
requests.
http_client_max_connect_attempts
Default | [None] |
---|---|
Value | unsigned integer |
Changes |
|
Maximum number of connection attempts to a host before all associated requests fail.
If non-zero, the maximum will be enforced across all IPs for that host, meaning that IPs may be tried more than once eventually if the number of IPs is smaller than the specified maximum attempts. If the number of IPs is higher than the maximum attempts not all IPs are tried.
If 0
, all IPs are tried at most once.
http_client_max_idle_time
Default | [None] |
---|---|
Value | time (milliseconds) |
Changes |
|
Maximum time a connection will idle. If parallel connections are idle, the duplicates will end earlier based on how many idle connections exist to that same service.
http_client_max_parallel_connections
Default | 1 |
---|---|
Value | unsigned integer |
Changes |
|
Maximum number of parallel connections per peer.
http_client_max_pipelined_requests
Default | 1 |
---|---|
Value | unsigned integer |
Changes |
|
Maximum number of pipelined requests per connection.
http_client_proxy_password
Default | [None] |
---|---|
Value | string |
Changes |
|
Password for HTTP proxy.
http_client_proxy_socket_path
Default | [None] |
---|---|
Value | string |
See Also | |
Changes |
|
UNIX socket path for HTTP proxy. Overrides http_client_proxy_url
.
http_client_proxy_ssl_tunnel
Default | yes |
---|---|
Value | boolean |
Changes |
|
If no
the HTTP proxy delegates SSL negotiation to proxy, rather than
creating a CONNECT
tunnel through the proxy for the SSL link.
http_client_proxy_url
Default | [None] |
---|---|
Value | string |
See Also | |
Changes |
|
URL for HTTP proxy. Ignored if http_client_proxy_socket_path
is
set.
http_client_proxy_username
Default | [None] |
---|---|
Value | string |
Changes |
|
Username for HTTP proxy.
http_client_rawlog_dir
Default | [None] |
---|---|
Value | string |
Changes |
|
Directory for writing raw log data for debugging purposes.
WARNING
Must be writable by the process creating this log.
http_client_read_request_max_attempts
Default | [None] |
---|---|
Value | unsigned integer |
See Also | |
Changes |
|
If non-zero, override http_client_request_max_attempts
for GET
and HEAD
requests.
http_client_read_request_timeout
Default | [None] |
---|---|
Value | time (milliseconds) |
See Also | |
Changes |
|
If non-zero, override http_client_request_timeout
for GET
and
HEAD
requests.
http_client_request_absolute_timeout
Default | [None] |
---|---|
Value | unsigned integer |
Changes |
|
Max total time to wait for HTTP request to finish, including all retries. 0
means no limit.
http_client_request_max_attempts
Default | 1 |
---|---|
Value | unsigned integer |
Changes |
|
Maximum number of attempts for a request.
http_client_request_max_redirects
Default | [None] |
---|---|
Value | unsigned integer |
Changes |
|
Maximum number of redirects for a request. 0
= redirects refused.
http_client_request_timeout
Default | 1 min |
---|---|
Value | time (milliseconds) |
Changes |
|
Max time to wait for HTTP requests to finish before retrying.
http_client_write_request_max_attempts
Default | [None] |
---|---|
Value | unsigned integer |
See Also | |
Changes |
|
If non-zero, override http_client_request_max_attempts
for PUT
and POST
requests.
http_client_write_request_timeout
Default | [None] |
---|---|
Value | time (milliseconds) |
See Also | |
Changes |
|
If non-zero, override http_client_request_timeout
for PUT
and
POST
requests.
http_server_max_idle_time
Default | [None] |
---|---|
Value | time (milliseconds) |
Maximum time a connection will idle.
http_server_max_pipelined_requests
Default | 1 |
---|---|
Value | unsigned integer |
Maximum number of pipelined requests per connection.
http_server_rawlog_dir
Default | [None] |
---|---|
Value | string |
Directory for writing raw log data for debugging purposes.
imap_acl_allow_anyone
Default | no |
---|---|
Value | boolean |
Plugin | imap-acl plugin |
By default Dovecot doesn't allow using the IMAP anyone
or
authenticated
identifier, because it would be an easy way to spam
other users in the system.
If mail-crypt plugin is used, users who have different set of encryption keys cannot share mails, but sharing is possible within the scope of a key.
imap_capability
Default | [None] |
---|---|
Value | Boolean List |
Override the IMAP CAPABILITY response.
Example of modifying capability banner by adding QUOTA and ACL, and removing IDLE:
imap_capability {
QUOTA = yes
ACL = yes
IDLE = no
}
Example of setting capability banner to exactly IMAP4rev1 SASL-IR IDLE:
imap_capability = IMAP4rev1 SASL-IR IDLE
imap_client_workarounds
Default | [None] |
---|---|
Value | Boolean List |
Workarounds for various IMAP client bugs can be enabled here.
The following values are currently supported:
delay-newmail
tb-extra-mailbox-sep
mailbox_list_layout = fs
(mbox and dbox) confuses
Thunderbird, causing extra / suffixes to mailbox names, Dovecot can be told
to ignore the superfluous character instead of judging the mailbox name to
be invalid.tb-lsub-flags
mailbox_list_layout = fs
aren't
selectable, and users may receive pop-ups with not selectable errors.
Showing \Noselect flags for these replies (e.g., in mbox use) causes them
to be grayed out.imap_fetch_failure
Default | disconnect-immediately |
---|---|
Value | string |
Allowed Values | disconnect-after disconnect-immediately no-after |
Behavior when IMAP FETCH fails due to some internal error. Options:
disconnect-immediately
The FETCH is aborted immediately and the IMAP client is disconnected.
disconnect-after
The FETCH runs for all the requested mails returning as much data as possible. The client is finally disconnected without a tagged reply.
no-after
Same as disconnect-after, but tagged NO reply is sent instead of disconnecting the client.
If the client attempts to FETCH the same failed mail more than once, the client is disconnected.
This is to avoid clients from going into infinite loops trying to FETCH a broken mail.
imap_hibernate_timeout
Default | 30secs |
---|---|
Value | time |
How long to wait while the client is in IDLE state before moving the connection to the hibernate process, to save on memory use, and close the existing IMAP process.
If nothing happens for this long while client is IDLEing, move the connection to imap-hibernate process and close the old imap process. This saves memory, because connections use very little memory in imap-hibernate process. The downside is that recreating the imap process back uses some additional system resources.
imap_id_retain
Default | no |
---|---|
Value | boolean |
When proxying IMAP connections to other hosts, this variable must be enabled to forward the IMAP ID command provided by the client.
This setting enables the %{client_id}
variable for auth processes. See
Authentication variables
.
imap_id_send
Default | name=%{dovecot:name} |
---|---|
Value | String List |
Which ID field names and values to send to clients.
You can access the default values by using Distribution Variables.
imap_id_send {
name = %{dovecot:name}
version = %{dovecot:version}
support-url = http://example.com/
}
imap_intercept_disconnect_after
Default | infinite |
---|---|
Value | time |
Plugin | imap-intercept plugin |
The IMAP client is disconnected after this amount of time, and interception is discontinued.
This timeout prevents repeated interception of a very long session (disconnection is performed for all users, so that interception-specific behavior isn't obvious to the user).
imap_literal_minus
Default | no |
---|---|
Value | boolean |
Enable IMAP LITERAL- (RFC 7888) extension (replaces LITERAL+)?
imap_logout_format
Default | in=%{input} out=%{output} deleted=%{deleted} expunged=%{expunged} trashed=%{trashed} hdr_count=%{fetch_hdr_count} hdr_bytes=%{fetch_hdr_bytes} body_count=%{fetch_body_count} body_bytes=%{fetch_body_bytes} |
---|---|
Value | String without variables |
This setting specifies the IMAP logout format string. Supported variables,
in addition to Mail user variables
are:
Variable Name | Description |
---|---|
%{input} |
Total number of bytes read from client |
%{output} |
Total number of bytes sent to client |
%{fetch_hdr_count} |
Number of mails with mail header data sent to client |
%{fetch_hdr_bytes} |
Number of bytes with mail header data sent to client |
%{fetch_body_count} |
Number of mails with mail body data sent to client |
%{fetch_body_bytes} |
Number of bytes with mail body data sent to client |
%{deleted} |
Number of mails where client added Deleted flag |
%{expunged} |
Number of mails that client expunged, which does not include automatically expunged mails |
%{autoexpunged} |
Number of mails that were automatically expunged after client disconnected |
%{trashed} |
Number of mails that client copied/moved to the special_use=Trash mailbox. |
%{appended} |
Number of mails saved during the session |
imap_metadata
Default | no |
---|---|
Value | boolean |
Dovecot supports the IMAP METADATA extension (RFC 5464), which allows
per-mailbox, per-user data to be stored and accessed via IMAP commands. Set
this parameter's value to yes
if you wish to activate the IMAP METADATA
commands.
Note: If activated, a dictionary needs to be configured, via the
mail_attribute
setting.
Example:
# Store METADATA information within user's Maildir directory
mail_attribute {
dict file {
path = %{home}/Maildir/dovecot-attributes
}
}
protocol imap {
imap_metadata = yes
}
imap_urlauth_host
Default | [None] |
---|---|
Value | URL |
Specifies the host used for URLAUTH URLs. Only this host is accepted in
the client-provided URLs. Using *
value (not recommended) allows all
hosts and the generated URLs use hostname
as the host.
An empty value disables the URLAUTH extension entirely.
WARNING
URLAUTH in current versions of Dovecot is broken in several ways. This will be fixed in the future, but activating URLAUTH support on production systems is not recommended.
INFO
This setting is REQUIRED for the URLAUTH (RFC 4467) extension to be active.
imap_urlauth_logout_format
Default | in=%{input} out=%{output} |
---|---|
Value | String without variables |
See Also |
Specifies the logout format used with the URLAUTH extension in IMAP operation.
WARNING
This setting is currently not used.
Variables allowed:
Name | Description |
---|---|
%{input} |
Total number of bytes read from the client |
%{output} |
Total number of bytes sent to the client |
imap_urlauth_port
Default | 143 |
---|---|
Value | Port Number |
See Also |
The port is used with the URLAUTH extension in IMAP operation.
imapc_cmd_timeout
Default | 5 mins |
---|---|
Value | time |
How long to wait for a reply to an IMAP command sent to the remote IMAP server before disconnecting and retrying.
imapc_connection_retry_count
Default | 1 |
---|---|
Value | unsigned integer |
How many times to retry connection against a remote IMAP server?
imapc_connection_retry_interval
Default | 1 secs |
---|---|
Value | time (milliseconds) |
How long to wait between retries against a remote IMAP server?
imapc_connection_timeout_interval
Default | 30secs |
---|---|
Value | time (milliseconds) |
How long to wait before considering a connection attempt as timed out.
imapc_features
Default | [None] |
---|---|
Value | Boolean List |
Changes |
|
List of features, optimizations, and workarounds that can be enabled.
no-acl
If the imap-acl plugin is loaded, the imapc acl feature is automatically enabled. With it IMAP ACL commands (MYRIGHTS, GETACL, SETACL, DELETEACL) are proxied to the imapc remote location. Note that currently these commands are attempted to be used even if the remote IMAP server doesn't advertise the ACL capability.
To disable this feature either unload the imap-acl plugin or provide this feature.
Changed: 3.0.0
Earlier versions had an "acl" feature, which is now enabled by default.
no-delay-login
Immediately connect to the remote server. By default this is delayed until a command requires a connection.
Changed: 3.0.0
Earlier versions had a "delay-login" feature, which is now enabled by default.
gmail-migration
X-GM-MSGID
as POP3 UIDL.
Add $GMailHaveLabels
keyword to mails that have X-GM-LABELS
except for Muted
keyword (to be used for migrating only archived
emails in All Mails
). Add pop3_deleted_flag
to
mails that don't exist in POP3 server.no-modseq
Disable access to MODSEQ
and HIGHESTMODSEQ
fields. By default
these fields are available if the remote server advertises the
CONDSTORE or the QRESYNC capability. If modseqs are disabled, or not
supported by the new server, they can still be used if imapc is
configured to have local index files.
Changed: 3.0.0
Earlier versions had a "modseq" feature, which is now enabled by default.
proxyauth
PROXYAUTH
command to do master
user authentication. Normally this would be done using the SASL PLAIN
authentication.throttle:<INIT>:<MAX>:<SHRINK>
When receiving [THROTTLED] response (from GMail), throttling is applied.
INIT = initial throttling msecs (default: 50 ms), afterwards each subsequent [THROTTLED] doubles the throttling until MAX is reached (default: 16000 ms). When [THROTTLED] is not received for a while, it's shrunk again. The initial shrinking is done after SHRINK (default: 500 ms). If [THROTTLED] is received again within this timeout, it's doubled, otherwise both throttling and the next shrinking timeout is shrank to 3/4 the previous value.
no-fetch-bodystructure
Disable fetching of IMAP BODY
and BODYSTRUCTURE
from the
remote server. Instead, the whole message body is fetched to
regenerate them.
Changed: 3.0.0
Earlier versions had a "fetch-bodystructure" feature, which is now enabled by default.
no-fetch-headers
Disable fetching of specific message headers from the remote server
using the IMAP FETCH BODY.PEEK[HEADER.FIELDS(...)]
command.
Instead, the whole header is fetched and the wanted headers are
parsed from it.
Changed: 3.0.0
Earlier versions had a "fetch-headers" feature, which is now enabled by default.
no-fetch-size
Disable fetching of message sizes from the remote server using the
IMAP FETCH RFC822.SIZE
command. Instead, the whole message body
is fetched to calculate the size.
Changed: 3.0.0
Earlier versions had a "rfc822.size" feature, which is now enabled by default.
no-metadata
METADATA
capability from the
remote server. The client will receive a NO [UNAVAILABLE]
response for any request that requires access to metadata on the
remote server (the same happens if the server does not announce
the capability at all).no-search
Disable searching messages using the IMAP SEARCH
command.
Instead, all the message headers/bodies are fetched to perform
the search locally.
Changed: 3.0.0
Earlier versions had a "search" feature, which is now enabled by default.
fetch-fix-broken-mails
If a FETCH
returns NO
(but not NO [LIMIT]
or NO [SERVERBUG]
), assume the mail is broken in server and just treat
it as if it were an empty email.
DANGER
This is often a dangerous option! It's not safe to assume that NO
means a permanent error rather than a temporary error. This feature
should be enabled only for specific users who have been determined
to be broken.
fetch-msn-workarounds
FETCH
replies
whenever possible, preferring to use the returned UID number instead.no-examine
SELECT
instead of EXAMINE
even when we don't want to
modify anything in the mailbox. This is a Courier-workaround where
it didn't permanently assign UIDVALIDITY
to an EXAMINE
d
mailbox, but assigned it for SELECT
ed mailbox.no-qresync
Added: 3.0.0zimbra-workarounds
BODY.PEEK[HEADER] BODY.PEEK[TEXT]
instead of just BODY.PEEK[]
because the header differs between
these two when there are illegal control chars or 8bit chars.
This mainly caused problems with dsync, but this should no longer
be a problem and there's probably no need to enable this workaround.imapc_host
Default | [None] |
---|---|
Value | string |
The remote IMAP host to connect to.
imapc_list_prefix
Default | [None] |
---|---|
Value | string |
Access only mailboxes under this prefix.
Example, for a source IMAP server that uses an INBOX namespace prefix:
imapc_list_prefix = INBOX
imapc_master_user
Default | [None] |
---|---|
Value | string |
See Also |
The master username to authenticate as on the remote IMAP host.
To authenticate as a master user but use a separate login user, the following configuration should be employed, where the credentials are represented by masteruser and masteruser-secret:
imapc_user = %{user}
imapc_master_user = masteruser
imapc_password = masteruser-secret
Mail user variables
can be used.
imapc_max_idle_time
Default | 29 mins |
---|---|
Value | time |
Send a command to the source IMAP server as a keepalive after no other command has been sent for this amount of time.
Dovecot will send either NOOP
or DONE
to the source IMAP server.
imapc_max_line_length
Default | unlimited |
---|---|
Value | size |
The maximum line length to accept from the remote IMAP server.
This setting is used to limit maximum memory usage.
imapc_password
Default | [None] |
---|---|
Value | string |
See Also |
The authentication password for the remote IMAP server.
If using master users, this setting will be the password of the master user.
imapc_port
Default | 143 |
---|---|
Value | Port Number |
The port on the remote IMAP host to connect to.
imapc_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Log all IMAP traffic input/output to this directory.
imapc_sasl_mechanisms
Default | plain |
---|---|
Value | Boolean List |
The SASL mechanisms to use for authentication when connection to a remote IMAP server.
The first one advertised by the remote IMAP sever is used.
imapc_sasl_mechanisms {
external = yes
plain = yes
login = yes
}
Supported mechanisms are:
Note that imapc_password
is ignored for ANONYMOUS
and EXTERNAL
mechanisms.
For OAUTHBEARER
and XOAUTH2
imapc_password
should be bearer token.
imapc_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no imaps starttls |
Use TLS to connect to the remote IMAP server.
Value | Description |
---|---|
no |
No TLS |
imaps |
Explicitly connect to remote IMAP port using TLS |
starttls |
Use IMAP STARTTLS command to switch to TLS connection |
imapc_ssl_verify
Default | yes |
---|---|
Value | boolean |
See Also | |
Changes |
|
Verify remote IMAP TLS certificate?
Verification may be disabled during testing, but should be enabled during production use.
Only used if imapc_ssl
is enabled.
imapc_user
Default | %{owner_user} |
---|---|
Value | string |
See Also |
The user identity to be used for performing a regular IMAP LOGIN to the source IMAP server.
Mail user variables
can be used.
imapsieve_expunge_discarded
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | imap-sieve plugin |
This setting determines whether de IMAPSieve plugin implicitly also expunges messages that were discarded by the executed Sieve script sequence; i.e., Sieve yielded no (implicit) keep.
imapsieve_from
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | imap-sieve plugin |
Only execute the administrator Sieve scripts for the mailbox configured
with sieve_script
and type before
or after when the message originates from the
indicated mailbox. The filter name refers to the imapsieve_from_name
setting. Therefore, the contained sieve_script
blocks only apply
when the source mailbox of the IMAP action match this filter.
imapsieve_from_name
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | imap-sieve plugin |
The name of the source mailbox for IMAPSieve
before or
after scripts. The imapsieve_from
filter refers to this setting.
imapsieve_url
Default | [None] |
---|---|
Value | URL |
See Also | |
Plugin | imap-sieve plugin |
If set, support for user Sieve scripts in IMAP is enabled.
The value is an URL pointing to the ManageSieve server that users must use to upload their Sieve scripts.
Leave this setting empty if you don't want users to have the ability to associate Sieve scripts with mailboxes.
This has no effect on the administrator-controlled Sieve scripts.
imapsieve_url = sieve://sieve.example.com
import_environment
Default |
TZ=%{env:TZ} CORE_OUTOFMEM=%{env:CORE_OUTOFMEM} CORE_ERROR=%{env:CORE_ERROR}
PATH=%{env:PATH} MALLOC_MMAP_THRESHOLD_=131072
|
---|---|
Value | String List |
A list of environment key=value pairs, that are preserved and passed to all child processes.
The value can be determined from the existing environment upon Dovecot startup or directly specified.
Example:
import_environment {
TZ = :/etc/localtime
TMPDIR = /dovecot-tmp
}
inet_listener
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new network socket listener for a service
. The filter
name refers to the inet_listener_name
setting.
inet_listener_address
Default | [None] |
---|---|
Value | IP addresses |
Overrides the listen
setting for this listener.
inet_listener_haproxy
Default | no |
---|---|
Value | boolean |
If yes
, this listener is configured for use with HAProxy. It expects a
Proxy Protocol header right after accepting the connection. Connections are
aborted immediately if this protocol is violated.
inet_listener_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of this listener. It is meant to be descriptive for humans (e.g. imap
,
imaps
), but it is also used by services to determine the socket type,
unless inet_listener_type
overrides it. The
inet_listener
filter name refers to this setting.
inet_listener_port
Default | [None] |
---|---|
Value | Port Number |
Port number where to listen. 0
disables the listener.
inet_listener_ssl
Default | no |
---|---|
Value | boolean |
See Also |
If yes
, the listener does an immediate SSL/TLS handshake after accepting a
connection. This is needed for e.g. the imaps
and pop3s
ports.
INFO
All listeners with ssl=yes
will be removed if the global ssl
setting is no
.
Regardless of the value for listener's ssl setting, some services will still
try to initialize encryption if the global ssl
is yes
. This is
for example done to accommodate STARTTLS commands for IMAP/SUBMISSION/LMTP
protocols. In other words, SSL is truly disabled only when the global
ssl
is no
.
inet_listener_type
Default | [None] |
---|---|
Value | string |
Changes |
|
Listener type. This string value has service-specific meaning and is used to distinguish different listener types that one service may employ.
info_log_path
Default | log_path |
---|---|
Value | string |
The log file to use for informational messages.
instance_name
Default | dovecot |
---|---|
Value | string |
For multi-instance setups, supply the unique name of this Dovecot instance.
This simplifies use of commands such as doveadm: rather than using -c
and the config path, you can use the -i
flag with the relevant instance
name.
intercept
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Enables the intercept driver. Only one intercept driver can be enabled. The
filter name refers to the intercept_driver
setting.
Example:
intercept utimaco {
# ...
}
Since an empty dict_driver
defaults to dict_name
, there
is no need to specify the dict_driver
setting explicitly.
intercept_box
Value | Named Filter |
---|---|
Plugin | intercept-box plugin |
Named filter for intercept-box settings.
intercept_box_add_headers
Default | [None] |
---|---|
Value | String List |
See Also | |
Plugin | intercept-box plugin |
Headers to add to HTTP requests, when intercept_box
is configured
with HTTP-based fs storage.
See intercept_box_path
for supported variable substitutions.
intercept_box_path
Default | [None] |
---|---|
Value | string |
Plugin | intercept-box plugin |
Path to save the mail intercepted via the intercept-box plugin.
For example:
intercept_box_path = %{crypted_user}/%{timestamp}.%{generate:guid128}.SMTP.%{type}.eml
Variable substitutions supported:
Variable | Description |
---|---|
user |
user@domain (based on the folder name) |
crypted_user |
user@domain encrypted via intercept_crypted_user |
timestamp |
timestamp (based on the folder name) |
type |
type (based on the folder name) |
Mail User Variables can also be used.
intercept_buffer_dir
Default | [None] |
---|---|
Value | string |
Path to temporary files creating intercepted data.
Needed only when intercept_buffer_max_size
> 0.
intercept_buffer_max_size
Default | 0 |
---|---|
Value | size |
Write intercept buffers larger than this into temporary files in
intercept_buffer_dir
.
If 0
, buffers are always kept in memory.
intercept_crypted_user
Default | [None] |
---|---|
Value | string |
Value for the %{crypted_user}
variable. The most secure way to generate
this is to generate a unique identifier for each intercept request's
intercept_id
and use that as the salt:
intercept_crypted_user = %{user | encrypt(key='secret',salt=userdb:intercept_id,raw=1)}
For backwards compatibility with old intercept_crypt_*
settings, use:
intercept_crypted_user = %{user | encrypt(hash='sha1',rounds=16,key='intercept_crypt_key',salt='intercept_crypt_key',algorithm='intercept_crypt_cipher',raw=1)}
intercept_debug
Default | no |
---|---|
Value | boolean |
Normally, the intercept plugins don't log much of anything, even in error situations, because we want to avoid making visible which users are being intercepted.
Set this value to true to output additional debugging information.
intercept_driver
Default | [None] |
---|---|
Value | string |
The intercept driver to use. Configure this via
the intercept_driver
setting instead.
intercept_fs
Value | Named Filter |
---|
Named filter for intercept FS driver settings.
intercept_fs_header_line
Default | [None] |
---|---|
Value | string |
Add a header to the log.
See variables for supported variable substitutions.
intercept_fs_rotate_at_midnight
Default | no |
---|---|
Value | boolean |
Rotate the log at midnight (server's local timezone).
intercept_fs_rotate_interval
Default | 5min |
---|---|
Value | time |
Flush log and create a new one this often.
intercept_fs_rotate_size
Default | [None] |
---|---|
Value | size |
Rotate the log when it reaches this size.
If 0
, never rotate.
intercept_id
Default | [None] |
---|---|
Value | string |
If set, intercept is activated for this user.
Additionally, this value is passed to the intercept-proxy as an intercept-ID in the interception session.
Note
This is intended to be set in a user's session by userdb lookup.
It is documented here for completion's sake.
Note
The login-intercept plugin uses passdb: Extra Fields instead of this value.
intercept_pine
Value | Named Filter |
---|
Named filter for intercept Pine driver settings.
intercept_pine_host
Default | [None] |
---|---|
Value | string |
PineApp server's hostname.
intercept_pine_port
Default | [None] |
---|---|
Value | Port Number |
PineApp server's port.
WARNING
This value must be set if using PineApp, or else Dovecot will not start.
intercept_tz
Default | <system time zone> |
---|---|
Value | string |
Allows choosing a time zone for the proxy that is different than the default system time zone. This is useful for some backends (Utimaco) that use timestamps without time zone field and expect a specific time zone.
The syntax is identical to the TZ environment variable.
intercept_utimaco
Value | Named Filter |
---|
Named filter for intercept Utimaco driver settings.
intercept_utimaco_x3_kafka_brokers
Default | [None] |
---|---|
Value | string |
A list of brokers that are used to establish an initial connection to the Kafka cluster. At least one is required when Kafka is used. It is not required to list all brokers in the cluster; the full list is established during protocol initialization.
Separate brokers with spaces, ,
or ;
in the setting.
intercept_utimaco_x3_kafka_consume_interval
Default | [None] |
---|---|
Value | time |
The maximum time a broker is requested to wait before responding to a consumer. If there are no messages queued, the broker will respond with an empty list of messages. Use this to keep the connection with the broker active.
intercept_utimaco_x3_kafka_topic
Default | [None] |
---|---|
Value | string |
The name of the Kafka topic the event messages are submitted to. This setting determines whether kafka is used; if this is not configured, the system will attempt direct submission to the X3 endpoint through HTTP.
intercept_utimaco_x3_url
Default | [None] |
---|---|
Value | URL |
The HTTP URL of the Utimaco X3 receiver.
language
Default | <textcat dir> |
---|---|
Value | Named List Filter |
Dependencies | |
See Also | |
Plugin | fts plugin |
Defines a language to be used in tokenization.
At least one language must be specified and one single language must be flagged
as the default language using language_default = yes
.
The language listed first is the default and is used when language recognition fails.
The filters used for stemming and stopwords are language dependent.
TIP
For better performance it's recommended to synchronize this setting with the
textcat configuration file; see textcat_config_path
.
Example:
language en {
default = yes
}
language de {
}
language_default
Default | no |
---|---|
Value | boolean |
Dependencies | |
See Also | |
Plugin | fts plugin |
The language marked as default will be used when language detection cannot identify the proper language of the text being processed.
Exactly one language must be marked with this flag.
language_filter_normalizer_icu_id
Default | Any-Lower; NFKD; [: Nonspacing Mark :] Remove; [\x20] Remove |
---|---|
Value | string |
Plugin | fts plugin |
Description of the normalizing/transliterating rules to use.
See Normalizer Format for syntax.
language_filter_stopwords_dir
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | fts plugin |
Path to the directory containing stopword files. The files inside the directory
have names with the form /stopwords_<lang>.txt
.
See Languages for the list of stopword files that are currently distributed with Dovecot.
More languages can be obtained from:
language_filters
Default | [None] |
---|---|
Value | Boolean List |
See Also | |
Plugin | fts plugin |
The list of filters to apply.
See Filter Configuration for configuration information.
language_tokenizer_address_token_maxlen
Default | 250 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | fts plugin |
Maximum length of token, before an arbitrary cut off is made.
language_tokenizer_generic_algorithm
Default | simple |
---|---|
Value | string |
Allowed Values | simple tr29 |
See Also | |
Plugin | fts plugin |
Defines the method for finding word boundaries.
Value | Description |
---|---|
simple |
Faster algorithm that works for many texts, especially using the latin alphabets, but leaves corner cases. |
tr29 |
Implements a version of Unicode technical report 29 word boundary lookup. It might work better with texts containing e.g. Katakana or Hebrew characters, but it is not possible to use a single algorithm for all existing languages. |
language_tokenizer_generic_token_maxlen
Default | 30 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | fts plugin |
Maximum length of token, before an arbitrary cut off is made.
language_tokenizer_generic_wb5a
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | fts plugin |
Unicode TR29 rule WB5a setting to the tr29 tokenizer. Splits prefixing
contracted words from base word. E.g. l'homme
-> l
and homme
.
Together with a language specific stopword list unnecessary contractions can
thus be filtered away. This is disabled by default and only works with the TR29
algorithm.
Enable by declaring:
language_tokenizer_kuromoji_icu_id
Default | Any-NFKC |
---|---|
Value | string |
See Also | |
Plugin | fts plugin |
Description of the normalizing/transliterating rules to use. See Normalizer Format for syntax.
Defaults to Any-NFKC
which is quite good for CJK text mixed with latin
alphabet languages. It transforms CJK characters to full-width encoding and
transforms latin ones to half-width. The NFKC transformation is described
above.
WARNING
If this setting is changed, existing FTS indexes will produce unexpected results. The FTS indexes should be recreated in this case.
language_tokenizer_kuromoji_token_maxlen
Default | 1024 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | fts plugin |
Maximum length of token, before an arbitrary cut off is made.
language_tokenizers
Default | generic email-address |
---|---|
Value | Boolean List |
See Also | |
Plugin | fts plugin |
The list of tokenizers to use.
See Tokenizer Configuration for configuration information.
last_login
Value | Named Filter |
---|---|
Plugin | last-login plugin |
Named filter for initializing dictionary used to store last login information.
Example:
redis_host = 127.0.0.1
redis_port = 6379
last_login {
dict redis {
}
}
last_login_key
Default | last-login/%{user} |
---|---|
Value | string |
Plugin | last-login plugin |
The key that is updated in the dictionary with the last login information.
last_login_precision
Default | s |
---|---|
Value | string |
Allowed Values | s ms us ns |
Plugin | last-login plugin |
Precision for last login timestamp.
last_valid_gid
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
This setting and first_valid_gid
specify the valid GID
range for users.
A user whose primary GID is outside this range is not allowed to log in.
0
means there is no explicit last GID.
If the user belongs to any supplementary groups, the corresponding IDs are not set.
last_valid_uid
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
This setting and first_valid_uid
specify the valid UID
range for users.
0
means there is no explicit last UID.
A user whose UID is outside this range is not allowed to log in.
lazy_expunge_mailbox
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | lazy-expunge plugin |
The mailbox to move messages to when expunged. This setting MUST be defined or else lazy-expunge plugin will not be active.
lazy_expunge_mailbox = .EXPUNGED
namespace inbox {
mailbox Drafts {
lazy_expunge_mailbox =
}
namespace "External accounts" {
lazy_expunge_mailbox =
}
}
lazy_expunge_only_last_instance
Default | no |
---|---|
Value | boolean |
Plugin | lazy-expunge plugin |
If yes
, only move to expunged storage if this is the last copy of the
message in the user's account. This prevents the same mail from being
duplicated in the lazy-expunge folder as the mail becomes expunged from
all the folders it existed in.
This setting prevents copying mail to the lazy-expunge folder when using the IMAP MOVE command. When using COPY/EXPUNGE, this setting prevents duplicates only with the following mailbox formats:
maildir_copy_with_hardlinks = yes
, which is
the default)lda_mailbox_autocreate
Default | no |
---|---|
Value | boolean |
Should LDA create a nonexistent mailbox automatically when attempting to save a mail message?
lda_mailbox_autosubscribe
Default | no |
---|---|
Value | boolean |
Should automatically created mailboxes be subscribed to?
lda_original_recipient_header
Default | <lda/lmtp specific> |
---|---|
Value | string |
The header from which the original recipient address (used in the SMTP RCPT TO: address) is obtained if that address is not available elsewhere.
With LDA the default is based on the username in -d
parameter.
With LMTP Server the default is the same as RCPT TO.
Example:
lda_original_recipient_header = X-Original-To
ldap_auth_dn
Default | [None] |
---|---|
Value | string |
Specify the Distinguished Name (the username used to login to the LDAP server).
Leave it commented out to bind anonymously (useful with passdb_ldap_bind = yes
).
Example: ldap_auth_dn = uid=dov-read,dc=example,dc=com,dc=.
ldap_auth_dn_password
Default | [None] |
---|---|
Value | string |
Password for LDAP server. Used if ldap_auth_dn
is specified.
ldap_auth_sasl_authz_id
Default | [None] |
---|---|
Value | string |
SASL authorization ID, ie. the ldap_auth_dn_password
is for this "master user", but the
ldap_auth_dn
is still the logged in user. Normally you want to keep this empty.
ldap_auth_sasl_mechanisms
Default | [None] |
---|---|
Value | Boolean List |
List of SASL mechanism names to use.
ldap_auth_sasl_realm
Default | [None] |
---|---|
Value | string |
SASL realm to use.
ldap_base
Default | [None] |
---|---|
Value | string |
ldap_connection_group
Default | [None] |
---|---|
Value | string |
Only databases with the same connection group share the ldap connections.
By default all the databases have the same ""
(empty string) default connection group,
and as such share the connections.
ldap_debug_level
Default | [None] |
---|---|
Value | unsigned integer |
LDAP library debug level as specified by LDAP_DEBUG_*
in ldap_log.h
.
Value -1
means everything.
You may need to recompile OpenLDAP with debugging enabled to get enough output.
ldap_deref
Default | never |
---|---|
Value | string |
Allowed Values | never searching finding always |
Specify dereference which is set as an LDAP option.
ldap_max_idle_time
Default | [None] |
---|---|
Value | time |
Disconnect from LDAP server after connection has been idle for this many seconds.
ldap_scope
Default | subtree |
---|---|
Value | string |
Allowed Values | base onelevel subtree |
This specifies the search scope.
ldap_starttls
Default | no |
---|---|
Value | boolean |
Set to yes
to use TLS to connect to the LDAP server.
ldap_uris
Default | [None] |
---|---|
Value | string |
LDAP URIs to use.
Configure this setting to specify what LDAP server(s) to connect to.
The URIs are in syntax protocol://host:port
.
Example: ldap_uris = ldaps://secure.domain.org
ldap_version
Default | 3 |
---|---|
Value | unsigned integer |
LDAP protocol version to use. Likely 2
or 3
.
listen
Default | *, :: |
---|---|
Value | IP addresses |
A comma-separated list of IP addresses or hostnames on which external network connections will be handled.
*
listens at all IPv4 interfaces, and ::
listens at all IPv6
interfaces.
Example:
listen = 127.0.0.1, 192.168.0.1
lmtp_add_received_header
Default | yes |
---|---|
Value | boolean |
Controls if "Received:" header should be added to delivered mails.
lmtp_client_workarounds
Default | [None] |
---|---|
Value | Boolean List |
Configures the list of active workarounds for LMTP client bugs. Supported workaround identifiers are:
whitespace-before-path
mailbox-for-path
lmtp_hdr_delivery_address
Default | final |
---|---|
Value | string |
Allowed Values | alternative final none |
The recipient address to use for the "Delivered-To:" header and the relevant "Received:" header.
Options:
alternative
final
none
lmtp_proxy
Default | no |
---|---|
Value | boolean |
See Also |
If yes, LMTP sessions perform a passdb lookup to see if the user should be
proxied. The user is proxied only if the proxy
extra field is returned.
The proxy destination is determined via returned passdb extra fields.
This setting is required with Palomar cluster configuration even in backends, because the backend may still ask proxy to reject the connection and proxy the user to another backend.
lmtp_proxy_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Directory location to store raw LMTP proxy protocol traffic logs.
Mail service user variables
can be used. However, because LMTP session
starts without a user, all user-specific variables expand to empty.
lmtp_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Directory location to store raw LMTP protocol traffic logs.
Mail service user variables
can be used. However, because LMTP session
starts without a user, all user-specific variables expand to empty.
lmtp_rcpt_check_quota
Default | no |
---|---|
Value | boolean |
Should quota be verified before a reply to RCPT TO is issued?
If active, this creates a small amount of extra overhead so it is disabled by default.
lmtp_save_to_detail_mailbox
Default | no |
---|---|
Value | boolean |
If the recipient address includes a detail element / role (as in user+detail format), save the message to the detail mailbox.
lmtp_user_concurrency_limit
Default | [None] |
---|---|
Value | unsigned integer |
Limit the number of concurrent deliveries to a single user to this maximum value.
It is useful if one user is receiving numerous mail messages and thereby causing delays to other deliveries.
lock_method
Default | fcntl |
---|---|
Value | string |
Allowed Values | fcntl flock dotlock |
Specify the locking method to use for index files.
Options:
dotlock
mailboxname.lock
file created by almost all software when writing to
mboxes. This grants the writer an exclusive lock over the mbox, so it's
usually not used while reading the mbox so that other processes can also
read it at the same time. So while using a dotlock typically prevents
actual mailbox corruption, it doesn't protect against read errors if
mailbox is modified while a process is reading.flock
fcntl
log_core_filter
Default | [None] |
---|---|
Value | string |
Crash after logging a matching event. The syntax of the filter is described in Global Metric Filters.
For example:
log_core_filter = category=error
will crash any time an error is logged, which can be useful for debugging.
log_debug
Default | [None] |
---|---|
Value | string |
Filter to specify what debug logging to enable. The syntax of the filter is described in Global Metric Filters.
INFO
This will eventually replace mail_debug
and
auth_debug
settings.
log_path
Default | syslog |
---|---|
Value | string |
See Also |
Specify the log file to use for error messages.
Options:
syslog
: Log to syslog/dev/stderr
: Log to stderrIf you don't want to use syslog, or if you just can't find the Dovecot's error logs, you can make Dovecot log elsewhere as well:
log_path = /var/log/dovecot.log
If you don't want errors, info, and debug logs all in one file, specify
info_log_path
or debug_log_path
as well:
log_path = /var/log/dovecot.log
info_log_path = /var/log/dovecot-info.log
log_timestamp
Default | %b %d %H:%M:%S |
---|---|
Value | String without variables |
The prefix for each line written to the log file.
%
variables are in strftime(3) format.
login_log_format
Default | %{message}: %{elements} |
---|---|
Value | String without variables |
The formatting of login log messages.
Variables allowed (in addition to Global variables
):
Variable Name | Description |
---|---|
%{elements} |
A login_log_format_elements string |
%{message} |
The log data |
login_log_format_elements
Default | user=<%{user}> method=%{mechanism} rip=%{remote_ip} lip=%{local_ip} mpid=%{mail_pid} %{secured} session=<%{session}> |
---|---|
Value | String without variables |
A space-separated list of elements of the login log formatting.
Elements that have a non-empty value are joined together to form a comma-separated string.
Login variables
can be used.
login_plugin_dir
Default | /usr/lib64/dovecot/login |
---|---|
Value | string |
Location of the login plugin directory.
login_plugins
Default | [None] |
---|---|
Value | Boolean List |
List of plugins to load for IMAP and POP3 login processes.
login_proxy_max_disconnect_delay
Default | 30 secs |
---|---|
Value | unsigned integer |
Specify the delayed disconnection interval of clients when there is a server mass-disconnect.
For prevention of load spikes when a backend server fails or is restarted, disconnection is spread over the amount of time indicated.
0
disables the delay.
login_proxy_max_reconnects
Default | 3 |
---|---|
Value | unsigned integer |
How many times login proxy will attempt to reconnect to destination server on connection failures (3 reconnects = total 4 connection attempts).
Reconnecting is done for most types of failures, except for regular authentication failures.
There is a 1 second delay between each reconnection attempt.
If login_proxy_timeout
is reached, further reconnects
aren't attempted.
login_proxy_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Login processes write rawlogs for proxied connections to this directory for
debugging purposes. Note that login processes are usually chrooted, so the
directory is relative to $base_dir/login/
.
login_proxy_timeout
Default | 30 secs |
---|---|
Value | time (milliseconds) |
Timeout for login proxy failures.
The timeout covers everything from the time connection is started until a successful login reply is received.
This can be overwritten by proxy passdb passdb extra field.
This setting applies only to proxying via login processes, not to lmtp or doveadm processes.
login_socket_path
Default | [None] |
---|---|
Value | string |
Changes |
|
Default socket path for all services' login processes. Can be overridden by passing a parameter to the login executable.
This must be set to cluster
in Palomar cluster configurations, for
both proxies and backends.
login_source_ips
Default | [None] |
---|---|
Value | IP addresses |
Value Format: List of trusted network ranges, see Boolean List.
A list of hosts / IP addresses that are used in a round-robin manner for the source IP address when the proxy creates TCP connections.
Example:
login_source_ips {
proxy-sources.example.com = yes
}
login_trusted_networks
Default | [None] |
---|---|
Value | IP addresses |
Value Format: List of trusted network ranges, see Boolean List.
This setting is used for a few different purposes, but most importantly it allows the client connection to tell the server what the original client's IP address was. This original client IP address is then used for logging and authentication checks.
Client connections from trusted networks are also treated as secured unless
ssl = required
. Plaintext authentication is always allowed for
secured connections (auth_allow_cleartext
is ignored).
Localhost connections are secured by default, but they are not trusted by default. If you want localhost to be trusted, it needs to be included in this setting.
The details of how this setting works depends on the used protocol:
ID command can be used to override:
%{remote_ip}
, %{remote_port}
)%{local_ip}
, %{local_port}
)forward_*
fields can be sent to auth process's passdb lookup
The trust is always checked against the connecting IP address. Except if HAProxy is used, then the original client IP address is used.
XCLIENT command can be used to override:
%{remote_ip}
, %{remote_port}
)forward_*
fields can be sent to auth process's passdb lookup
The trust is always checked against the connecting IP address. Except if HAProxy is used, then the original client IP address is used.
XCLIENT command can be used to override:
%{remote_ip}
, %{remote_port}
)The trust is always checked against the connecting IP address. Except if HAProxy is used, then the original client IP address is used.
XCLIENT command can be used to override:
%{remote_ip}
, %{remote_port}
)forward_*
fields can be sent to auth process's passdb lookup
The trust is always checked against the connecting IP address. Except if HAProxy is used, then the original client IP address is used.
XCLIENT command can be used to override:
%{remote_ip}
, %{remote_port}
)mail_max_lock_timeout
)The trust is always checked against the connecting IP address. Except if HAProxy is used, then the original client IP address is used.
lua_file
Default | [None] |
---|---|
Value | File |
See Also |
Path to lua script to be used. This is used by
lua_settings
Default | [None] |
---|---|
Value | String List |
See Also |
Key-value pairs that are passed as a table to lua script_init()
functions.
mail_access_groups
Default | [None] |
---|---|
Value | Boolean List |
Supplementary groups that are granted access for mail processes.
Typically, these are used to set up access to shared mailboxes.
WARNING
It may be dangerous to set these up if users can create symlinks.
Examples for if the "mail" group is chosen here:
ln -s /var/mail ~/mail/var
could allow a user to delete others'
mailboxes, orln -s /secret/shared/box ~/mail/mybox
would allow reading others' mail.mail_alt_check
Default | yes |
---|---|
Value | boolean |
See Also |
Whether to perform a sanity check and warn if mail_alt_path
changes
from the last access. This can catch accidentally broken configurations before
users start reporting missing mails. The downside to this check is some
additional disk IO.
mail_alt_path
Default | [None] |
---|---|
Value | string |
See Also |
Specifies the dbox alternate storage path.
mail_always_cache_fields
Default |
flags hdr.date hdr.subject hdr.from hdr.sender hdr.reply-to hdr.to hdr.cc hdr.bcc hdr.in-reply-to hdr.message-id date.received size.virtual imap.bodystructure mime.parts hdr.references hdr.importance hdr.x-priority hdr.x-open-xchange-share-url pop3.uidl pop3.order
|
---|---|
Value | Boolean List |
See Also |
The fields specified here are always added to cache when saving mails, even if the client never accesses these fields.
See mail cache configuration for details and for the list of fields.
mail_attachment_detection_options
Default | [None] |
---|---|
Value | Boolean List |
Settings to control adding $HasAttachment
or $HasNoAttachment
keywords. By default, all MIME parts with Content-Disposition=attachment
or inlines with filename parameter are considered attachments.
To enable this feature, this setting needs at least one option specified. Multiple options can be added in a space-separated list.
Options:
add-flags
mime.parts
and
imap.bodystructure
has to be in cache already, or if mail body is
opened in any case.add-flags no-flags-on-fetch
content-type=<type|!type>
content-type=!foo/* content-type=foo/bar
).exclude-inlined
mail_attribute
Value | Named Filter |
---|---|
See Also |
Named filter for initializing dict driver for server and mailbox
attributes (key=value
).
This is used by the URLAUTH and METADATA extensions, as well as various other features.
Example:
mail_attribute {
dict file {
path = %{home}/dovecot-attributes
}
}
mail_cache_fields
Default |
flags hdr.date hdr.subject hdr.from hdr.sender hdr.reply-to hdr.to hdr.cc hdr.bcc hdr.in-reply-to hdr.message-id date.received size.virtual imap.bodystructure mime.parts hdr.references hdr.importance hdr.x-priority hdr.x-open-xchange-share-url pop3.uidl pop3.order
|
---|---|
Value | Boolean List |
See Also |
The default list of fields that are added to cache if no other caching decisions exist yet. This setting is used only when creating the initial INBOX for the user. Other folders get their defaults from the INBOX.
See mail cache configuration for details and for the list of fields.
mail_cache_path
Default | <same as mail_index_path setting> |
---|---|
Value | string |
Place dovecot.index.cache
files to this directory instead of among the
other index files. This may be used as an optimization to split most index
files to the fastest (smallest) storage while keeping cache files in a slightly
slower (larger) storage.
mail_chroot
Default | [None] |
---|---|
Value | string |
The default chroot directory for mail processes.
This chroots all users globally into the same directory.
Mail service user variables
can be used.
mail_compress_write_method
Default | [None] |
---|---|
Value | string |
Plugin | mail-compress plugin |
The Compression Method to use for writing new mails. If empty, new mails are written without compression. Old mails can still be read.
mail_control_path
Default | [None] |
---|---|
Value | string |
Location for (mailbox-format specific) control files.
mail_debug
Default | no |
---|---|
Value | boolean |
This setting adjusts log verbosity. It enables mail-process debugging. This can help you figure out the reason if Dovecot isn't finding certain mail messages.
mail_driver
Default | [None] |
---|---|
Value | string |
See Also |
One of the mailbox formats described at Mailbox Formats.
For an empty value or auto
, Dovecot attempts to find the mailboxes
automatically.
mail_ext_attachment
Value | Named Filter |
---|---|
See Also |
Named filter for initializing FS Driver for external attachments.
Commonly used options:
posix
No single-instance storage (SIS) done (this option might simplify the filesystem's own de-duplication operations).
sis
SIS with immediate byte-by-byte comparison during saving.
SIS is deprecated and writing of SIS files is disabled. Reading is supported for now, any missing SIS attachments are replaced with files filled with spaces.
sis-queue
SIS with delayed comparison and de-duplication.
Changed: 3.1.0 SIS is deprecated and writing SIS files is disabled. Reading is supported for now. Any missing SIS attachments are replaced with files filled with spaces.
mail_ext_attachment_min_size
Default | 128k |
---|---|
Value | size |
See Also |
Attachments below this size will not be saved externally.
mail_ext_attachment_path
Default | [None] |
---|---|
Value | string |
The directory in which to store mail attachments.
With sdbox and mdbox, mail attachments can be saved to external files, which also allows single-instance storage of them.
If no value is specified, attachment saving to external files is disabled.
Mail user variables
can be used.
mail_fsync
Default | optimized |
---|---|
Value | string |
Allowed Values | always optimized never |
Specify when to use fsync() or fdatasync() calls.
Using fsync waits until the data is written to disk before it continues, which is used to prevent corruption or data loss in case of server crashes.
This setting applies to mail files and index files on the filesystem. This setting doesn't apply to object storage operations.
Options:
always
Use fsync after all disk writes.
Recommended for NFS to make sure there aren't any delayed write()s.
optimized
Use fsync after important disk writes.
For example cache file writes aren't fsynced, because they can be regenerated if necessary.
never
Never fsync any disk writes.
This provides the best performance, but risks losing recently saved emails in case of a crash with most mailbox formats.
mail_gid
Default | vmail |
---|---|
Value | stringunsigned integer |
See Also |
The system group ID used for accessing mail messages.
Can be either a numeric ID or a group name.
This can be overridden via the gid
userdb field.
mail_home
Default | [None] |
---|---|
Value | string |
See Also |
There are various possible ways of specifying this parameter and
mail_path
.
The following example is one option when home is in /var/vmail/domain/user/
and mails are in /var/vmail/domain/user/mail/
:
mail_home = /var/vmail/%{user | domain}/%{user | username}
mail_path = ~/mail
Mail service user variables
can be used.
mail_inbox_path
Default | [None] |
---|---|
Value | string |
See Also |
Path to the INBOX mailbox. The path doesn't have to be absolute - it is
relative to the mail_path
.
This is often used with mbox format where INBOX is in /var/mail/
while the
rest of the folders are under the user's home directory.
This can also be used to specify a different INBOX path with Maildir:
mail_driver = maildir
mail_path = ~/Maildir
mail_inbox_path = ~/Maildir/.INBOX
mail_index_path
Default | <same as mail_path setting> |
---|---|
Value | string |
See Also |
Location of index files.
mail_index_private_path
Default | [None] |
---|---|
Value | string |
See Also |
The private index files are used with shared mailboxes to provide private (per-user) message flags.
mail_log_cached_only
Default | no |
---|---|
Value | boolean |
Plugin | mail-log plugin |
If enabled, everything except save
event will log only the fields that
can be looked up from cache. This improves performance if some of the
fields aren't cached and it's not a strict requirement to log them.
mail_log_events
Default | [None] |
---|---|
Value | Boolean List |
Plugin | mail-log plugin |
List of events to log.
Available events:
delete
undelete
expunge
save
copy
mailbox_create
mailbox_delete
mailbox_rename
flag_change
mail_log_fields
Default | [None] |
---|---|
Value | Boolean List |
Plugin | mail-log plugin |
List of fields to log.
Field | Restrictions |
---|---|
uid |
|
box |
|
msgid |
|
size |
Only available for expunge and copy events. |
vsize |
Only available for expunge and copy events. |
vsize |
|
flags |
|
from |
|
subject |
mail_log_prefix
Default | %{service}(%{user})<%{process:pid}><%{session}>: |
---|---|
Value | string |
You can specify a log prefix for mail processes here.
Mail service user variables
can be used.
mail_lua
Value | Named Filter |
---|---|
See Also | |
Plugin | mail-lua plugin |
Changes |
|
Named filter for initializing mail_lua plugin settings.
Example:
mail_lua {
lua_file = /etc/dovecot/user.lua
lua_settings {
extra_param = %{userdb:extra_param}
}
}
mail_max_lock_timeout
Default | 0 |
---|---|
Value | time |
This value is used as a timeout for tempfailing mail connections. It
can be set globally, for application to all Dovecot services, but
is normally better to set it in only certain protocol blocks. You
may wish to set a value for this for LMTP and LDA while leaving it at
the global default of 0
for IMAP and POP3 connections, which
tolerate tempfailing less well.
mail_max_userip_connections
Default | 10 |
---|---|
Value | unsigned integer |
The maximum number of IMAP connections allowed for a user from each IP address.
This setting is checked only by backends, not proxies.
Note that for this to work, any username changes must be done already by passdb lookup (not by userdb lookup).
Unique users are identified via case-sensitive comparison.
mail_never_cache_fields
Default | imap.envelope |
---|---|
Value | Boolean List |
See Also |
List of fields that should never be cached.
This should generally never include anything other than imap.envelope
,
which isn't needed because it can be generated from the cached header
fields.
See mail cache configuration for details and for the list of fields.
mail_nfs_index
Default | no |
---|---|
Value | boolean |
See Also |
When mail-index files exist in NFS storage and you're running a
multi-server setup that you wish to flush NFS caches, this can be set
to yes
(in this case, make sure also to use mmap_disable = yes
and mail_fsync = optimized
).
mail_nfs_storage
Default | no |
---|---|
Value | boolean |
Flush NFS caches whenever it is necessary to do so.
This setting should only be enabled if you are using multiple servers on NFS.
mail_path
Default | <specific to mail_driver setting> |
---|---|
Value | string |
See Also |
Path to a directory where the mail is stored. Mail User Variables are commonly used here.
Usually the mails should be stored in a sub-directory under the home directory, but not the home directory itself (see Home Directories for Virtual Users).
The path must be absolute, not a relative path. Even if relative paths appear to work, this usage is deprecated and will likely stop working at some point.
mail_plugin_dir
Default | /usr/lib64/dovecot |
---|---|
Value | string |
See Also |
The directory in which to search for Dovecot mail plugins.
mail_plugins
Default | [None] |
---|---|
Value | Boolean List |
See Also |
A list of mail plugins to load.
mail_prefetch_count
Default | 10 for obox; 0 for others |
---|---|
Value | unsigned integer |
The number of messages to try to prefetch whenever possible. 0
means that
no prefetching is done. Depending on the (remote) storage latency, this may
significantly speed up performance when reading many mails. The exact behavior
depends on the mailbox format:
sdbox, Maildir: Call
posix_fadvise(POSIX_FADV_WILLNEED)
on mail files to instruct kernel to
read the whole files into memory.
imapc: Combine multiple mail reads into the same remote imapc FETCH
command. For example with mail_prefetch_count = 0
reading two mails
would result in FETCH 1 BODY.PEEK[]
and FETCH 2 BODY.PEEK[]
commands, while with mail_prefetch_count = 1
they would be
combined into a single FETCH 1:2 BODY.PEEK[]
command. The downside is
that each mail uses a file descriptor and disk space in
mail_temp_dir
. A good value is likely between 10..100
.
obox: Number of mails to download concurrently from object storage.
mail_privileged_group
Default | [None] |
---|---|
Value | string |
This group is enabled temporarily for privileged operations. Currently, this is used only with the INBOX when either its initial creation or dotlocking fails.
Typically, this is set to mail
to give access to /var/mail
.
You can give Dovecot access to mail group by setting
mail_privileged_group = mail
.
mail_server_admin
Default | [None] |
---|---|
Value | string |
See Also |
The method for contacting the server administrator.
Per the METADATA standard (RFC 5464), this value MUST be a URI (e.g., a mailto: or tel: URL), but that requirement is not enforced by Dovecot.
This value is accessible to authenticated users through the
/shared/admin
IMAP METADATA server entry.
Example:
mail_server_admin = mailto:admin@example.com
mail_server_comment
Default | [None] |
---|---|
Value | string |
See Also |
A comment or note that is associated with the server.
This value is accessible to authenticated users through the
/shared/comment
IMAP METADATA server entry.
mail_shared_explicit_inbox
Default | no |
---|---|
Value | boolean |
This setting determines whether a shared INBOX should be visible as "shared/user" or as "shared/user/INBOX" instead.
mail_sort_max_read_count
Default | 100 for obox; 0 for others |
---|---|
Value | unsigned integer |
The number of slow mail accesses an IMAP SORT can perform before it returns failure to the client.
On failure, the untagged SORT reply is retuned, but it is likely not correct.
The IMAP reply returned to the client is:
NO [LIMIT] Requested sort would have taken too long.
mail_temp_dir
Default | /dev/shm/dovecot |
---|---|
Value | string |
The directory in which LDA/LMTP will temporarily store incoming message data that is above 128kB in size.
Mail user variables
can be used.
mail_temp_scan_interval
Default | 1week |
---|---|
Value | time |
How often Dovecot scans for and deletes stale temporary files. These files exist only if Dovecot crashes while saving a message. This is just to make sure such temporary files will eventually get deleted to avoid wasting disk space. This scan happens independently for each folder, and it's done at the time the folder is opened.
In order to prevent load spikes, the actual value of the setting is spread increasing it by 0..30%, based on a hash of the username.
The scanning is done only for these mailbox formats:
tmp/
. The scan is done if tmp/ directory's atime older than this setting..temp.*
files having ctime older
than 36 hours from dbox-Mails/
. The scan is done if the
last_temp_file_scan
header field in dovecot.index is older than this
setting..temp.*
files having ctime older than 36 hours
from storage/
. The scan is done if storage/ directory's atime is older
than this setting.A value of 0
means this scan never occurs.
mail_uid
Default | vmail |
---|---|
Value | stringunsigned integer |
See Also |
This setting indicates the system userid used for accessing mail messages.
Can be either a numeric ID or a username.
This can be overridden via the uid
userdb field.
mail_utf8_extensions
Default | no |
---|---|
Value | boolean |
If Dovecot has been compiled with --enable-experimental-mail-utf8 configure option,
this setting can be used to enable the feature. Settings this to yes
will
enable SMTPUTF8 for LMTP and Submission sessions, and UTF8=ACCEPT for IMAP sessions.
mail_volatile_path
Default | [None] |
---|---|
Value | string |
Specifies the location of volatile files. This includes lock files and
potentially other files that don't need to exist permanently, so it can point
to an in-memory filesystem (tmpfs
). This is especially useful to avoid
creating lock files to NFS or other remote filesystems.
mail_vsize_bg_after_count
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Controls transitioning mail size determination to the background instead of synchronously during the delivery process.
After this many messages have been opened, the system allows a background indexer-worker process to perform quota calculations in the background.
This may happen when mail messages do not have their virtual sizes cached.
When indexing is occurring in the background, explicit quota size queries return an internal error and mail deliveries are assumed to succeed.
This setting must not be set to indexer-worker process, or the background calculation isn't finished. The configuration should be like:
protocol !indexer-worker {
mail_vsize_bg_after_count = 10
}
mailbox
Default | [None] |
---|---|
Value | Named List Filter |
Create a new mailbox to the list of mailboxes. The filter name refers to the
mailbox_name
setting.
The mailbox name can contain ?
and *
wildcards. Settings are applied
for all matching mailbox filters.
TIP
If the mailbox name has spaces, you can put it into quotes:
mailbox "Test Mailbox" {
# ...
}
TIP
It's possible to rename the mailbox in userdb. For example:
mailbox junk {
name = Junk
special_use = \Junk
}
The userdb can then return mailbox/junk/name=Spam
to rename the mailbox
for a specific user.
mailbox_auto
Default | no |
---|---|
Value | string |
Allowed Values | create no subscribe |
Autocreate and/or subscribe to the mailbox?
Value | Description |
---|---|
create |
Autocreate but don't autosubscribe |
no |
Don't autocreate or autosubscribe |
subscribe |
Autocreate and autosubscribe |
Autocreated mailboxes are created lazily to disk only when accessed for the first time. The autosubscribed mailboxes aren't written to subscriptions file, unless SUBSCRIBE command is explicitly used for them.
mailbox_autoexpunge
Default | [None] |
---|---|
Value | time |
See Also |
Expunge all mails in this mailbox whose saved-timestamp is older than this value.
For IMAP and POP3 this happens after the client is already disconnected.
For LMTP this happens when the user's mail delivery is finished. Note that in case there are multiple recipients, autoexpunging is done only for some of the recipients to prevent delays with the mail delivery: The last recipient user is autoexpunged first. Next, the first recipient user is autoexpunged (because the first user's mail was kept open in case it could be directly copied to the other users). None of the middle recipient users are autoexpunged.
mailbox_list_index = yes
is highly recommended when
using this setting, as it avoids actually opening the mailbox to see if
anything needs to be expunged.
mail_always_cache_fields = date.save
is also
recommended when using this setting with sdbox or Maildir,
as it avoids using stat()
to find out the mail's saved-timestamp. With
mdbox format this isn't necessary, since the saved-timestamp is
always available.
mailbox_autoexpunge_max_mails
Default | [None] |
---|---|
Value | unsigned integer |
Mails are autoexpunged until mail count is at or below this number of messages.
Once this threshold has been reached, mailbox_autoexpunge
processing is done.
mailbox_directory_name
Default | <specific to mail_driver setting> |
---|---|
Value | string |
See Also |
Specifies the directory name used for mailbox, index, and control directory
paths. See the individual mailbox format pages for further information. For
example dbox-Mails
with dbox.
With mbox format this works differently. The user-provided mailbox name is the
directory name, while mailbox_directory_name
is the mbox file. For example
with mailbox_directory_name=mbox
, creating foo/bar
mailbox name ends up
creating .../foo/bar/mbox
file.
mailbox_directory_name_legacy
Default | no |
---|---|
Value | boolean |
See Also |
If no
, mailbox_directory_name
applies also to index and control
directories. The only reason to set this to yes
is if you already have an
existing Dovecot installation with the legacy DIRNAME
(rather than
FULLDIRNAME
) parameter and don't want to migrate the data.
mailbox_list_drop_noselect
Default | yes |
---|---|
Value | boolean |
Specifies whether to automatically delete NoSelect
mailboxes that have no
children. These mailboxes are sometimes confusing to users. Also if a
NoSelect
mailbox is attempted to be created with CREATE box/
, it's
created as selectable mailbox instead.
INFO
Maildir layout does not support NoSelect
mailboxes, so this
setting has no effect with it.
mailbox_list_index
Default | yes |
---|---|
Value | boolean |
Dovecot indexes live at the root of user's mailbox storage, and allows quick lookup of mailbox status instead of needing to open all mailbox indexes separately.
Enabling this optimizes the server reply to IMAP STATUS commands, which are commonly issued by clients. This also needs to be enabled if you wish to enable the IMAP NOTIFY extension.
mailbox_list_index_include_inbox
Default | no |
---|---|
Value | boolean |
See Also |
Should INBOX be kept up-to-date in the mailbox list index?
Disabled by default as most mailbox accesses will open INBOX anyway.
mailbox_list_index_prefix
Default | dovecot.list.index |
---|---|
Value | string |
Prefix for the mailbox list index filename. It may also optionally include a
path (relative to mail_index_path
) to place it in a different
directory.
mailbox_list_index_very_dirty_syncs
Default | no |
---|---|
Value | boolean |
If enabled, assume that the mailbox list index is fully updated so that stat() will not be run for mailbox files/directories.
mailbox_list_iter_from_index_dir
Default | no |
---|---|
Value | boolean |
Perform mailbox listing using the mail_index_path
directories
instead of the mail_path
directories. Mainly useful when the index
file storage is on a faster storage.
mailbox_list_layout
Default | fs |
---|---|
Value | string |
Allowed Values | fs index Maildir++ |
See Also |
Directory layout to use.
Value | Description |
---|---|
Maildir++ |
The default used by Maildir. |
fs |
The default used by mbox and dbox. |
index |
The default used by obox plugin. Uses mailbox GUIDs as the directory names. The mapping between mailbox names and GUIDs exists in dovecot.list.index* files. |
INFO
The mail_driver
setting provides the default value, that the
mailbox_list_layout
setting can override.
mailbox_list_storage_escape_char
Default | The default for imapc storage is % . |
---|---|
Value | string |
See Also |
Specifies an escape character that it used for encoding special characters in the mailbox names in storage. This allows users to use characters in mailboxes names that would otherwise be illegal. For example:
.
character, since it's used
internally as the folder hierarchy separator.~
character at the beginning of the mailbox name is disallowed,
because of the possibility that it gets expanded to user's home directory./
character can't be used on POSIX filesystems, since it's the
directory separator.The characters are escaped to the mailbox name as
<mailbox_list_storage_escape_char><hex>
.
INFO
It's possible to use the same character here as for
mailbox_list_visible_escape_char
.
mailbox_list_utf8
Default | no |
---|---|
Value | boolean |
Store mailbox names on disk using UTF-8 instead of modified UTF-7 (mUTF-7).
mailbox_list_validate_fs_names
Default | yes |
---|---|
Value | boolean |
See Also |
Specifies whether to disallow mailbox names that might be unsafe to use in filesystems or potentially allow bypassing ACL checks:
/
character anywhere in the name (except as a hierarchy separator),
unless mailbox list isn't on a filesystem (e.g. index, imapc)./
as the first character.~
as the first character (so it's not confused as home directory)./
characters..
or ..
names between /
characters.mailbox_directory_name
between /
characters./
characters,mailbox_directory_name
is non-empty. This mainly means the
Maildir new
, cur
and tmp
directories in some configurations.Enabling mail_full_filesystem_access
enables also this setting.
mailbox_list_visible_escape_char
Default | The default for imapc storage is ~ . |
---|---|
Value | string |
See Also |
Specifies an escape character that is used for broken or otherwise inaccessible
mailbox names. If mailbox name can't be changed reversibly to UTF-8 and back,
encode the problematic parts using
<mailbox_list_visible_escape_char><hex>
in the user-visible UTF-8 name. The
mailbox_list_visible_escape_char
itself also has to be encoded the same
way.
This can be useful with imapc to access mailbox names that aren't valid mUTF-7 charset from remote servers, or if the remote server uses a different hierarchy separator and has folder names containing the local separator.
INFO
It's possible to use the same character here as for
mailbox_list_storage_escape_char
.
mailbox_name
Default | [None] |
---|---|
Value | string |
Name of the mailbox being configured. The mailbox
filter name
refers to this setting.
mailbox_notify_status
Default | no |
---|---|
Value | boolean |
Plugin | notify-status plugin |
Whether notifications for a single mailbox or mailbox wildcards are enabled.
Example:
mailbox INBOX {
notify_status = yes
}
mailbox Spam {
notify_status = yes
}
mailbox *BOX {
notify_status = yes
}
mailbox_root_directory_name
Default | specific to the mail_driver setting |
---|---|
Value | string |
Specifies directory name under which all mailbox directories are stored. For
example mailboxes
with dbox.
mailbox_special_use
Default | [None] |
---|---|
Value | Boolean List |
Changes |
|
List of SPECIAL-USE (RFC 6154) flags to broadcast for the mailbox.
There are no validity checks, so you could specify anything you want here, but it's not a good idea to use other than the standard ones specified in the RFC.
maildir_broken_filename_sizes
Default | no |
---|---|
Value | boolean |
See Also |
If enabled, do not obtain a mail message's physical size from the
S=<size>
data in the Maildir filename except when recalculating the
Maildir++ quota.
maildir_copy_with_hardlinks
Default | yes |
---|---|
Value | boolean |
See Also |
If enabled, copying of a message is done with hard links whenever possible.
This makes the performance much better, and it's unlikely to have any side effects. The only reason to disable this is if you're using a filesystem where hard links are slow (e.g. HFS+).
maildir_empty_new
Default | no |
---|---|
Value | boolean |
See Also |
Should mail messages always be moved from the new/
directory to
cur/
, even when the Recent
flags aren't being reset?
maildir_stat_dirs
Default | no |
---|---|
Value | boolean |
See Also |
If enabled, don't include non-directory files in a LIST response that begin with a dot. Thus, if disabled, Dovecot assumes that all the files beginning with a dot in the Maildir are Maildirs.
You shouldn't have any non-directory files beginning with a dot in the
Maildirs, but if you do you may need to set this to yes
, in which case
Dovecot needs to stat()
each directory entry, which degrades the
performance. Some filesystems (e.g. ext4) provide the
directory/non-directory status for free without having to stat()
.
In those filesystems this setting is ignored.
maildir_very_dirty_syncs
Default | no |
---|---|
Value | boolean |
See Also |
If enabled (yes
), Dovecot is assumed to be the only MUA that accesses
Maildir directly, so the cur/
directory is scanned only when its mtime
changes unexpectedly or when the mail cannot otherwise be found.
If enabled and another process (or a Dovecot process which doesn't update
index files) does changes to cur/
while the mailbox is simultaneously
being modified by Dovecot, Dovecot may not notice those external changes.
It is still safe to deliver new mails to new/
using non-Dovecot
software (except with mailbox_list_index = yes
, changes aren't
noticed outside INBOX).
managesieve_logout_format
Default | bytes=%{input}/%{output} |
---|---|
Value | String without variables |
Specifies the string pattern used to compose the logout message of an authenticated session. The following substitutions are available:
Variable Name | Description |
---|---|
%{input} |
Total number of bytes read from client |
%{output} |
Total number of bytes sent to client |
%{put_count} |
Number of scripts uploaded by client using PUTSCRIPT command |
%{put_bytes} |
Number of bytes with script data sent by client using PUTSCRIPT command |
%{get_count} |
Number of scripts downloaded by client using GETSCRIPT command |
%{get_bytes} |
Number of bytes with script data sent to client using GETSCRIPT command |
%{check_count} |
Number of scripts checked by client using CHECKSCRIPT command |
%{check_bytes} |
Number of bytes with script data sent by client using CHECKSCRIPT command |
%{deleted_count} |
Number of scripts deleted by client using DELETESCRIPT command |
%{renamed_count} |
Number of scripts renamed by client using RENAMESCRIPT command |
%{session} |
The client session ID |
mbox_dirty_syncs
Default | yes |
---|---|
Value | boolean |
See Also |
Enable optimized mbox syncing?
For larger mbox files, it can take a long time to determine what has changed when the file is altered unexpectedly. Since the change in most cases consists solely of newly appended mail, Dovecot can operate more quickly if it starts off by simply reading the new messages, then falls back to reading the entire mbox file if something elsewhere in it isn't as expected.
Dovecot assumes that external mbox file changes only mean that new messages were appended to it. Without this setting Dovecot re-reads the whole mbox file whenever it changes. There are various safeguards in place to make this setting safe even when other changes than appends were done to the mbox. The downside to this setting is that external message flag modifications may not be visible immediately.
When this setting is enabled, Dovecot tries to avoid re-reading the mbox
every time something changes. Whenever the mbox changes (i.e. timestamp or
size), Dovecot first checks if the mailbox's size changed. If it didn't, it
most likely meant that only message flags were changed so it does a full
mbox read to find it. If the mailbox shrunk, it means that mails were
expunged and again Dovecot does a full sync. Usually however the only thing
besides Dovecot that modifies the mbox is the LDA which appends new mails
to the mbox. So if the mbox size was grown, Dovecot first checks if the
last known message is still where it was last time. If it is, Dovecot reads
only the newly added messages and goes into "dirty mode". As long as
Dovecot is in dirty mode, it can't be certain that mails are where it
expects them to be, so whenever accessing some mail, it first verifies that
it really is the correct mail by finding its X-UID header. If the X-UID
header is different, it fallbacks to a full sync to find the mail's correct
position. The dirty mode goes away after a full sync. If
mbox_lazy_writes
was enabled and the mail didn't yet
have an X-UID header, Dovecot uses the MD5 sum of a couple of headers to
compare the mails.
mbox_dotlock_change_timeout
Default | 2 mins |
---|---|
Value | time |
See Also |
Override a lockfile after this amount of time if a dot-lock exists but the mailbox hasn't been modified in any way.
mbox_lazy_writes
Default | yes |
---|---|
Value | boolean |
See Also |
If enabled, mbox headers (e.g., metadata updates, such as writing X-UID headers or flag changes) are not written until a full write sync is performed (triggered via IMAP EXPUNGE or CHECK commands and/or when the mailbox is closed). mbox rewrites can be costly, so this may avoid a lot of disk writes.
Enabling this setting is especially useful with POP3, in which clients often delete all mail messages.
One negative consequence of enabling this setting is that the changes aren't immediately visible to other MUAs.
C-Client works the same way. The upside of this is that it reduces writes because multiple flag updates to same message can be grouped, and sometimes the writes don't have to be done at all if the whole message is expunged. The downside is that other processes don't notice the changes immediately (but other Dovecot processes do notice because the changes are in index files).
mbox_lock_timeout
Default | 5 mins |
---|---|
Value | time |
See Also |
The maximum time to wait for all locks to be released before aborting.
mbox_read_locks
Default | fcntl |
---|---|
Value | Boolean List |
Allowed Values | dotlock dotlock_try fcntl flock lockf |
See Also |
Specify which locking method(s) to use for locking the mbox files during reading.
Descriptions of the locking methods can be found at mbox locking.
mbox_very_dirty_syncs
Default | no |
---|---|
Value | boolean |
See Also |
If enabled, Dovecot performs the optimizations from
mbox_dirty_syncs
also for the IMAP SELECT, EXAMINE,
EXPUNGE, and CHECK commands.
If set, this option overrides mbox_dirty_syncs
.
mbox_write_locks
Default | dotlock fcntl |
---|---|
Value | Boolean List |
Allowed Values | dotlock dotlock_try fcntl flock lockf |
See Also |
Specify which locking method(s) to use for locking the mbox files during writing.
Descriptions of the locking methods can be found at mbox locking.
mdbox_preallocate_space
Default | no |
---|---|
Value | boolean |
See Also |
mdbox only: If enabled, preallocate space for newly created files.
In creation of new mdbox files, their size is immediately
preallocated as mdbox_rotate_size
.
This setting currently works only in Linux with certain filesystems (ext4 and xfs).
mdbox_rotate_interval
Default | [None] |
---|---|
Value | size |
See Also |
mdbox only: The maximum age the dbox file may reach before it's rotated.
0
means there is no age-based rotation.
mdbox_rotate_size
Default | 10M |
---|---|
Value | size |
See Also |
mdbox only: The maximum size the dbox file may reach before it is rotated.
message_hashing_hash_method
Default | md5 |
---|---|
Value | string |
Plugin | message-hashing plugin |
The hashing method to use. Must be a recognized Dovecot hashing method
(see auth_policy_hash_mech
for list of supported methods).
message_hashing_min_attachment_size
Default | 1 B |
---|---|
Value | size |
Plugin | message-hashing plugin |
The minimum size of an attachment to be processed; attachments smaller than this will be skipped.
metacache
Value | Named Filter |
---|---|
See Also | |
Plugin | obox plugin |
Named filter for initializing FS Driver for obox index bundles.
metacache_close_delay
Default | 2secs |
---|---|
Value | time |
Plugin | obox plugin |
If user was accessed this recently, assume the user's indexes are up-to-date. If not, list index bundles in object storage (or Cassandra) to see if they have changed. This typically matters only when user is being moved to another backend and soon back again, or if the user is simultaneously being accessed by multiple backends.
metacache_forced_refresh_interval
Default | 8 hours |
---|---|
Value | time |
Plugin | obox plugin |
Changes |
|
If the user indexes haven't been refreshed for this long time, force the
refresh. This is done by ignoring the
metacache_close_delay
setting (i.e. same as if it is 0
).
This setting allows highly active users' indexes still to be refreshed once in a while. (Although if the user has an active session 100% of the time, the refresh cannot be done.)
metacache_last_host_dict
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
If this setting is configured to a valid Dictionary URI, obox looks up
metacache_last_host
key from dict. This is meant to be used with
Palomar.
The metacache_last_host
value is kept in Palomar GeoDB.
If the lookup is successful and metacache_last_host
is different
from the current host (cluster_backend_name
), metacache is pulled
from the metacache_last_host
backend. Obox also updates
metacache_last_host
to the given dict.
metacache_max_grace
Default | 1G |
---|---|
Value | size |
Plugin | obox plugin |
How much disk space on top of metacache_max_space
can be used
before Dovecot stops allowing more users to login.
metacache_max_space
Default | unlimited |
---|---|
Value | size |
Plugin | obox plugin |
How much disk space metacache can use before old data is cleaned up.
Generally, this should be set at ~90% of the available disk space.
metacache_refresh_index_once_after
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
This forces the next mailbox open after the specified UNIX timestamp to refresh locally cached indexes to see if other backends have modified the user's indexes simultaneously.
metacache_rescan_mails_once_after
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
This forces the next mailbox open after the specified UNIX timestamp to rescan the mails to make sure there aren't any unindexed mails.
metacache_upload_interval
Default | 5min |
---|---|
Value | time |
Plugin | obox plugin |
How often to upload important index changes to object storage?
This mainly means that if a backend crashes during this time, message flag changes within this time may be lost. A longer time can however reduce the number of index bundle uploads.
metric
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new metric. The filter name refers to the metric_name
setting.
metric_description
Default | [None] |
---|---|
Value | string |
Human-readable description of the metric. This is included in the HELP text sent to OpenMetrics.
metric_exporter
Default | [None] |
---|---|
Value | string |
See Also |
Export events matching the filter with this
event exporter. Refers to the
event_exporter_name
setting. If empty, the events are used only for
statistics, and no exporting is done.
metric_exporter_include
Default | name hostname timestamps categories fields |
---|---|
Value | Boolean List |
Specifies which parts of the event are exported to the serialized event:
Values | Description |
---|---|
name |
The name of the event. |
hostname |
The name of the host generating this event. |
timestamps |
The event start and end timestamps. |
categories |
A set of categories associated with this event. |
fields |
The fields associated with this event. The fields that will be exported are defined by the metric_fields setting. |
For example:
metric example {
exporter_include = name hostname timestamps
}
includes just the 3 specified parts, while
metric another_example {
exporter_include =
}
includes nothing and the exported event will be empty (i.e. {}
in JSON).
metric_fields
Default | [None] |
---|---|
Value | Boolean List |
Changes |
|
A list of fields included in the metric. All events have a default duration
field that does not need to be listed explicitly.
metric_filter
Default | [None] |
---|---|
Value | string |
See Also |
Event filter that matches the events belonging to this metric.
metric_group_by
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new group_by for dynamically generating
sub-metrics based on the specified field's values. The filter name refers to
the metric_group_by_field
.
metric_group_by_field
Default | [None] |
---|---|
Value | string |
See Also |
Generate sub-metrics based on this event field name. The
metric_group_by
filter name refers to this setting.
metric_group_by_method
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Configures metric_group_by_method_method = the aggregation method
for
the metric_group_by
. Only a single method can be specified for
a group_by. The filter name refers to the
metric_group_by_method_method
.
metric_group_by_method_discrete_modifier
Default | [None] |
---|---|
Value | String without variables |
See Also |
Configures a modifier string for values grouped by the discrete method. %variables and their functions can be used:
%{value}
%{user | domain}
user@domain
format, this contains the domain
text. Otherwise empty.metric_group_by_method_exponential_base
Default | 10 |
---|---|
Value | unsigned integer |
See Also |
Configures the base for values grouped by the
exponential method. Only 2
and
10
are supported.
metric_group_by_method_exponential_max_magnitude
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Configures the maximum magnitude for values grouped by the exponential method.
metric_group_by_method_exponential_min_magnitude
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Configures the minimum magnitude for values grouped by the exponential method.
metric_group_by_method_linear_max
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Configures the maximum for values grouped by the linear method.
metric_group_by_method_linear_min
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Configures the minimum for values grouped by the linear method.
metric_group_by_method_linear_step
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Configures the step for values grouped by the linear method.
metric_group_by_method_method
Default | discrete |
---|---|
Value | string |
Allowed Values | discrete exponential linear |
See Also |
Configures the aggregation method for the
metric_group_by
. The metric_group_by_method
filter name
refers to this setting.
metric_name
Default | [None] |
---|---|
Value | string |
Name of the metric. It is visible in statistics outputs. The metric
filter name refers to this setting.
mmap_disable
Default | no |
---|---|
Value | boolean |
Disable mmap() usage?
This must be set to yes
if you store indexes to shared filesystems
(i.e., if you use NFS or a clustered filesystem).
mysql
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new MySQL connection. If more than one is specified, the connections
are automatically used for load balancing and for failover. The filter name
refers to the mysql_host
setting.
mysql_client_flags
Default | [None] |
---|---|
Value | unsigned integer |
Flags to use when connecting to the database, provided as base-10 number. See https://dev.mysql.com/doc/c-api/8.0/en/mysql-real-connect.html
mysql_connect_timeout
Default | 5s |
---|---|
Value | time |
How long to wait for connection.
mysql_connection_limit
Default | 5 |
---|---|
Value | unsigned integer |
Maximum number of parallel connections. Currently MySQL queries are blocking, so only a single connection can be used in parallel.
mysql_dbname
Default | [None] |
---|---|
Value | string |
Database name to connect to.
mysql_host
Default | localhost |
---|---|
Value | string |
Host or UNIX socket path to connect to. The mysql
setting defaults
to this.
INFO
MySQL drivers can default to using UNIX socket connection when host is
localhost
and port is 0
(default). To force it to use TCP connection,
set mysql_host = 127.0.0.1
or set mysql_port
explicitly.
mysql_option_file
Default | [None] |
---|---|
Value | string |
File to read for client library specific configuration.
mysql_option_group
Default | [None] |
---|---|
Value | string |
Section name to read from mysql_option_file
.
mysql_password
Default | [None] |
---|---|
Value | string |
Password for authentication.
mysql_port
Default | 0 (defaults to 3306 for TCP connections) |
---|---|
Value | Port Number |
Port to connect to.
mysql_read_timeout
Default | 30s |
---|---|
Value | time |
Timeout when reading data from server.
mysql_ssl
Default | no |
---|---|
Value | boolean |
See Also |
Whether to use SSL when connecting to MySQL. Configure it using the
ssl_client_*
settings. See SSL.
mysql_user
Default | [None] |
---|---|
Value | string |
Username for authentication.
mysql_write_timeout
Default | 30s |
---|---|
Value | time |
Timeout in seconds when writing data to server.
namespace
Default | [None] |
---|---|
Value | Named List Filter |
Creates a new namespace to the list of namespaces. The filter name refers to
the namespace_name
setting.
Example:
namespace foo {
[...]
}
namespace_alias_for
Default | [None] |
---|---|
Value | string |
Refers to an alias namespace's namespace_name
.
If multiple namespaces point to the same location, they should be marked as aliases against one primary namespace. This avoids duplicating work for some commands (listing the same mailbox multiple times).
Mail user variables
can be used.
Note: Alias namespaces often have hidden=yes
and list=no
so
they are not visible unless clients have specifically configured
them, and they're typically used when migrating to a different
namespace prefix for existing users.
Example:
namespace inbox {
prefix =
# ...
}
namespace alias {
prefix = INBOX/
alias_for = inbox
}
namespace_disabled
Default | no |
---|---|
Value | boolean |
If yes
, namespace is disabled and cannot be accessed by user in any way.
Useful when returned by a userdb lookup to easily configure per-user namespaces.
namespace_hidden
Default | no |
---|---|
Value | boolean |
If yes
, namespace will be hidden from IMAP NAMESPACE (RFC 2342)
command.
namespace_ignore_on_failure
Default | no |
---|---|
Value | boolean |
If namespace's storage initialization fails, by default the entire session will fail to start. If this is set, this namespace will be ignored instead.
namespace_inbox
Default | no |
---|---|
Value | boolean |
If yes
, this namespace will be considered the one holding the INBOX
folder.
There can be only one namespace defined like this.
namespace_list
Default | yes |
---|---|
Value | string |
Allowed Values | yes no children |
See Also |
Include this namespace in LIST output when listing its parent's folders.
Options:
Value | Description |
---|---|
children |
Namespace prefix list listed only if it has child mailboxes. |
no |
Namespace and mailboxes not listed unless listing requests explicitly mailboxes under the namespace prefix. |
yes |
Namespace and mailboxes are always listed. |
It is still possible to list the namespace's folders by explicitly asking
for them. For example, if this setting is no
, using LIST "" *
with
namespace prefix "lazy-expunge/" won't list it, but using LIST "" lazy-expunge/*
lists all folders under it.
namespace_name
Default | [None] |
---|---|
Value | string |
Name of the namespace. This is used only in configurations - it's not visible
to user. The namespace
filter refers to this setting.
namespace_order
Default | [None] |
---|---|
Value | unsigned integer |
Sets display order in IMAP NAMESPACE (RFC 2342) command.
Namespaces are automatically numbered if this setting does not exist.
namespace_prefix
Default | [None] |
---|---|
Value | string |
Specifies prefix for namespace.
INFO
Must end with namespace_separator
.
Mail user variables
can be used.
Example:
namespace {
prefix = Shared/
separator = /
}
namespace_separator
Default | "." for Maildir; "/" for other mbox formats |
---|---|
Value | string |
See Also |
Specifies the hierarchy separator for the namespace.
The separator is a single character, which can't then otherwise be used in folder names.
The commonly used separators are .
and /
, but other separators can
be used as well. For example ^
is less likely to be found in normal
folder names.
Recommended value is to leave it empty and accept the default value.
namespace_subscriptions
Default | yes |
---|---|
Value | boolean |
Whether subscriptions are stored in this namespace.
This is usually no
for shared namespaces so that the shared folders'
subscriptions are stored in the user's primary subscriptions file. If
no
, the subscriptions are stored in the first parent namespace (based
on the prefix) that has this setting enabled.
Example: If this setting is no
for a namespace with
prefix=foo/bar/
, Dovecot first sees if there's a prefix=foo/
namespace with subscriptions=yes
and then a namespace with an empty
prefix. If neither is found, an error is given.
namespace_type
Default | private |
---|---|
Value | string |
Allowed Values | private shared public |
The namespace type. One of:
Type | Description |
---|---|
public |
Contains public shared mailboxes. |
private |
Typically contains only user's own private mailboxes. |
shared |
Contains other users' user shared mailboxes. |
nfs_hostchange_migration
Default | no |
---|---|
Value | boolean |
Plugin | nfs-hostchange plugin |
When enabled, assume user is being migrated.
notify_status
Default | [None] |
---|---|
Value | string |
Dependencies | |
Plugin | notify-status plugin |
The URI of the dictionary to use. This MUST be set for the plugin to be active.
See dictionary for how to configure dictionaries.
notify_status {
dict proxy {
name = notify_status
socket_path = dict-async
}
}
notify_status_value
Default | {"messages":%{messages},"unseen":%{unseen}} |
---|---|
Value | String without variables |
Plugin | notify-status plugin |
A template of the string that will be written to the dictionary.
The template supports variable substitution of the form
%{variable_name}
.
Supported variable substitutions:
Field | Value |
---|---|
first_recent_uid |
First recent UID |
highest_modseq |
Highest modification sequence number |
highest_pvt_modseq |
Highest private modification sequence number |
mailbox |
Mailbox name |
messages |
Number of messages |
recent |
Number of recent messages (deprecated) |
uidnext |
Predicted next UID value |
uidvalidity |
Current UID validity |
unseen |
Number of unseen messages |
username |
Username (user@domain) |
oauth2
Value | Named Filter |
---|---|
See Also |
Filter for oauth2 specific settings.
oauth2_active_attribute
Default | [None] |
---|---|
Value | string |
Attribute name for (optional) checking whether account is disabled.
oauth2_active_value
Default | [None] |
---|---|
Value | string |
Expected value in active_attribute
. (empty = require present, but anything
goes)
oauth2_fields
Default | [None] |
---|---|
Value | String List |
Key-value fields to include in successful authentication.
oauth2_force_introspection
Default | no |
---|---|
Value | boolean |
Force introspection even if tokeninfo contains wanted fields. Set this to
yes
if you are using oauth2_active_attribute
.
oauth2_introspection_mode
Default | [None] |
---|---|
Value | string |
Allowed Values | <empty> auth get post local |
See Also |
To enable oauth2 you must choose how to do token introspection.
oauth2_introspection_url
is not required if
oauth2_tokeninfo_url
already provides all the necessary fields, or
if you are using local
validation.
You can force introspection with oauth2_force_introspection
, if you
need to it every time.
With local
validation, oauth2_tokeninfo_url
is also ignored.
Value | Description |
---|---|
auth |
GET request with Bearer authentication. |
get |
GET request with token appended to URL. |
post |
POST request with token=bearer_token as content. |
local |
Attempt to locally validate and decode JWT token. |
oauth2_introspection_url
Default | [None] |
---|---|
Value | string |
URL for getting more information about token.
oauth2_issuers
Default | [None] |
---|---|
Value | Boolean List |
Valid issuer(s) for the token.
oauth2_local_validation
Value | Named Filter |
---|---|
See Also |
A dictionary for fetching validation keys.
Example:
oauth2_local_validation {
dict fs {
fs posix {
prefix = /tmp/keys/
}
}
}
oauth2_openid_configuration_url
Default | [None] |
---|---|
Value | string |
URL to RFC 7628 OpenID Provider Configuration Information schema.
oauth2_scope
Default | [None] |
---|---|
Value | Boolean List |
A list of valid scopes.
oauth2_send_auth_headers
Default | no |
---|---|
Value | boolean |
Whether to send special headers about authentication to remote server. If you enable this, the following headers will be sent:
X-Dovecot-Auth-Protocol
X-Dovecot-Auth-Local
X-Dovecot-Auth-Remote
oauth2_tokeninfo_url
Default | [None] |
---|---|
Value | string |
URL for verifying token validity. Token is appended to the URL.
Example:
oauth2_tokeninfo_url = http://endpoint/oauth/tokeninfo?access_token=
oauth2_use_worker_with_mech
Default | no |
---|---|
Value | boolean |
See Also |
Use worker process to verify token. This setting only applies to mechanism. If
you want to use worker with passdb oauth2
, use
passdb_use_worker
instead. Worker processes are mostly useful for
distributing local token validation to multiple CPUs.
oauth2_username_attribute
Default | email |
---|---|
Value | string |
Username attribute in response.
oauth2_username_validation_format
Default | %{user} |
---|---|
Value | string |
See Also |
Normalization for oauth2 provided username, this setting is normally not
needed. You only need this if the username that comes from authentication will
not otherwise match with oauth2_username_attribute
value.
obox
Value | Named Filter |
---|---|
See Also | |
Plugin | obox plugin |
Named filter for initializing FS Driver for obox mails.
INFO
See the storage provider pages for specific parameters that can be used.
obox_max_parallel_copies
Default | mail_prefetch_count |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Maximum number of email HTTP copy/link operations to do in parallel.
If the storage driver supports bulk-copy/link operation, this controls how many individual copy operations can be packed into a single bulk-copy/link HTTP request.
obox_max_parallel_deletes
Default | mail_prefetch_count |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Maximum number of email HTTP delete operations to do in parallel.
If the storage driver supports bulk-delete operation, this controls how many individual delete operations can be packed into a single bulk-delete HTTP request.
obox_max_parallel_writes
Default | mail_prefetch_count |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Maximum number of email write HTTP operations to do in parallel.
obox_track_copy_flags
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Try to avoid Cassandra SELECTs when expunging mails.
Enable only if dictmap/Cassandra and lazy-expunge plugin are used.
passdb
Default | [None] |
---|---|
Value | Named List Filter |
Dependencies | |
See Also |
Creates a new passdb. The filter name refers to the
passdb_name
setting.
passdb_args
Default | [None] |
---|---|
Value | string |
Arguments for the passdb driver. The format of this value depends on the passdb driver. Each one uses different args.
passdb_default_password_scheme
Default | PLAIN specific passdb have different defaults |
---|---|
Value | string |
The scheme that passwords are in the passdb, unless overridden by the passdb
entry (typically by prefixing with {SCHEME}
).
passdb_deny
Default | no |
---|---|
Value | boolean |
If yes
and the user is found from the denied user database
the
authentication will fail.
passdb_driver
Default | [None] |
---|---|
Value | string |
See Also |
The driver used for this password database. If empty, defaults to
passdb_name
. See passdb for the list of available
drivers.
passdb_fields
Default | [None] |
---|---|
Value | String List |
See Also |
Passdb fields (and passdb: Extra Fields). The values can contain
%variables. All %variables
used here reflect
the state after the current passdb lookup, and can refer to fields returned
by previous passdb lookups. Depending on the passdb driver, it can also refer
to variable fields returned by it (e.g. %{ldap:fieldName}
).
INFO
The LDAP driver provides additional specific variables, see LDAP authentication for more details.
For example:
passdb ldap {
fields {
user = %{ldap:userId}
proxy = yes
host = %{ldap:proxyHost}
}
}
passdb_fields_import_all
Default | yes For passdb ldap the default is no . |
---|---|
Value | boolean |
See Also |
If yes, import all fields returned by the passdb lookup. If no, require
passdb_fields
to explicitly add wanted fields.
passdb_ldap_bind
Default | no |
---|---|
Value | boolean |
Set yes
to use authentication binding for verifying password's validity.
This works by logging into LDAP server using the username and password given by client.
The passdb_ldap_filter
is used to find the DN for the user.
Note that the passdb_fields
are still used, only the password field
is ignored in it.
Before doing any search, the binding is switched back to the default DN.
If you use this setting, it's a good idea to use a different
ldap_connection_group
for userdb. That way one connection is used
only for LDAP binds and another connection is used for user lookups.
Otherwise the binding is changed to the default DN before each user lookup.
passdb_ldap_bind_userdn
Default | [None] |
---|---|
Value | string |
If authentication binding is used, you can save one LDAP request per login
if users' DN can be specified with a common template. The template can use
the standard Settings variables
.
Note that you can't use any passdb_fields
declaration if you use this setting.
Example: passdb_ldap_bind_userdn = cn=%{user},ou=people,o=org
passdb_ldap_filter
Default | [None] |
---|---|
Value | string |
Filter for passdb lookup.
Variables that can be used (see Settings variables
for full list).
Example:
passdb ldap {
filter = (&(objectClass=posixAccount)(uid=%{user}))
#...
}
passdb_master
Default | no |
---|---|
Value | boolean |
If yes
and the user is found from the master users the user
is allowed to login as other users.
passdb_mechanisms_filter
Default | [None] |
---|---|
Value | Boolean List |
Changes |
|
Skip the passdb if non-empty and the current auth mechanism is not listed here.
If the value contains lookup
, it matches for non-authenticating passdb
lookups (e.g. lmtp/doveadm lookups).
Example:
passdb passwd-file {
driver = passwd-file
mechanisms_filter = PLAIN LOGIN
# ...
}
passdb_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of the passdb. The passdb
filter name refers to this setting.
If the passdb_driver
setting is empty, the passdb_name
is used
as the driver. This allows doing e.g.:
passdb passwd-file {
passwd_file_path = /etc/dovecot/passwd
passdb_pam_failure_show_msg
Default | no |
---|---|
Value | boolean |
Replace the default Authentication failed
reply with PAM's failure.
passdb_pam_max_requests
Default | 100 |
---|---|
Value | unsigned integer |
See Also |
Number of requests a auth-worker process handles for passdb pam before it dies.
This configures similar behaviour as the
service_restart_request_count
setting but it limits only the number
of pam passdb requests, not all requests to be handled by an auth-worker.
passdb_pam_service_name
Default | dovecot |
---|---|
Value | string |
The PAM service name to be used with the pam passdb.
passdb_pam_session
Default | no |
---|---|
Value | boolean |
Make Dovecot open a PAM session and close it immediately.
passdb_pam_setcred
Default | no |
---|---|
Value | boolean |
Make Dovecot create PAM credentials. The credentials are never deleted, which may cause problems with some PAM plugins.
passdb_result_failure
Default | continue |
---|---|
Value | string |
Allowed Values | return-ok return return-fail continue continue-ok continue-fail |
See Also |
What to do after the passdb authentication failed. Possible values and their meaning are described fully at passdb: Result Values.
passdb_result_internalfail
Default | continue |
---|---|
Value | string |
Allowed Values | return-ok return return-fail continue continue-ok continue-fail |
See Also |
What to do after the passdb authentication failed due to an internal error.
Possible values and their meaning are described fully at
passdb: Result Values. If any of the passdbs had an internal failure
and the final passdb also returns continue
the authentication will fail
with internal error
.
passdb_result_success
Default | return-ok |
---|---|
Value | string |
Allowed Values | return-ok return return-fail continue continue-ok continue-fail |
See Also |
What to do after the passdb authentication succeeded. Possible values and their meaning are described fully at passdb: Result Values.
This is commonly used together with master passdb to specify that even after a successful master user authentication, the authentication should continue to the actual non-master passdb to lookup the user.
passdb_skip
Default | never |
---|---|
Value | string |
Allowed Values | never authenticated unauthenticated |
Configures when passdbs should be skipped:
Value | Description |
---|---|
never |
Never skip over this passdb. |
authenticated |
Skip if an earlier passdb already authenticated the user successfully. |
unauthenticated |
Skip if user hasn't yet been successfully authenticated by the previous passdbs. |
passdb_sql_query
Default | [None] |
---|---|
Value | string |
SQL query to lookup the passdb fields (password
and other extra fields).
passdb_sql_update_query
Default | [None] |
---|---|
Value | string |
SQL query to update the password. Currently used only by the OTP
auth
mechanism.
passdb_static_password
Default | [None] |
---|---|
Value | string |
Changes |
|
The static password to be used for all users authenticating using this passdb.
passdb_use_worker
Default | no specific passdb have different defaults |
---|---|
Value | boolean |
If yes
, run the passdb lookup in auth-worker process instead of the main
auth process. This setting is only used by some of the passdb drivers.
passdb_username_filter
Default | [None] |
---|---|
Value | string |
Skip the passdb if non-empty and the username doesn't match the filter. This is
mainly used to assign specific passdbs to specific domains. Space or
comma-separated list of username filters that can have *
or ?
wildcards. If any of the filters matches, the filter succeeds. Define negative
matches by preceding !
. If any of the negative filter matches, the filter
won't succeed.
Example:
*@example.com *@example2.com !user@example.com
any@example.com
user@example2.com
user@example.com
passwd_file_path
Default | [None] |
---|---|
Value | string |
Path to the passwd-file.
pgsql
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new PostgreSQL connection. If more than one is specified, the
connections are automatically used for load balancing and for failover. The
filter name refers to the pgsql_host
setting.
pgsql_connection_limit
Default | 5 |
---|---|
Value | unsigned integer |
Maximum number of parallel connections.
pgsql_host
Default | [None] |
---|---|
Value | string |
See Also |
Host to connect to. The pgsql
setting defaults to this.
pgsql_parameters
Default | [None] |
---|---|
Value | String List |
List of key/value settings passed to PostgreSQL. See https://www.postgresql.org/docs/current/libpq-connect.html for available parameters.
pop3_client_workarounds
Default | [None] |
---|---|
Value | Boolean List |
Workarounds for various POP3 client bugs can be enabled here.
The following values are currently supported:
oe-ns-eoh
outlook-no-nuls
0x80
character.pop3_delete_type
Default | default |
---|---|
Value | string |
Allowed Values | default flag expunge |
Action to perform in POP3 when mails are deleted and
pop3_deleted_flag
is enabled.
pop3_deleted_flag
Default | [None] |
---|---|
Value | string |
See Also |
Change POP3 behavior so a user cannot permanently delete messages via POP3.
Instead, the messages are hidden from POP3 sessions by setting an IMAP flag, which Dovecot will filter out in future listings.
To enable this behavior, enter the name of the IMAP keyword to use.
INFO
This keyword will visible on IMAP clients for the message.
Example:
pop3_deleted_flag = $POP3Deleted
pop3_enable_last
Default | no |
---|---|
Value | boolean |
Enable support for the POP3 LAST command.
While this command has been removed from newer POP3 specs, some clients still attempt to use it. Enabling this causes the RSET command to clear all \Seen flags that messages may have.
pop3_fast_size_lookups
Default | no |
---|---|
Value | boolean |
If enabled, use the virtual message size of the message for POP3 replies if available.
POP3 requires message sizes to be listed as if they contain CR+LF line breaks; however, many POP3 servers instead return the sizes with pure line feeds (LFs), for the sake of speed.
If enabled, use the virtual message size if available, before falling back to the incorrect, physical size (used by many POP3 servers) if judging the correct size would have required opening the message to determine.
pop3_lock_session
Default | no |
---|---|
Value | boolean |
If enabled, only one POP3 session may exist for any single user.
pop3_logout_format
Default | top=%{top_count}/%{top_bytes}, retr=%{retr_count}/%{retr_bytes}, del=%{deleted_count}/%{deleted_bytes}, size=%{message_bytes} |
---|---|
Value | String without variables |
The string to display to the client on POP3 logout (informational only).
Variables available (in addition to Mail user variables
):
Variable Name | Description |
---|---|
%{input} |
Bytes read from the client |
%{output} |
Bytes sent to the client |
%{top_count} |
Number of TOP commands run |
%{top_bytes} |
Bytes sent to the client because of TOP commands |
%{retr_count} |
Number of RETR commands run |
%{retr_bytes} |
Bytes sent to the client because of RETR commands |
%{deleted_count} |
Number of deleted messages |
%{deleted_bytes} |
Number of bytes in deleted messages |
%{message_count} |
Number of messages before deletion |
%{message_bytes} |
Mailbox size, in bytes, before deletion |
%{uidl_change} |
The old and the new UIDL hash (which can be useful for identifying unexpected changes in UIDLs) |
pop3_migration_all_mailboxes
Default | no |
---|---|
Value | boolean |
Plugin | pop3-migration plugin |
By default it's assumed that POP3 contains the same messages as IMAP INBOX. If there are any unexpected mails, the migration fails. If the POP3 server includes other folders' contents in POP3 as well, this setting needs to be enabled. It causes Dovecot to try to match POP3 messages in all the migrated folders, not just INBOX. There is no warning logged if any POP3 UIDLs are missing or if POP3 has messages that aren't found from IMAP.
pop3_migration_ignore_extra_uidls
Default | no |
---|---|
Value | boolean |
Plugin | pop3-migration plugin |
If IMAP INBOX has all messages that exist in POP3, but POP3 still has some additional messages, the migration fails. Enable this setting to log it as a warning and continue anyway. This could happen if there's a race condition where a new mail is just delivered and it shows up in POP3 but not in IMAP.
pop3_migration_ignore_missing_uidls
Default | no |
---|---|
Value | boolean |
Plugin | pop3-migration plugin |
If POP3 has messages that aren't found from IMAP INBOX, and IMAP INBOX also has messages not found from POP3, the migration fails. Enable this setting to log it as a warning and continue anyway.
pop3_migration_mailbox
Default | no |
---|---|
Value | string |
Plugin | pop3-migration plugin |
This setting points to the POP3 INBOX in the configured pop3c namespace. This setting is required for the plugin to be active.
pop3_migration_mailbox = POP3-MIGRATION-NS/INBOX
pop3_migration_skip_size_check
Default | no |
---|---|
Value | boolean |
Plugin | pop3-migration plugin |
IMAP and POP3 messages are attempted to be matched by the message sizes by default. This is the most efficient way of matching the messages, since both IMAP and POP3 listings can usually be looked up from indexes/caches. If the IMAP INBOX and POP3 listings don't match exactly, or if two adjacent messages have the same size, the rest of the messages are matched by reading their headers.
If this setting is enabled, the message size check is skipped entirely and only headers are matched. This may be necessary for reliability if it's known that the IMAP and POP3 messages cannot be matched by size anyway.
pop3_migration_skip_uidl_cache
Default | no |
---|---|
Value | boolean |
Plugin | pop3-migration plugin |
If imapc is configured with persistent indexes, the POP3 UIDLs are stored into the imapc mailbox's dovecot.index.cache files. Any following incremental migrations use these cached UIDLs if possible. This setting can be used to disable this in case there are any problems with the cache. This setting is unlikely to be ever needed.
pop3_no_flag_updates
Default | no |
---|---|
Value | boolean |
If enabled, do not attempt to mark mail messages as seen or non-recent when a POP3 session is involved.
pop3_reuse_xuidl
Default | no |
---|---|
Value | boolean |
If enabled, and the mail message has an X-UIDL header, use this as the mail's UIDL.
pop3_save_uidl
Default | no |
---|---|
Value | boolean |
Maildir only: If enabled, allow permanent saving of UIDLs sent to
POP3 clients so that changes to pop3_uidl_format
don't cause
future changes to the corresponding UIDLs.
pop3_uidl_duplicates
Default | allow |
---|---|
Value | string |
Allowed Values | allow rename |
How to handle any duplicate POP3 UIDLs that may exist.
Options:
allow
rename
pop3_uidl_format
Default | %{uid | hex(8)}%{uidvalidity | hex(8)} |
---|---|
Value | String without variables |
The POP3 unique mail identifier (UIDL) format to use.
The following variables can be used in combination with the
standard variable filters (e.g., %{filename | upper}
supplies the filename
in uppercase) and with Global variables
:
Variable Name | Description |
---|---|
%{uidvalidity} |
Mailbox's IMAP UIDVALIDITY value |
%{uid} |
IMAP UID associated with the message |
%{md5} |
MD5 sum of the mailbox headers in hex (mbox only) |
%{filename} |
Filename (Maildir only) |
%{guid} |
Dovecot GUID for the message |
pop3_uidl_migrate_format
Default | [None] |
---|---|
Value | string |
Plugin | pop3-uidl-migrate plugin |
A template of the UIDL format to use when migrating messages.
The template supports variable substitution of the form %{variable_name}
.
Variable substitutions available:
Field | Value |
---|---|
owm |
OpenWave: If Message-ID header is valid POP3 UIDL, use it. Otherwise, use MD5 of the Message-ID header. |
uid |
IMAP message UID |
uidvalidity |
Current UID validity |
pop3c_features
Default | [None] |
---|---|
Value | Boolean List |
List of features, optimizations, and workarounds that can be enabled.
Workarounds:
no-pipelining
pop3c_host
Default | [None] |
---|---|
Value | string |
The remote POP3 host to connect to.
pop3c_master_user
Default | [None] |
---|---|
Value | string |
See Also |
The master username to authenticate as on the remote POP3 host.
To authenticate as a master user but use a separate login user, the following configuration should be employed, where the credentials are represented by masteruser and masteruser-secret:
pop3c_user = %{user}
pop3c_master_user = masteruser
pop3c_password = masteruser-secret
Mail user variables
can be used.
pop3c_password
Default | [None] |
---|---|
Value | string |
See Also |
The authentication password for the remote POP3 server.
If using master users, this setting will be the password of the master user.
pop3c_port
Default | 110 |
---|---|
Value | Port Number |
The port on the remote POP3 host to connect to.
pop3c_quick_received_date
Default | no |
---|---|
Value | boolean |
If enabled, pop3c doesn't require calling TOP for each message in order to get the metadata.
pop3c_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Log all POP3 traffic input/output to this directory.
pop3c_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no pop3s starttls |
Use TLS to connect to the remote POP3 server.
Value | Description |
---|---|
no |
No TLS |
pop3s |
Explicitly connect to remote POP3 port using TLS |
starttls |
Use POP3 STARTTLS command to switch to TLS connection |
pop3c_ssl_verify
Default | yes |
---|---|
Value | boolean |
See Also |
Verify remote POP3 TLS certificate?
Verification may be disabled during testing, but should be enabled during production use.
Only used if pop3c_ssl
is enabled.
pop3c_user
Default | %{user} |
---|---|
Value | string |
See Also |
The user identity to be used for performing authentication to the source POP3 server.
Mail user variables
can be used.
postmaster_address
Default | postmaster@%{user|domain|default(hostname)} |
---|---|
Value | string |
The From address from which email rejection messages (bounces) are sent.
As used here, %{user | domain}
expands to the domain of the local user.
Other Mail user variables
can be used as well.
process_shutdown_filter
Default | event=mail_user_session_finished AND rss > 20MB |
---|---|
Value | string |
Filter to specify which events shutdown the process after finishing the current connections. This is mainly intended to save memory by preventing long-running imap processes that use a lot of memory (due to libc not freeing all of it to the OS). The syntax of the filter is described in Global Metric Filters.
For example:
process_shutdown_filter = "event=mail_user_session_finished AND rss > 20MB"
protocols
Default | [None] |
---|---|
Value | Boolean List |
The list of protocols to enable. By default all protocols are disabled.
For example:
# Only IMAP protocol enabled:
protocols = imap
# Enable also LMTP protocol (on top of IMAP):
protocols {
lmtp = yes
}
push_notification
Default | [None] |
---|---|
Value | string |
Plugin | push-notification plugin |
The configuration value is a named filter for a specified driver, see Push Notifications for their names and their supported options.
push_notification_driver
Default | [None] |
---|---|
Value | string |
Dependencies | |
Plugin | push-notification plugin |
The name of the driver. This value determines the available options and the behavior. See Push Notifications for the list of supported drivers and options.
quota
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | quota plugin |
Create a new quota root. The filter name refers
to quota_name
setting.
Globally configured quota roots are used only for private namespaces. To use quota for public namespaces, configure it inside the public namespace.
Example:
quota "User quota" {
storage_size = 1G
}
quota_clone
Value | Named Filter |
---|---|
See Also | |
Plugin | quota-clone plugin |
Changes |
|
Named filter for initializing dictionary used to update with quota clone information.
redis_host = 127.0.0.1
redis_port = 6379
quota_clone {
dict redis {
}
}
quota_driver
Default | count |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Quota driver to use. See Quota Drivers.
quota_enforce
Default | yes quota_imapc { no } |
---|---|
Value | boolean |
Plugin | quota plugin |
If disabled, the quota limit isn't actually enforced. The quota is still tracked and the current quota usage is visible to IMAP GETQUOTA commands.
quota_exceeded_message
Default | Quota exceeded (mailbox for user is full) |
---|---|
Value | string |
Plugin | quota plugin |
The message specified here is passed on to a user who goes over quota. There are also other messages, which are currently hard coded:
quota_mail_size
:
Mail size is larger than the maximum size allowed by server configuration
quota_mailbox_message_count
:
Too many messages in the mailbox
quota_fs_message_limit
Default | no |
---|---|
Value | boolean |
Plugin | quota plugin |
If yes, use filesystem quota's inode limit as the message count limit. This can be useful with Maildir or sdbox. Used only with Quota Driver: Filesystem.
quota_fs_mount_path
Default | [None] |
---|---|
Value | string |
Plugin | quota plugin |
If specified, enable FS quota for the specified mount path. Only mailboxes existing in this mount path have the quota enabled. Empty value looks up the mountpoint automatically. Used only with Quota Driver: Filesystem.
quota_fs_type
Default | any |
---|---|
Value | string |
Allowed Values | any user group |
Plugin | quota plugin |
Using any
attempts to use the user quota first, with a fallback to group
quota. Using user
or group
only attempts to use the user or the group
quota, with a fallback to unlimited quota limit. Used only with
Quota Driver: Filesystem.
quota_full_tempfail
Default | no |
---|---|
Value | boolean |
See Also |
If enabled, return a temporary failure to the sending server if quota is exceeded. This allows the message to potentially be delivered later if the account moves under the quota limit at the time of redelivery.
If disabled, the message is bounced with a permanent error returned to the sending server.
quota_hidden
Default | no |
---|---|
Value | boolean |
Plugin | quota plugin |
If yes, hide the quota root from IMAP GETQUOTA commands.
quota_ignore
Default | no |
---|---|
Value | boolean |
Plugin | quota plugin |
If yes, don't include this mailbox or namespace in quota calculations.
Example:
namespace inbox {
mailbox Trash {
quota_ignore = yes
}
}
namespace secondary {
quota_ignore = yes
}
quota_ignore_unlimited
Default | no |
---|---|
Value | boolean |
Plugin | quota plugin |
If yes, ignore the quota root entirely if it has no quota limits. This means no tracking of the quota, and not making it visible to IMAP GETQUOTA commands.
quota_imapc_mailbox_name
Default | INBOX |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
If non-empty, use GETQUOTAROOT <mailbox>
to get the imapc quota root.
Used only with Quota Driver: Imapc.
quota_imapc_root_name
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
If quota_imapc_mailbox_name
is empty, use GETQUOTA <name>
to get the imapc quota.
Some servers may have an empty quota root name. This is why if this setting and
quota_imapc_mailbox_name
both have empty values, this setting is
used. Used only with Quota Driver: Imapc.
quota_mail_size
Default | unlimited |
---|---|
Value | size |
See Also | |
Plugin | quota plugin |
The maximum message size that is allowed to be saved (e.g. by LMTP, IMAP
APPEND or doveadm save
).
quota_mailbox_count
Default | unlimited |
---|---|
Value | unsigned integer |
See Also | |
Plugin | quota plugin |
Changes |
|
Maximum number of mailboxes that can be created. Each namespace is tracked separately, so e.g. shared mailboxes aren't counted towards the user's own limit.
quota_mailbox_message_count
Default | unlimited |
---|---|
Value | unsigned integer |
Plugin | quota plugin |
Changes |
|
Maximum number of messages that can be created in a single mailbox.
quota_message_count
Default | unlimited |
---|---|
Value | unsigned integer |
See Also | |
Plugin | quota plugin |
Maximum number of messages for the Quota Root. This value is still
multiplied by quota_message_percentage
to get the final value
(in this mailbox or namespace). This is reported as the MESSAGE limit in IMAP
GETQUOTA commands. Using 0
as the value means the same as unlimited
.
quota_message_percentage
Default | 100 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | quota plugin |
Multiplier for the quota_message_count
setting (in this
mailbox/namespace).
This may be useful to exceed the regular quota limit in some mailboxes, such as allowing clients that move messages with IMAP COPY+EXPUNGE to Trash folder to temporarily exceed the quota.
Example:
quota_message_count = 10000
namespace inbox {
mailbox Trash {
# 110% * 10000 = 11000 limit
quota_message_percentage = 110
}
}
quota_name
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Name of the quota root. The quota
filter name
refers to this setting.
The quota root name is just an arbitrary string that is sent to IMAP clients, which in turn may show it to the user. The name has no meaning.
quota_over_status
Value | Named Filter |
---|---|
See Also | |
Plugin | quota plugin |
Named filter for executing the overquota-flag script. The execute
setting is required to be specified inside the filter.
quota_over_status_current
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
An identifier that indicates whether the overquota-flag is active for a user.
This identifier is compared against quota_over_status_mask
to
determine if the overquota-flag should be set for the user.
Usually, this value will be loaded via userdb.
quota_over_status_lazy_check
Default | no |
---|---|
Value | boolean |
Plugin | quota plugin |
If enabled, overquota-flag is checked only when current quota usage is going to already be checked anyway. This prevents any additional storage I/O that would be caused by the overquota-flag check.
quota_over_status_mask
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
The search string to match against quota_over_status_current
to
determine if the overquota-flag is set for the user.
Wildcards can be used in a generic way, e.g. *yes
or *TRUE*
.
quota_status_nouser
Default | REJECT Unknown user |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Quota Status Service: Response when asking quota for a nonexistent users.
quota_status_overquota
Default | 554 5.2.2 %{error} |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Quota Status Service: Response when asking quota for a user that is
over the quota. The %{error}
variable expands to the more detailed reason,
which is generally quota_exceeded_message
.
quota_status_success
Default | OK |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Quota Status Service: Response when asking quota for a user that is under the quota.
quota_status_toolarge
Default | quota_status_overquota |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Quota Status Service: Response when asking quota for a mail that is
larger than user's quota_storage_size
or
quota_mail_size
. Empty value defaults to
quota_status_overquota
.
quota_storage_extra
Default | 0 |
---|---|
Value | size |
See Also | |
Plugin | quota plugin |
If set, increase the quota_storage_size
(for the mailbox/namespace)
by this amount. This is an alternative to using
quota_storage_percentage
, although both can also be used.
This may be useful to exceed the regular quota limit in some mailboxes, such as allowing clients that move messages with IMAP COPY+EXPUNGE to Trash folder to temporarily exceed the quota.
Example:
quota_storage_size = 1G
namespace inbox {
mailbox Trash {
# 1G + 100M = 1100M
quota_storage_extra = 100M
}
}
quota_storage_grace
Default | 10 M |
---|---|
Value | size |
See Also | |
Plugin | quota plugin |
If set, allows message deliveries (LDA, LMTP) to exceed quota once by this amount. After the quota is already over the limit, the grace no longer applies. This prevents a situation where some smaller mails may still become delivered, but larger mail deliveries fail, and the user may not have received any warning about reaching the quota limit.
quota_storage_percentage
Default | 100 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | quota plugin |
Multiplier for the quota_storage_size
setting (in this
mailbox/namespace). This is an alternative to using
quota_storage_extra
, although both can also be used.
This may be useful to exceed the regular quota limit in some mailboxes, such as allowing clients that move messages with IMAP COPY+EXPUNGE to Trash folder to temporarily exceed the quota.
Example:
quota_storage_size = 1G
namespace inbox {
mailbox Trash {
# 110% * 1G = 1100M
quota_storage_percentage = 110
}
}
quota_storage_size
Default | unlimited |
---|---|
Value | unsigned integer |
See Also | |
Plugin | quota plugin |
Quota storage size limit for the Quota Root. This value is still
multiplied by quota_storage_percentage
and then increased by
quota_storage_extra
to get the final value (in this mailbox or
namespace). This is reported as the STORAGE limit in IMAP GETQUOTA commands.
Using 0
as the value means the same as unlimited
.
quota_unified_dict_unset
Default | no |
---|---|
Value | boolean |
Plugin | unified-quota plugin |
When updating the unified quota dictionary, specifies whether the dict record is first "unset" before setting it again.
quota_unified_product_name
Default | [None] |
---|---|
Value | string |
Plugin | unified-quota plugin |
Product name for unified quota.
quota_warning
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | quota plugin |
Create a new quota warning. The filter name
refers to quota_warning_name
setting. The execute
setting is required to be specified inside the filter.
The order of quota_warning
filters in the configuration is important:
Only the first warning that matches the rules is executed. This means you must
configure the highest limits first.
quota_warning_name
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | quota plugin |
Name of the quota warning. The
quota_warning
filter name refers to this setting. This name is
only used within the configuration to identify the quota warning - it has no
meaning otherwise.
quota_warning_resource
Default | storage |
---|---|
Value | string |
Allowed Values | storage message |
See Also | |
Plugin | quota plugin |
Which quota resource the quota warning is tracking.
quota_warning_threshold
Default | over |
---|---|
Value | string |
Allowed Values | over under |
See Also | |
Plugin | quota plugin |
Should the quota warning be executed when quota grows over the limit, or when it drops under the limit.
rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Directory where to create *.in
and *.out
rawlog files, one per TCP
connection. The directory must already exist and be writable by the process.
No error is logged if the directory doesn't exist.
Mail user variables
can be used.
Example:
protocol imap {
rawlog_dir = /tmp/rawlog/%{user}
# if you want to put files into user's homedir, use this, do not use ~
#rawlog_dir = %{home}/rawlog
}
recipient_delimiter
Default | + |
---|---|
Value | string |
The separator between the :user and :detail address parts.
redis_db_id
Default | [None] |
---|---|
Value | unsigned integer |
Database number.
redis_expire
Default | infinite |
---|---|
Value | time |
Expiration value for all keys.
redis_host
Default | 127.0.0.1 |
---|---|
Value | string |
Redis server host.
redis_key_prefix
Default | [None] |
---|---|
Value | string |
Prefix to add to all keys.
redis_password
Default | [None] |
---|---|
Value | string |
Redis server password.
redis_port
Default | 6379 |
---|---|
Value | Port Number |
Redis server port.
redis_request_timeout
Default | 30s |
---|---|
Value | time (milliseconds) |
How long to wait for answer before aborting request.
redis_socket_path
Default | [None] |
---|---|
Value | string |
UNIX socket path to the Redis server. This is preferred over
redis_host
if both are set.
rejection_reason
Default | Your message to <%{to}> was automatically rejected:%{literal('\r\n')}%{reason} |
---|---|
Value | String without variables |
A human-readable message for the recipients of bounce messages.
The following variables are allowed, including Global variables
:
Variable Name | Description |
---|---|
%{reason} |
Reason for rejection |
%{subject} |
Original subject line |
%{to} |
Recipient address |
The variable values are obtained from the mail being delivered or the delivery protocol.
rejection_subject
Default | Rejected: %{subject} |
---|---|
Value | String without variables |
See Also |
The Subject: header to use for bounce messages.
See rejection_reason
for the list of variables that can be used.
sendmail_path
Default | /usr/sbin/sendmail |
---|---|
Value | string |
The binary to use for sending email.
Used only if submission_host
is not set.
service
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new service to the list of services. The filter name refers to the
service_name
setting.
service_chroot
Default | [None] |
---|---|
Value | string |
See Also |
The processes are chrooted to this directory at startup. Relative to
base_dir
.
service_client_limit
Default | default_client_limit |
---|---|
Value | unsigned integer |
Maximum number of simultaneous client connections per process. Once this number of connections is received, the next incoming connection will prompt Dovecot to spawn another process.
service_drop_priv_before_exec
Default | no |
---|---|
Value | boolean |
Drop all privileges after forking, but before executing the binary. This is mainly useful for dumping core files on non-Linux OSes, since the processes are no longer in "setuid" mode. This setting can't be used with non-empty chroot.
service_executable
Default | [None] |
---|---|
Value | string |
See Also |
The binary path to execute and its parameters. If the path doesn't begin with
/
, it's relative to base_dir
.
service_extra_groups
Default | [None] |
---|---|
Value | string |
Secondary UNIX groups that this process belongs to.
service_group
Default | [None] |
---|---|
Value | string |
The primary UNIX group (GID) which runs this process.
service_idle_kill_interval
Default | default_idle_kill_interval |
---|---|
Value | time |
Time interval between killing extra idling processes. During the interval the
master process tracks the lowest number of idling processes for the service.
Afterwards it sends SIGINT
notification to that many idling processes. If
the processes are still idling when receiving the signal, they shut down
themselves.
Using infinite
disables the idle-killing.
service_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of the service. The service
filter name refers to this
setting.
service_process_limit
Default | default_process_limit |
---|---|
Value | unsigned integer |
The maximum number of processes that may exist for this service.
service_process_min_avail
Default | [None] |
---|---|
Value | unsigned integer |
See Also |
Minimum number of processes that always should be available to accept more client connections.
Note that if service_client_limit = 1
, this means there are always
that many processes that are not doing anything. When a new process launches,
one of the idling processes will accept the connection and a new idling process
is launched.
service_restart_request_count = 1
processes this decreases the
latency for handling new connections, because there's no need to wait for
processes to fork. This is usually not necessary to to be set. Large
service_process_min_avail
values might be useful in some special
cases, like if there are a lot of POP3 users logging in exactly at the same
time to check mails.service_restart_request_count
to a value !=1
and
service_client_limit
to a value >1
processes it could be set
to the number of CPU cores on the system to balance the load among them. This
is commonly used with *-login
processes.service_restart_request_count
with a value of !=1
and
service_client_limit = 1
processes it is likely not useful to use
this, because generally there are already some idling processes waiting to
accept new connections. However, it's not harmful either, since
service_process_min_avail
includes the existing idling processes
when counting how many new idling processes are needed.service_protocol
Default | [None] |
---|---|
Value | string |
See Also |
If non-empty, this service is enabled only when the protocol name is listed in
protocols
setting.
service_restart_request_count
Default | unlimited |
---|---|
Value | unsigned integer |
Number of client connections to handle until the process kills itself. Use
unlimited
to keep the process alive. 1
means only a single connection
is handled until the process is stopped - this is the most secure choice since
there's no way for one connection's state to leak to the next one. For better
performance this can be set higher, but ideally not unlimited
since more
complex services can have small memory leaks and/or memory fragmentation and
the process should get restarted eventually. For example 100
or 1000
can be good values.
service_type
Default | [None] |
---|---|
Value | string |
See Also |
Type of this service:
Value | Description |
---|---|
<empty> |
The default. |
login |
Used by login services. The login processes have "all processes full" notification fd. It's used by the processes to figure out when no more client connections can be accepted because client and process limits have been reached. The login processes can then kill some of their oldest connections that haven't logged in yet. |
worker |
Used by various worker services. It's normal for worker processes to fill up to service_process_limit , and there shouldn't be a warning logged about it. |
startup |
Creates one process at startup. |
log config anvil |
Treated specially by these specific services. |
service_user
Default | [None] |
---|---|
Value | string |
See Also |
UNIX user (UID) which runs this process. default_login_user
should
be used for type=login
processes and default_internal_user
should be used for other processes that don't require root privileges.
service_vsz_limit
Default | default_vsz_limit |
---|---|
Value | size |
Limit the process's address space (both RLIMIT_DATA
and RLIMIT_AS
if
available). When the space is reached, some memory allocations may start
failing with "Out of memory", or the kernel may kill the process with signal 9.
This setting is mainly intended to prevent memory leaks from eating up all of
the memory, but there can be also legitimate reasons why the process reaches
this limit. For example a huge mailbox may not be accessed if this limit is too
low. Use unlimited
to disable this entirely.
shutdown_clients
Default | yes |
---|---|
Value | boolean |
If enabled, all processes are killed when the master process is shutdown.
Otherwise, existing processes will continue to run. This may be useful to not interrupt earlier sessions, but may not be desirable if restarting Dovecot to apply a security update, for example.
sieve_editheader_header_forbid_add
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
A space-separated list of headers that cannot be added to the message header.
Addition of the Subject:
header cannot be prohibited, as required by
the RFC specification. Therefore, adding this header to this setting has no
effect.
sieve_editheader_header_forbid_delete
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
A space-separated list of headers that cannot be deleted from the message header.
Deleting the Received:
and Auto-Submitted:
fields is always
forbidden, while removing the Subject:
header cannot be prohibited, as
required by the RFC specification. Therefore, adding one of these headers
to this setting has no effect.
sieve_editheader_max_header_size
Default | 2k |
---|---|
Value | size |
See Also | |
Plugin | sieve plugin |
The maximum size in bytes of a header field value passed to the addheader command.
The minimum value for this setting is 1024
bytes.
sieve_execute_bin_dir
Default | [None] |
---|---|
Value | string |
Plugin | sieve-extprograms plugin |
Points to a directory where the plugin looks for programs (shell
scripts) to execute directly for the vnd.dovecot.execute
extension.
sieve_execute_exec_timeout
Default | 10s |
---|---|
Value | time |
Plugin | sieve-extprograms plugin |
Configures the maximum execution time after which the program run by the
vnd.dovecot.execute
extension is forcibly terminated.
sieve_execute_input_eol
Default | crlf |
---|---|
Value | string |
Allowed Values | crlf lf |
Plugin | sieve-extprograms plugin |
Determines the end-of-line character sequence used for the data piped
to external programs run by the vnd.dovecot.execute
extension. The default
is currently "crlf", which represents a sequence of the carriage return (CR) and
line feed (LF) characters. This matches the Internet Message Format
(RFC 5322) and what Sieve itself uses as a line ending. Set this setting to
"lf" to use a single LF character instead.
sieve_execute_socket_dir
Default | [None] |
---|---|
Value | string |
Plugin | sieve-extprograms plugin |
Points to a directory relative to the base_dir
where
the plugin looks for script service sockets for the vnd.dovecot.execute
extension.
sieve_extensions
Default | <see description> |
---|---|
Value | Boolean List |
Plugin | sieve plugin |
The Sieve language extensions available to users.
By default, all supported extensions are available, except for deprecated extensions, extensions that add the ability to change messages, extensions that require explicit configuration, or extensions that are still under development.
Some system administrators may want to disable certain Sieve extensions or enable those that are not available by default.
Supported extensions are listed at Sieve extensions.
Example:
# Enable the vacation-seconds extension in addition to all
# extensions enabled by default.
sieve_extensions {
vacation-seconds = yes
}
sieve_filter_bin_dir
Default | [None] |
---|---|
Value | string |
Plugin | sieve-extprograms plugin |
Points to a directory where the plugin looks for programs (shell
scripts) to execute directly and filter messages through for the
vnd.dovecot.filter
extension.
sieve_filter_exec_timeout
Default | 10s |
---|---|
Value | time |
Plugin | sieve-extprograms plugin |
Configures the maximum execution time after which the program run by the
vnd.dovecot.filter
extension is forcibly terminated.
sieve_filter_input_eol
Default | crlf |
---|---|
Value | string |
Allowed Values | crlf lf |
Plugin | sieve-extprograms plugin |
Determines the end-of-line character sequence used for the data piped
to external programs run by the vnd.dovecot.filter
extension. The default is
currently "crlf", which represents a sequence of the carriage return (CR) and
line feed (LF) characters. This matches the Internet Message Format
(RFC 5322) and what Sieve itself uses as a line ending. Set this setting to
"lf" to use a single LF character instead.
sieve_filter_socket_dir
Default | [None] |
---|---|
Value | string |
Plugin | sieve-extprograms plugin |
Points to a directory relative to the base_dir
where
the plugin looks for script service sockets for the vnd.dovecot.filter
extension.
sieve_global_extensions
Default | sieve_extensions |
---|---|
Value | Boolean List |
Plugin | sieve plugin |
Which Sieve language extensions are only available in global scripts.
This can be used to restrict the use of certain Sieve extensions to administrator control, for instance when these extensions can cause security concerns.
This setting has higher precedence than sieve_extensions
, meaning
that the extensions enabled with this setting are never available to the
user's personal script no matter what is specified for the
sieve_extensions
setting.
The syntax of this setting is identical to sieve_extensions
, with
the difference that extensions are enabled or disabled for exclusive use in
global scripts.
Currently, no extensions are marked as such by default.
sieve_implicit_extensions
Default | [None] |
---|---|
Value | string |
Plugin | sieve plugin |
WARNING
Do not use this setting unless you really need to!
The Sieve language extensions implicitly available to users.
The extensions listed in this setting do not need to be enabled explicitly using the Sieve "require" command.
This behavior directly violates the Sieve standard, but can be necessary for compatibility with some existing implementations of Sieve (notably jSieve).
The syntax and semantics of this setting are otherwise identical to
sieve_extensions
.
sieve_max_actions
Default | 32 |
---|---|
Value | unsigned integer |
Plugin | sieve plugin |
The maximum number of actions that can be performed during a single script execution.
If set to 0
, no limit on the total number of actions is enforced.
sieve_max_cpu_time
Default | 30s |
---|---|
Value | time |
Plugin | sieve plugin |
The maximum amount of CPU time that a Sieve script is allowed to use while executing. If the execution exceeds this resource limit, the script ends with an error, causing the implicit "keep" action to be executed.
This limit is not only enforced for a single script execution, but also
cumulatively for the last executions within a configurable timeout
(see sieve_resource_usage_timeout
).
sieve_max_redirects
Default | 4 |
---|---|
Value | unsigned integer |
Plugin | sieve plugin |
The maximum number of redirect actions that can be performed during a single script execution.
0
means redirect is prohibited.
sieve_notify_mailto_envelope_from
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
Defines the source of the notification sender address for e-mail notifications.
sieve_pipe_bin_dir
Default | [None] |
---|---|
Value | string |
Plugin | sieve-extprograms plugin |
Points to a directory where the plugin looks for programs (shell
scripts) to execute directly and pipe messages to for the vnd.dovecot.pipe
extension.
sieve_pipe_exec_timeout
Default | 10s |
---|---|
Value | time |
Plugin | sieve-extprograms plugin |
Configures the maximum execution time after which the program run by the
vnd.dovecot.pipe
extension is forcibly terminated.
sieve_pipe_input_eol
Default | crlf |
---|---|
Value | string |
Allowed Values | crlf lf |
Plugin | sieve-extprograms plugin |
Determines the end-of-line character sequence used for the data piped
to external programs run by the vnd.dovecot.pipe
extension. The default is
currently "crlf", which represents a sequence of the carriage return (CR) and
line feed (LF) characters. This matches the Internet Message Format
(RFC 5322) and what Sieve itself uses as a line ending. Set this setting to
"lf" to use a single LF character instead.
sieve_pipe_socket_dir
Default | [None] |
---|---|
Value | string |
Plugin | sieve-extprograms plugin |
Points to a directory relative to the base_dir
where
the plugin looks for script service sockets for the vnd.dovecot.pipe
extension.
sieve_plugins
Default | [None] |
---|---|
Value | Boolean List |
Plugin | sieve plugin |
The Pigeonhole Sieve interpreter can have plugins of its own.
Using this setting, the used plugins can be specified.
Check Sieve plugins for available plugins.
sieve_quota_script_count
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | sieve plugin |
The maximum number of personal Sieve scripts a single user can have.
Default is 0
, which is unlimited.
sieve_quota_storage_size
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | sieve plugin |
The maximum amount of disk storage a single user's scripts may occupy.
Default is 0
, which is unlimited.
sieve_redirect_envelope_from
Default | sender |
---|---|
Value | string |
Plugin | sieve plugin |
Specifies what envelope sender address is used for redirected messages.
Normally, the Sieve redirect
command copies the sender address for the
redirected message from the processed message So, the redirected message
appears to originate from the original sender.
The following options are supported for this setting:
Option | Description |
---|---|
sender |
The sender address is used |
recipient |
The final recipient address is used |
orig_recipient |
The original recipient is used |
user_email |
The user's primary address is used. This is configured with the sieve_user_email setting. If that setting is not configured, user_email is equal to sender . |
postmaster |
The postmaster_address configured for LDA/LMTP. |
<user@domain> |
Redirected messages are always sent from user@domain . The angle brackets are mandatory. The null <> address is also supported. |
When the envelope sender of the processed message is the null address
<>
, the envelope sender of the redirected message is also always
<>
, irrespective of what is configured for this setting.
sieve_resource_usage_timeout
Default | 1h |
---|---|
Value | time |
Plugin | sieve plugin |
To prevent abuse, the Sieve interpreter can record resource usage of a Sieve
script execution in the compiled binary if it is significant. Currently, this
happens when CPU system + user time exceeds 1.5 seconds for one execution.
Such high resource usage is summed over time in the binary and once that
cumulative resource usage exceeds the limits (sieve_max_cpu_time
),
the Sieve script is disabled in the binary for future execution, even if an
individual execution exceeded no limits.
If the last time high resource usage was recorded is older than
sieve_resource_usage_timeout
, the resource usage in the binary is
reset. This means that the Sieve script is only disabled when the limits are
cumulatively exceeded within this timeout. With the default configuration this
means that the Sieve script is only disabled when the total CPU time of Sieve
executions that lasted more than 1.5 seconds exceeds 30 seconds in the last
hour.
A disabled Sieve script can be reactivated by the user by uploading a new version of the Sieve script after the excessive resource usage times out. An administrator can force reactivation by forcing a script compile (e.g. using the sievec command line tool).
sieve_script
Default | [None] |
---|---|
Value | Named List Filter |
See Also | |
Plugin | sieve plugin |
Creates a new Sieve script storage to the list of script storages. The filter
name refers to the sieve_script_storage
setting.
Example:
sieve_script personal {
[...]
}
sieve_script_active_path
Default | ~/.dovecot.sieve |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
When ManageSieve server is used, one script in the storage can be active; i.e., evaluated at delivery.
This setting only applies when sieve_script_driver = file
. For that
storage driver, the active script in the storage directory is pointed to by a
symbolic link.
This setting configures where this symbolic link is located. If the
sieve_script_path
setting points to a regular file, this setting has
no effect (and ManageSieve cannot be used).
sieve_script_bin_path
Default | personal |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
Points to the directory where the compiled binaries for this script location are stored. This directory is created automatically if possible.
If this setting is not configured, the behavior depends on the storage driver. For the file storage driver, the binaries are for example stored in the same directory as the corresponding sieve scripts.
Don't specify the same directory for multiple script storages (e.g. with different types), as this will result in undefined behavior. For one, the same script name could point to different scripts for different storages, leading to a conflict, because the storages will try to use the same binary file. Multiple mail users can share a single script directory if the associated script storage configuration is identical between users and all users share the same system credentials (uid, gid). All users will then use the same scripts for that storage type.
sieve_script_cause
Default | delivery |
---|---|
Value | Boolean List |
See Also | |
Plugin | sieve plugin |
The causes for executing Sieve scripts from this storage. This is currently only
relevant for the IMAPSieve plugin. For standard Sieve execution at message
delivery the cause is "delivery". Other causes can be append
, copy
and
flag
.
sieve_script_driver
Default | file |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The Sieve script storage driver to use. See Script storage drivers.
sieve_script_ldap_filter
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The LDAP search filter that is used to find the entry containing the Sieve script.
These variables can be used:
Variable | Description |
---|---|
%{user} |
username |
%{user | username} |
user part in user@domain, same as %{user} if there's no domain |
%{user | domain} |
domain part in user@domain, empty if user there's no domain |
%{home} |
user's home directory |
%{name} |
name of the Sieve script |
sieve_script_ldap_modified_attribute
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The name of the attribute used to detect modifications to the LDAP entry.
sieve_script_ldap_script_attribute
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The name of the attribute containing the Sieve script.
sieve_script_name
Default | personal |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The (default) name of a Sieve script retrieved from this storage. If the name of the Sieve script cannot be derived somehow from the storage (e.g. from a file name) and the storage for a single script is specified, this option is required (e.g. for dict locations that must point to a particular script).
If the name of the script is derived from the storage, the value of the
sieve_script_name
setting overrides that name. If the Sieve
interpreter explicitly queries for a specific name (e.g. to let the Sieve
Sieve include extension retrieve a script from the
global script storage),
this setting has no effect.
For the Sieve script storage with type default, the name is required to make the default script visible in ManageSieve. See 'Sieve visible default script'
sieve_script_path
Default | ~/sieve |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
A file system path pointing to a Sieve script file or a directory containing one
or more Sieve script files with names structured as <script-name>.sieve
.
This setting only applies when sieve_script_driver = file
sieve_script_precedence
Default | infinite |
---|---|
Value | unsigned integer |
See Also | |
Plugin | sieve plugin |
The precedence of this Sieve storage in the configuration. Normally, script storages with matching type and cause are accessed in the order these are specified in the configuration. This setting can be used to configure an explicit order. Storages will be accessed with lower precedence first.
sieve_script_storage
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The identifier of the Sieve script storage. This is used only in configurations
and by command line tools - it's not visible to the user. The
sieve_script
filter refers to this setting.
sieve_script_type
Default | personal |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The type of the configured Sieve script storage. See Script storage types.
sieve_spamtest_score_max_header
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
Value format: <header-field> [ ":" <regexp> ]
Some spam scanners include the maximum score value in one of their status
headers. Using this setting, this maximum can be extracted from the message
itself instead of specifying the maximum manually using the setting
sieve_spamtest_score_max_value
.
The syntax is identical to the sieve_spamtest_status_header
setting. This setting cannot be used together with
sieve_spamtest_score_max_value
.
sieve_spamtest_score_max_value
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
This statically specifies the maximum value a numeric spam score can have. This
setting cannot be used together with
sieve_spamtest_score_max_header
.
This setting can specify a fractional score with a decimal point.
sieve_spamtest_status_header
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
Value format: <header-field> [ ":" <regexp> ]
This specifies the header field that contains the result information of the spam scanner and it may express the syntax of the content of the header.
If no matching header is found in the message, the spamtest command will
match against 0
.
This is a structured setting. The first part specifies the header field name. Optionally, a POSIX regular expression follows the header field name, separated by a colon. Any white space directly following the colon is not part of the regular expression. If the regular expression is omitted, any header content is accepted and the full header value is used. When a regular expression is used, it must specify one match value (inside brackets) that yields the desired spam scanner result.
If the header does not match the regular expression or if no value match is
found, the spamtest test will match against 0
during Sieve script
execution.
sieve_spamtest_status_type
Default | [None] |
---|---|
Value | string |
Allowed Values | score strlen text |
See Also | |
Plugin | sieve plugin |
This specifies the type of status result that the spam/virus scanner produces.
This can either be a numeric score (score
), a string of identical
characters (strlen
), e.g. '*******'
, or a textual description
(text
), e.g. 'Spam'
or 'Not Spam'
(see
sieve_spamtest_text_value
).
sieve_spamtest_text_value
Default | [None] |
---|---|
Value | String List |
See Also | |
Plugin | sieve plugin |
When the sieve_spamtest_status_type
setting is set to
text
, this setting specifies what values the spamtest test will match
against to obtain the score value. For each recognized numeric score value this
string list setting yields the text to match against. Score values between 0
and 10 are recognized.
Example:
sieve_spamtest_status_header = X-Spam-Verdict
sieve_spamtest_status_type = text
sieve_spamtest_text_value {
1 = Not Spam
10 = Spam
}
sieve_trace_addresses
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | sieve plugin |
Enables showing byte code addresses in the trace output, rather than only the source line numbers.
sieve_trace_debug
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | sieve plugin |
Enables highly verbose debugging messages that are usually only useful for developers.
sieve_trace_dir
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The directory where trace files are written.
Trace debugging is disabled if this setting is not configured or if the directory does not exist.
If the path is relative or it starts with ~/
it is interpreted relative
to the current user's home directory.
sieve_trace_level
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
The verbosity level of the trace messages. Trace debugging is disabled if this setting is not configured. Options are:
Option | Description |
---|---|
actions |
Only print executed action commands, like keep, fileinto, reject, and redirect. |
commands |
Print any executed command, excluding test commands. |
tests |
Print all executed commands and performed tests. |
matching |
Print all executed commands, performed tests and the values matched in those tests. |
sieve_user_email
Default | [None] |
---|---|
Value | string |
Plugin | sieve plugin |
The primary e-mail address for the user.
This is used as a default when no other appropriate address is available for sending messages.
If this setting is not configured, either the postmaster or null <>
address is used as a sender, depending on the action involved.
This setting is important when there is no message envelope to extract addresses from, such as when the script is executed in IMAP.
sieve_user_log_path
Default | [None] |
---|---|
Value | string |
Plugin | sieve plugin |
The path to the file where the user log file is written.
A default location is used if this setting is not explicitly configured:
If the main user's personal Sieve script storage (as configured with
sieve_script
uses the File storage driver, the logfile is
set to <filename>.log
by default.
If the script is not stored as a file, the default user log file is ~/.dovecot.sieve.log
.
sieve_vacation_check_recipient
Default | yes |
---|---|
Value | boolean |
See Also | |
Plugin | sieve plugin |
This setting determines whether the checks for implicit delivery are performed. If this is skipped, this means that the vacation command does not verify that the message is explicitly addressed at the recipient.
Use this option with caution. Specifying no
will violate the Sieve
standards and can cause vacation replies to be sent for messages not
directly addressed at the recipient.
sieve_vacation_default_period
Default | 7d |
---|---|
Value | time |
See Also | |
Plugin | sieve plugin |
Specifies the default period that is used when no :days
or :seconds
tag is specified.
The configured value must lie between sieve_vacation_min_period
and sieve_vacation_max_period
.
sieve_vacation_max_period
Default | 60d |
---|---|
Value | time |
See Also | |
Plugin | sieve plugin |
Specifies the maximum period that can be specified for the :days
tag of
the vacation command.
The configured value must be larger than sieve_vacation_min_period
.
A value of 0
has a special meaning: it indicates that there is no upper
limit.
sieve_vacation_min_period
Default | 1d |
---|---|
Value | time |
See Also | |
Plugin | sieve plugin |
Specifies the minimum period that can be specified for the :days
and
:seconds
tags of the vacation command.
A minimum of 0
indicates that users are allowed to make the Sieve
interpreter send a vacation response message for every incoming message
that meets the other reply criteria (refer to RFC 5230). A value of zero
is not recommended.
sieve_vacation_send_from_receipt
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | sieve plugin |
This setting determines whether vacation messages are sent with the SMTP
MAIL FROM
envelope address set to the recipient address of the Sieve
script owner.
Normally this is set to <>
, which is the default as recommended in the
specification. This is meant to prevent mail loops. However, there are
situations for which a valid sender address is required and this setting
can be used to accommodate for those.
sieve_vacation_use_original_recipient
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | sieve plugin |
This specifies whether the original envelope recipient should be used in the check for implicit delivery.
The vacation command checks headers of the incoming message, such as
To:
and Cc:
for the address of the recipient, to verify that the
message is explicitly addressed at the recipient. If the recipient address
is not found, the vacation action will not trigger a response to prevent
sending a reply when it is not appropriate.
Normally only the final recipient address is used in this check. This setting allows including the original recipient specified in the SMTP session if available.
This is useful to handle mail accounts with aliases. Use this option with caution: if you are using aliases that point to more than a single account, as senders can get multiple vacation responses for a single message.
Use the LDA -a
option or the LMTP/LDA lda_original_recipient_header
setting to
make the original SMTP recipient available to Sieve.
sieve_virustest_score_max_header
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
Value Format: <header-field> [ ":" <regexp> ]
Some spam scanners include the maximum score value in one of their status
headers. Using this setting, this maximum can be extracted from the message
itself instead of specifying the maximum manually using the setting
sieve_virustest_score_max_value
.
The syntax is identical to sieve_virustest_status_header
. This
setting cannot be used together with
sieve_virustest_score_max_value
.
sieve_virustest_score_max_value
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
This statically specifies the maximum value a numeric spam score can have. This
setting cannot be used together with
sieve_virustest_score_max_header
.
This setting can specify a fractional score with a decimal point.
sieve_virustest_status_header
Default | [None] |
---|---|
Value | string |
See Also | |
Plugin | sieve plugin |
Value Format: <header-field> [ ":" <regexp> ]
This specifies the header field that contains the result information of the spam scanner and it may express the syntax of the content of the header.
If no matching header is found in the message, the spamtest command will
match against 0
.
This is a structured setting. The first part specifies the header field name. Optionally, a POSIX regular expression follows the header field name, separated by a colon. Any white space directly following the colon is not part of the regular expression. If the regular expression is omitted, any header content is accepted and the full header value is used. When a regular expression is used, it must specify one match value (inside brackets) that yields the desired spam scanner result.
If the header does not match the regular expression or if no value match is
found, the spamtest test will match against 0
during Sieve script
execution.
sieve_virustest_status_type
Default | [None] |
---|---|
Value | string |
Allowed Values | score strlen text |
See Also | |
Plugin | sieve plugin |
This specifies the type of status result that the spam/virus scanner produces.
This can either be a numeric score (score
), a string of identical
characters (strlen
), e.g. '*******'
, or a textual description
(text
), e.g. 'Spam'
or 'Not Spam'
(see
sieve_virustest_text_value
).
sieve_virustest_text_value
Default | [None] |
---|---|
Value | String List |
See Also | |
Plugin | sieve plugin |
When the sieve_virustest_status_type
setting is set to
text
, this setting specifies what values the spamtest test will match
against to obtain the score value. For each recognized numeric score value this
string list setting yields the text to match against. Score values between 0
and 10 are recognized.
Example:
sieve_virustest_status_header = X-VirusCheck
sieve_virustest_status_type = text
sieve_virustest_text_value {
1 = Clean
2 = Presumed Clean
3 = Not sure
4 = Almost Certain
5 = Definitely
}
sieve_zimbra_addressbook_dict
Default | [None] |
---|---|
Value | string |
Plugin | sieve-zimbra-compat plugin |
The URI for the dict lookup. This should normally point to the dict proxy, so that asynchronous batch lookups are possible.
sieve_zimbra_bare_extensions
Default | [None] |
---|---|
Value | string |
Plugin | sieve-zimbra-compat plugin |
A space-separated list of all the Zimbra extensions that are made available without the prefix.
Note that this hides any standard extension with the same name as one of Zimbra extensions; e.g., the "date" extension will become the Zimbra version once the "date" extension is listed in this setting.
sieve_zimbra_notify_as_redirect
Default | no |
---|---|
Value | boolean |
Plugin | sieve-zimbra-compat plugin |
If enabled, executes the "vnd.zimbra.notify" action as a "redirect" action.
sieve_zimbra_notify_envelope_from
Default | sieve_notify_mailto_envelope_from or postmaster |
---|---|
Value | string |
Plugin | sieve-zimbra-compat plugin |
Specifies what envelope sender address is used for notification emails. The following values are supported for this setting:
Value | Description |
---|---|
sender |
The sender address is used. |
recipient |
The final recipient address is used. |
orig_recipient |
The original recipient is used. |
user_email |
The user's primary address is used. This is configured with sieve_user_email . If that setting is not configured, user_mail is equal to recipient . |
postmaster |
The postmaster_address configured for the LDA. |
<user@domain> |
Notifications are always sent from user@domain. The angle brackets are mandatory. The null ("<>") address is also supported. |
The "From" header is based on this setting as well. When the envelope sender of the processed message is the null address "<>", the envelope sender of the notification is also always "<>", irrespective of what is configured for this setting.
sql_driver
Default | [None] |
---|---|
Value | string |
SQL driver to use for any SQL database accesses.
sqlite_journal_mode
Default | wal |
---|---|
Value | string |
Allowed Values | delete wal |
Allows using write-ahead logging mode for database.
sqlite_path
Default | [None] |
---|---|
Value | string |
Path to the sqlite database.
sqlite_readonly
Default | no |
---|---|
Value | boolean |
Specifies that this database is read-only and should not be attempted to be created or written to.
ssl
Default | yes |
---|---|
Value | string |
Allowed Values | yes no required |
See Also |
The level of SSL support. This setting affects both the implicit SSL ports and the STARTTLS commands.
Options:
no
yes
required
auth_allow_cleartext
in that even non-cleartext
authentication mechanisms aren't allowed without SSL/TLS.This setting affects the secured
state of connections. See
secured connections.
ssl_cipher_list
Default | ALL:!kRSA:!SRP:!kDHd:!DSS:!aNULL:!eNULL:!EXPORT:!DES:!3DES:!MD5:!PSK:!RC4:!ADH:!LOW@STRENGTH (for ssl_server, empty for ssl_client) |
---|---|
Value | string |
See Also |
The list of SSL ciphers to use for TLSv1.2 and below connections, in order
of preference. Use ssl_cipher_suites
for TLSv1.3 connections.
You do not need to edit this setting in order to disable specific SSL
protocols; that is best done with ssl_min_protocol
instead.
This setting is used for both incoming and outgoing SSL connections.
ssl_cipher_suites
Default | <OpenSSL version specific> |
---|---|
Value | string |
See Also |
The list of SSL cipher suites to use for TLSv1.3 connections, in order of
preference. Use ssl_cipher_list
for TLSv1.2 and below connections.
This setting is used for both incoming and outgoing SSL connections.
ssl_client
Value | Named Filter |
---|---|
See Also |
Named filter, which can be used for specifying SSL client settings.
ssl_client_ca_dir
Default | [None] |
---|---|
Value | string |
See Also |
The directory where trusted SSL CA certificates can be found. For example
/etc/ssl/certs
. These certificates are used only for outgoing SSL
connections (e.g. with the imapc driver).
For extra security you might want to point to a directory containing certificates only for the CAs that are actually needed for the server operation instead of all the root CAs.
ssl_client_ca_file
Default | [None] |
---|---|
Value | File |
See Also |
File containing the trusted SSL CA certificates. For example
/etc/ssl/certs/ca-bundle.crt
.
These certificates are used only for outgoing SSL connections (e.g. with the imapc driver).
Note that this setting isn't recommended to be used with large CA bundles,
because all the certificates are read into memory. This leads to excessive
memory usage, because it gets multiplied by the number of imap processes.
It's better to either use ssl_client_ca_dir
setting or
use a CA bundle that only contains the CAs that are actually necessary for
the server operation.
ssl_client_cert_file
Default | [None] |
---|---|
Value | File |
See Also |
Public SSL certificate used for outgoing SSL connections. This is generally needed only when the server authenticates the client using the certificate.
ssl_client_key_file
is also needed for the private certificate.
Example:
ssl_client_cert_file = /etc/dovecot/dovecot-client.crt
ssl_client_key_file = /etc/dovecot/dovecot-client.key
ssl_client_key_file
Default | [None] |
---|---|
Value | File |
See Also |
Private key for ssl_client_cert_file
. If it is password protected,
set the password with ssl_client_key_password
.
Example:
ssl_client_cert_file = /etc/dovecot/dovecot-client.crt
ssl_client_key_file = /etc/dovecot/dovecot-client.key
ssl_client_key_password
Default | [None] |
---|---|
Value | string |
See Also |
Password for the ssl_client_key_file
.
ssl_client_require_valid_cert
Default | yes |
---|---|
Value | boolean |
See Also |
Require a valid certificate when connecting to external SSL services?
ssl_crypto_device
Default | [None] |
---|---|
Value | string |
See Also |
Available Values: <Obtain by running openssl engine
command>
Which SSL crypto device to use.
ssl_curve_list
Default | <defaults from the SSL library> |
---|---|
Value | string |
See Also |
Colon separated list of elliptic curves to use, in order of preference. An empty value uses the defaults from the SSL library.
This setting is used for both incoming and outgoing SSL connections.
Example:
ssl_curve_list = P-521:P-384:P-256
ssl_min_protocol
Default | TLSv1.2 |
---|---|
Value | string |
See Also |
The minimum SSL protocol version Dovecot accepts.
This setting is used for both incoming and outgoing SSL connections.
Supported values are:
ANY
WARNING
This value is meant for tests only. It should not be used in any deployment of any value/relevance.
TLSv1
TLSv1.1
TLSv1.2
TLSv1.3
LATEST
ssl_options
Default | [None] |
---|---|
Value | string |
Allowed Values | compression no_ticket |
See Also |
Additional options for SSL.
This setting is used for both incoming and outgoing SSL connections.
Currently supported options are:
compression
no_ticket
ssl_server
Value | Named Filter |
---|---|
See Also |
Named filter, which can be used for specifying SSL server settings.
ssl_server_alt_cert_file
Default | [None] |
---|---|
Value | File |
See Also |
Alternative SSL certificate that will be used if the algorithm differs from the primary certificate.
This is useful when migrating to e.g. an ECDSA certificate.
Example:
ssl_server_alt_cert_file = /path/to/alternative/cert.pem
ssl_server_alt_key_file
Default | [None] |
---|---|
Value | File |
See Also |
Private key for ssl_server_alt_cert_file
.
Example:
ssl_server_alt_key_file = /path/to/alternative/key.pem
ssl_server_alt_cert_file = /path/to/alternative/cert.pem
ssl_server_ca_file
Default | [None] |
---|---|
Value | File |
See Also |
List of SSL CA certificates that are used to validate whether SSL certificates presented by incoming imap/pop3/etc. client connections are valid.
Example:
ssl_server_ca_file = /etc/dovecot/ca.crt
ssl_server_request_client_cert = yes
auth_ssl_require_client_cert = yes
ssl_server_cert_file
Default | [None] |
---|---|
Value | File |
See Also |
Path to the PEM-encoded X.509 SSL/TLS certificate presented for incoming imap/pop3/etc. client connections.
The ssl_server_key_file
is also needed for the private certificate.
Example:
ssl_server_cert_file = /etc/ssl/private/dovecot.crt
ssl_server_key_file = /etc/ssl/private/dovecot.key
ssl_server_cert_username_field
Default | commonName |
---|---|
Value | string |
See Also |
Field name in the SSL client certificate that is used for
auth_ssl_username_from_cert
.
The most common choices are commonName
and x500UniqueIdentifier
.
Note: auth_ssl_username_from_cert
MUST be enabled.
ssl_server_dh_file
Default | [None] |
---|---|
Value | File |
See Also |
Path to the Diffie-Hellman parameters file. This setting isn't needed if using only ECDSA certificates.
You can generate a new parameters file by, for example, running
openssl dhparam -out dh.pem 4096
on a machine with sufficient entropy
(this may take some time).
Example:
ssl_server_dh_file = /path/to/dh.pem
ssl_server_key_file
Default | [None] |
---|---|
Value | File |
See Also |
Path to the PEM-encoded X.509 SSL/TLS private key for
ssl_server_cert_file
.
Example:
ssl_server_cert_file = /etc/ssl/private/dovecot.crt
ssl_server_key_file = /etc/ssl/private/dovecot.key
ssl_server_key_password
Default | [None] |
---|---|
Value | string |
See Also |
The password to use if ssl_server_key_file
is password-protected.
Since this file is often world-readable, you may wish to specify the path
to a file containing the password, rather than the password itself, by
using the format ssl_server_key_password = <path
here. The path should
be to a root-owned file with mode 0600.
Alternatively, you can supply the password via the -p parameter at startup.
ssl_server_prefer_ciphers
Default | client |
---|---|
Value | string |
Allowed Values | client server |
See Also |
Whether to give preference to the server's cipher list over a client's list.
ssl_server_request_client_cert
Default | no |
---|---|
Value | boolean |
See Also | |
Changes |
|
If enabled, the imap/pop3/etc. client is requested to send an SSL certificate.
Note: This setting doesn't yet require the certificate to be valid or
to even exist. See auth_ssl_require_client_cert
.
ssl_server_require_crl
Default | yes |
---|---|
Value | boolean |
See Also |
If enabled, the CRL check must succeed for presented SSL client
certificate and any intermediate certificates. The CRL list is generally
appended to the ssl_server_ca_file
file.
stats_server
Value | Named Filter |
---|
Filter for stats server specific settings.
stats_writer_socket_path
Default | stats-writer |
---|---|
Value | string |
The path to the stats-writer socket.
submission_add_received_header
Default | yes |
---|---|
Value | boolean |
Changes |
|
Controls if "Received:" header should be added to mails by the submission backend.
submission_client_workarounds
Default | [None] |
---|---|
Value | Boolean List |
Configures the list of active workarounds for Submission client bugs.
Supported workaround identifiers are:
implicit-auth-external
mailbox-for-path
whitespace-before-path
submission_host
Default | [None] |
---|---|
Value | URL |
Use this SMTP submission host to send messages.
Overrides sendmail_path
value, if set.
submission_logout_format
Default | in=%{input} out=%{output} |
---|---|
Value | String without variables |
The SMTP Submission logout format string.
Variables supported, including Mail user variables
:
Variable Name | Description |
---|---|
%{input} |
Bytes read from client |
%{output} |
Bytes sent to client |
%{command_count} |
Number of commands received from client |
%{reply_count} |
Number of replies sent to client |
%{transaction_id} |
ID of the current transaction, if any |
submission_max_mail_size
Default | 40M |
---|---|
Value | size |
The maximum message size accepted for relay.
This value is announced in the SMTP SIZE capability.
If empty, this value is either determined from the relay server or left unlimited if no limit is known; the relay MTA will reply with error if some unknown limit exists there, which will be passed back to the client.
submission_max_recipients
Default | [None] |
---|---|
Value | unsigned integer |
Maximum number of recipients accepted per connection.
0
means unlimited.
submission_relay_command_timeout
Default | 5mins |
---|---|
Value | time (milliseconds) |
Timeout for SMTP commands issued to the submission service's relay server.
The timeout is reset every time more data is being sent or received.
submission_relay_connect_timeout
Default | 30secs |
---|---|
Value | time (milliseconds) |
Timeout for connecting to and logging into the submission service's relay server.
submission_relay_host
Default | [None] |
---|---|
Value | string |
Host of the relay server (REQUIRED to provide the submission service).
submission_relay_master_user
Default | [None] |
---|---|
Value | string |
Master user name for authentication to the relay MTA if authentication is required.
submission_relay_max_idle_time
Default | 29mins |
---|---|
Value | time |
Submission relay max idle time for connection to relay MTA.
submission_relay_password
Default | [None] |
---|---|
Value | string |
Password for authentication to the relay MTA if authentication is required.
submission_relay_port
Default | 25 |
---|---|
Value | Port Number |
Port for the submission relay server.
submission_relay_rawlog_dir
Default | [None] |
---|---|
Value | string |
See Also |
Write protocol logs for relay connection to this directory for debugging.
Mail user variables
can be used.
submission_relay_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no smtps starttls |
If enabled, SSL/TLS is used for the connection to the relay server.
Available values:
no
smtps
starttls
submission_relay_ssl_verify
Default | yes |
---|---|
Value | boolean |
If enabled, TLS certificate of the relay server must be verified.
submission_relay_trusted
Default | no |
---|---|
Value | boolean |
If enabled, the relay server is trusted.
Determines whether we try to send (Postfix-specific) XCLIENT data to the relay server (only if enabled).
submission_relay_user
Default | [None] |
---|---|
Value | string |
User name for authentication to the relay MTA if authentication is required.
submission_ssl
Default | no |
---|---|
Value | string |
Allowed Values | no smtps starttls |
See Also |
If enabled, use SSL/TLS to connect to submission_host
.
Available values:
no
smtps
starttls
submission_timeout
Default | 30secs |
---|---|
Value | time |
See Also |
Timeout for submitting outgoing messages.
syslog_facility
Default | mail |
---|---|
Value | string |
The syslog facility used if you're logging to syslog.
textcat_config_path
Default | <textcat dir> |
---|---|
Value | string |
See Also | |
Plugin | fts plugin |
Path to the textcat/exttextcat configuration file, which lists the supported languages.
This is recommended to be changed to point to a minimal version of a
configuration that supports only the languages listed in
language
.
Doing this improves language detection performance during indexing and also makes the detection more accurate.
Example:
textcat_config_path = /usr/share/libexttextcat/fpdb.conf
trash_priority
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | trash plugin |
If non-zero, enables the trash plugin for the mailbox with the specified priority. Mailboxes with smaller priority number are emptied before mailboxes with a larger priority number. If there are multiple mailboxes with the same priority, expunge the oldest mail from them first.
Example where Trash is emptied before Spam:
namespace inbox {
mailbox Trash {
trash_priority = 1
}
mailbox Spam {
trash_priority = 2
}
}
unix_listener
Default | [None] |
---|---|
Value | Named List Filter |
See Also |
Creates a new UNIX listener for a service
. The filter name refers
to the unix_listener_path
setting.
unix_listener_group
Default | [None] |
---|---|
Value | string |
Group of the listener file. Empty (default) means GID 0 (root/wheel).
unix_listener_mode
Default | 0600 |
---|---|
Value | octal unsigned integer |
Mode of the file. Note that 0600
is an octal value, while 600
is a
different decimal value. Setting mode to 0
disables the listener.
unix_listener_path
Default | [None] |
---|---|
Value | String without variables |
See Also |
Path to the UNIX socket file, relative to base_dir
setting. The
unix_listener
filter name refers to this setting.
unix_listener_type
Default | [None] |
---|---|
Value | string |
Changes |
|
Listener type. This string value has service-specific meaning and is used to distinguish different listener types that one service may employ.
unix_listener_user
Default | [None] |
---|---|
Value | string |
Owner of the listener file. Empty (default) means UID 0 (root).
userdb
Default | [None] |
---|---|
Value | Named List Filter |
Dependencies | |
See Also |
Creates a new userdb. The filter name refers to the
userdb_name
setting.
userdb_args
Default | [None] |
---|---|
Value | string |
Arguments for the userdb driver. The format of this value depends on the userdb driver. Each one uses different args.
userdb_driver
Default | [None] |
---|---|
Value | string |
See Also |
The driver used for this user database. If empty, defaults to
userdb_name
. See userdb for the list of available
drivers.
userdb_fields
Default | [None] |
---|---|
Value | String List |
See Also |
Userdb fields (and userdb: Extra Fields). The values can contain
%variables. All %variables
used here reflect
the state after the current userdb lookup, and can refer to fields returned
by previous userdb lookups. Depending on the userdb driver, it can also refer
to variable fields returned by it (e.g. %{ldap:fieldName}
).
INFO
The LDAP driver provides additional specific variables, see LDAP authentication for more details.
For example:
userdb ldap {
fields {
user = %{ldap:userId}
home = /home/%{ldap:mailboxPath}
uid = vmail
gid = vmail
}
}
userdb_fields_import_all
Default | yes For userdb ldap the default is no . |
---|---|
Value | boolean |
See Also |
If yes, import all fields returned by the userdb lookup. If no, require
userdb_fields
to explicitly add wanted fields.
userdb_ldap_filter
Default | [None] |
---|---|
Value | string |
Filter for userdb lookup.
Variables that can be used (see Settings variables
for full list).
Example:
userdb ldap {
filter = (&(objectClass=posixAccount)(uid=%{user}))
#...
}
userdb_ldap_iterate_fields
Default | [None] |
---|---|
Value | String List |
Attributes to get a list of all users. Currently only the attribute
user
is supported.
Example:
userdb ldap {
iterate_filter = (objectClass=smiMessageRecipient)
iterate_attrs {
user = %{ldap:mailRoutingAddress}
}
}
userdb_ldap_iterate_filter
Default | [None] |
---|---|
Value | string |
Filter to get a list of all users.
userdb ldap {
iterate_filter = (objectClass=smiMessageRecipient)
iterate_attrs {
user = %{ldap:mailRoutingAddress}
}
}
userdb_name
Default | [None] |
---|---|
Value | string |
See Also |
Name of the userdb. The userdb
filter name refers to this setting.
If the userdb_driver
setting is empty, the userdb_name
is used
as the driver. This allows doing e.g.:
userdb passwd-file {
passwd_file_path = /etc/dovecot/passwd
userdb_result_failure
Default | continue |
---|---|
Value | string |
Allowed Values | return-ok return return-fail continue continue-ok continue-fail |
See Also |
What to do if the user was not found from the userdb. Possible values and their meaning are described fully at userdb: Result Values.
userdb_result_internalfail
Default | continue |
---|---|
Value | string |
Allowed Values | return-ok return return-fail continue continue-ok continue-fail |
See Also |
What to do after the userdb failed due to an internal error.
Possible values and their meaning are described fully at
userdb: Result Values. If any of the userdbs had an internal failure
and the final userdb also returns continue
the authentication will fail
with internal error
.
userdb_result_success
Default | return-ok |
---|---|
Value | string |
Allowed Values | return-ok return return-fail continue continue-ok continue-fail |
See Also |
What to do if the user was successfully found from the userdb. Possible values and their meaning are described fully at userdb: Result Values.
userdb_skip
Default | never |
---|---|
Value | string |
Allowed Values | never found notfound |
Configures when userdbs should be skipped:
Value | Description |
---|---|
never |
Never skip over this userdb. |
found |
Skip if an earlier userdbs already found the user. |
notfound |
Skip if previous userdbs haven't yet found the user. |
userdb_sql_iterate_query
Default | [None] |
---|---|
Value | string |
SQL query to list all available usernames.
userdb_sql_query
Default | [None] |
---|---|
Value | string |
SQL query to lookup the userdb fields.
userdb_static_allow_all_users
Default | no |
---|---|
Value | boolean |
Changes |
|
Skip user existence verification via passdb lookup.
userdb_use_worker
Default | no specific userdb have different defaults |
---|---|
Value | boolean |
If yes
, run the userdb lookup in auth-worker process instead of the main
auth process. This setting is only used by some of the userdb drivers.
valid_chroot_dirs
Default | [None] |
---|---|
Value | Boolean List |
List of directories under which chrooting is allowed for mail processes.
Addresses the risk of root exploits enabled by incorrect use of chrooting.
Interpretation is recursive, so including /var/mail
allows chrooting
to subdirectories such as /var/mail/foo/bar
.
vault_mailbox
Default | [None] |
---|---|
Value | string |
Plugin | vault plugin |
This setting enables the vault plugin and identifies where to store a copy of the message.
verbose_proctitle
Default | yes |
---|---|
Value | boolean |
If enabled, the ps
command shows more verbose process details,
including the username and IP address of the connected client.
This aids in seeing who is actually using the server, as well as helps debugging in case there are any problems. See process titles.
verbose_ssl
Default | no |
---|---|
Value | boolean |
Changes |
|
If enabled, protocol-level SSL errors are logged. Same as
log_debug = category=ssl
.
version_ignore
Default | no |
---|---|
Value | boolean |
If enabled, ignore version mismatches between different Dovecot versions.
welcome_script
Value | Named Filter |
---|---|
See Also | |
Plugin | welcome plugin |
Named filter for configuring the welcome execute
script.
welcome {
execute welcome {
args = %{user}
}
welcome_wait
Default | no |
---|---|
Value | boolean |
Plugin | welcome plugin |
If enabled, wait for the script to finish. By default, the welcome script is run asynchronously.
DANGER
These settings should not normally be changed.
auth_gssapi_hostname
Default | <name returned by gethostname()> |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
This supplies the hostname to use in Generic Security Services API (GSSAPI) principal names.
Use "$ALL"
(with the quotation marks) to allow all keytab entries.
auth_krb5_keytab
Default | <system default (e.g. /etc/krb5.keytab)> |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
This specifies the Kerberos keytab to use for the GSSAPI mechanism.
Note: You may need to set the auth service to run as root in order for this file to be readable.
auth_policy_hash_truncate
Default | 12 |
---|---|
Value | unsigned integer |
See Also | |
Advanced Setting; this should not normally be changed. |
How many bits to use from password hash when reporting to policy server.
auth_proxy_self
Default | [None] |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
If the destination for proxying matches any of the IP addresses listed
here, proxying is not performed when proxy_maybe=yes
is returned.
This parameter isn't normally needed; its main use is if the destination IP address belongs to, for instance, a load-balancer rather than the server itself.
auth_use_winbind
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
By default, the NTLM mechanism is handled internally.
If yes
, perform NTLM and GSS-SPNEGO authentication with Samba's winbind
daemon and ntlm_auth helper.
This option is useful when you need to authenticate users against a Windows domain (either AD or NT).
auth_username_translation
Default | [None] |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
If set, performs username character translations before querying the auth database.
The value is a string formed of sets of from
and to
characters
alternating.
A value of #@/@
means that #
and /
will both be translated to
the @
character.
auth_winbind_helper_path
Default | [None] |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
This setting tells the system the path for Samba's ntlm_auth helper binary.
Example:
auth_winbind_helper_path = /usr/bin/ntlm_auth
base_dir
Default | /var/run/dovecot/ |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The base directory in which Dovecot should store runtime data.
This can be used to override the base directory determined at compile time.
dsync_hashed_headers
Default | Date Message-ID |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
Which email headers are used in incremental syncing for checking whether the local email matches the remote email?
Format: a space-separated list of headers.
This list should only include headers that can be efficiently downloaded from the remote server.
fs_azure_url
Default | https://blob.core.windows.net |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
URL for accessing the Azure storage. It is not intended to be changed, unless testing some other Azure-compatible storage.
fs_posix_accurate_mtime
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
Configure whether utimes()
is called after writes to guarantee microsecond
precision timestamps for files. By default Linux updates the mtime
only on
timer interrupts, which is not remotely close to microsecond precision.
fs_posix_autodelete_empty_directories
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
If the last file in a directory is deleted, should the parent directory be automatically deleted?
INFO
Using this setting makes the POSIX filesystem behave more like an object storage would.
WARNING
This setting can cause the POSIX filesystem to also delete the parent directory hierarchy farther up than anticipated.
fs_posix_lock_method
Default | flock |
---|---|
Value | string |
Allowed Values | flock dotlock |
Advanced Setting; this should not normally be changed. |
Lock method to use for locking files. Currently nothing uses lib-fs
locking.
fs_s3_auth_host
Default | 169.254.169.254 |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
AWS IAM hostname. Normally there is no reason to change this. This is mainly intended for testing.
fs_s3_auth_port
Default | 80 |
---|---|
Value | Port Number |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
AWS IAM port. Normally there is no reason to change this. This is mainly intended for testing.
fs_sproxyd_access_by_path
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Objects are accessed by the path instead of by the object ID. Scality sproxyd internally converts the paths into object IDs.
fs_sproxyd_avoid_423_timeout
Default | [None] |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Delay DELETE
requests if the same object ID has been
GET
/HEAD
/PUT
by the same process within
Millisecond Time. This is intended to reduce
423 Locked
sent by Scality.
When 0
, no delay is added. Only use this setting, if it can be seen to
bring a benefit. Careful investigation of current error-rates and consideration
of the overall throughput of the platform are recommended before using it.
fts_dovecot
Value | Named Filter |
---|---|
See Also | |
Plugin | fts-dovecot plugin |
Advanced Setting; this should not normally be changed. |
Named filter for initializing FS Driver for FTS indexes. It must be
somewhat synchronized with obox
and Mail Location Setting.
This setting isn't actually necessary to use. It's simpler to add the settings
inside fts dovecot
filter (see: fts
), which is used to enable
Dovecot Pro FTS driver.
fts_dovecot_mail_flush_interval
Default | 10 |
---|---|
Value | unsigned integer |
Plugin | fts-dovecot plugin |
Changes |
|
Advanced Setting; this should not normally be changed. |
Upload locally cached FTS indexes to object storage every N new emails. This reduces the number of emails that have to be read after backend failure to update the FTS indexes, but at the cost of doing more writes to object storage.
fts_dovecot_max_triplets
Default | 200 |
---|---|
Value | unsigned integer |
Plugin | fts-dovecot plugin |
Changes |
|
Advanced Setting; this should not normally be changed. |
FTS lookups will fail and error message will be logged, when the number of
triplets exceeds the threshold specified in the setting. 0
means there
is no maximum number of triplets to be exceeded.
fts_dovecot_min_merge_l_file_size
Default | 128 kB |
---|---|
Value | size |
Plugin | fts-dovecot plugin |
Advanced Setting; this should not normally be changed. |
The smallest FTS triplet is getting recreated whenever indexing new mails until it reaches this size. Then the triplet becomes merged with the next largest triplet.
When fts-cache is used, this effectively controls how large the fts.L file can become in metacache until the FTS triplet is uploaded to object storage.
http_client_auto_redirect
Default | yes |
---|---|
Value | boolean |
See Also | |
Changes |
|
Advanced Setting; this should not normally be changed. |
If this setting is yes
redirects are handled as long as
http_client_request_max_redirects
isn't reached. If no
the
redirect responses are handled as regular failure responses.
WARNING
This setting should likely be changed only in the code, never in configuration.
http_client_auto_retry
Default | yes |
---|---|
Value | boolean |
See Also | |
Changes |
|
Advanced Setting; this should not normally be changed. |
If this setting is no
requests are not automatically retried by the generic
HTTP client code. It's still possible to retry the requests with explicit
http_client_request_try_retry()
calls as long as
http_client_request_max_attempts
isn't reached.
WARNING
This setting should likely be changed only in the code, never in configuration.
http_client_connect_backoff_max_time
Default | 1 min |
---|---|
Value | time (milliseconds) |
Changes |
|
Advanced Setting; this should not normally be changed. |
Maximum backoff time for retries.
http_client_connect_backoff_time
Default | 100 ms |
---|---|
Value | time (milliseconds) |
Changes |
|
Advanced Setting; this should not normally be changed. |
Initial backoff time for retries. It's doubled at each connection failure.
http_client_dns_client_socket_path
Default | dns-client |
---|---|
Value | string |
Changes |
|
Advanced Setting; this should not normally be changed. |
UNIX socket path to the dns-client service.
http_client_dns_ttl
Default | 30 mins |
---|---|
Value | time (milliseconds) |
Changes |
|
Advanced Setting; this should not normally be changed. |
How long to cache DNS entries.
http_client_max_auto_retry_delay
Default | [None] |
---|---|
Value | time |
Changes |
|
Advanced Setting; this should not normally be changed. |
Maximum acceptable delay for automatically retrying/redirecting requests. If a
server sends a response with a Retry-After
header that causes a delay
longer than this, the request is not automatically retried and the response is
returned.
http_client_response_hdr_max_field_size
Default | 8k |
---|---|
Value | size |
Changes |
|
Advanced Setting; this should not normally be changed. |
Response header limit: Max size for an individual field.
http_client_response_hdr_max_fields
Default | 50 |
---|---|
Value | unsigned integer |
Changes |
|
Advanced Setting; this should not normally be changed. |
Response header limit: Max number of fields.
http_client_response_hdr_max_size
Default | 200k |
---|---|
Value | size |
Changes |
|
Advanced Setting; this should not normally be changed. |
Response header limit: Max size for the entire response header.
http_client_socket_recv_buffer_size
Default | [None] |
---|---|
Value | size |
Changes |
|
Advanced Setting; this should not normally be changed. |
The kernel receive buffer size for the connection sockets. 0
= kernel
defaults.
http_client_socket_send_buffer_size
Default | [None] |
---|---|
Value | size |
Changes |
|
Advanced Setting; this should not normally be changed. |
The kernel send buffer size for the connection sockets. 0
= kernel
defaults.
http_client_soft_connect_timeout
Default | [None] |
---|---|
Value | time (milliseconds) |
Changes |
|
Advanced Setting; this should not normally be changed. |
Time to wait for TCP connect and SSL handshake to finish for the first
connection before trying the next IP in parallel. 0
= wait until current
connection attempt finishes.
http_client_user_agent
Default | [None] |
---|---|
Value | string |
Changes |
|
Advanced Setting; this should not normally be changed. |
User-Agent:
header to send.
http_server_default_host
Default | [None] |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
Overwrite the local hostname with http_server_default_host.
http_server_max_payload_size
Default | 10G |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Request payload limit: Max size for the request payload.
http_server_max_target_length
Default | 8k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Request target limit: Maximum length of the request target.
http_server_request_hdr_max_field_size
Default | 8k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Request header limit: Max size for an individual field.
http_server_request_hdr_max_fields
Default | 50 |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
Request header limit: Max number of fields.
http_server_request_hdr_max_size
Default | 200k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Request header limit: Max size for the entire request header.
http_server_socket_recv_buffer_size
Default | [None] |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
The kernel receive buffer size for the connection sockets. 0
= kernel
defaults.
http_server_socket_send_buffer_size
Default | 0 |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
The kernel send buffer size for the connection sockets. 0
= kernel
defaults.
imap_idle_notify_interval
Default | 2mins |
---|---|
Value | time |
Advanced Setting; this should not normally be changed. |
The amount of time to wait between "OK Still here" untagged IMAP responses when the client is in IDLE operation.
imap_max_line_length
Default | 64k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Maximum IMAP command line length. 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.
intercept_api_utimaco_sql_query_surveillance
Default |
SELECT uuid, UNIX_TIMESTAMP(created) AS created FROM targets WHERE userid_hash = '%{user | md5 | hexlify}' |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to obtain surveillance information (from the Utimaco X1 service) about a particular e-mail address.
See intercept_utimaco_x1_sql_query_check_surveillance
for variable
substitution information.
intercept_utimaco_x1_sql_query_add_surveillance
Default |
INSERT INTO targets (userid_hash, uuid, address) VALUES ('%{userid | md5 | hexlify}', '%{uuid}', '%{address}') |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to add a new target to the Utimaco X1 surveillance database.
See intercept_utimaco_x1_sql_query_check_surveillance
for variable
substitution information.
intercept_utimaco_x1_sql_query_cancel_surveillance
Default | DELETE FROM targets WHERE uuid = '%{uuid}' |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to remove a target from the Utimaco X1 surveillance database.
See intercept_utimaco_x1_sql_query_check_surveillance
for variable
substitution information.
intercept_utimaco_x1_sql_query_check_surveillance
Default |
SELECT uuid FROM targets WHERE userid_hash = '%{userid | md5 | hexlify} |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to check (from Utimaco X1 service) whether an e-mail address is already surveilled.
Variable substitutions supported:
Variable | Description |
---|---|
%{userid} |
User ID |
%{uuid} |
UUID |
%{address} |
Address |
intercept_utimaco_x1_sql_query_get_surveillance_status
Default | SELECT uuid FROM targets WHERE uuid = '%{uuid}' |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to check (from the Utimaco X1 surveillance database) whether an UUID is currently surveilled.
See intercept_utimaco_x1_sql_query_check_surveillance
for variable
substitution information.
intercept_utimaco_x1_sql_query_get_user_data
Default | SELECT userid_hash, address FROM targets WHERE uuid = '%{uuid}' |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to get information (from the Utimaco X1 surveillance database) about a surveilled user.
See intercept_utimaco_x1_sql_query_check_surveillance
for variable
substitution information.
intercept_utimaco_x1_sql_query_list_surveillances
Default | SELECT uuid FROM targets |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The SQL query used to list all items from the Utimaco X1 surveillance database.
See intercept_utimaco_x1_sql_query_check_surveillance
for variable
substitution information.
intercept_utimaco_x1_testing
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
Enable the Utimaco testing mode for the utimaco-x1 service, in which the use of TLS is not required.
intercept_utimaco_x3_debug
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
Enable debug logging for utimaco-x3 service.
intercept_utimaco_x3_kafka_consume_max_size
Default | 10M |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Limit a batch of consumed messages to approximately this size.
intercept_utimaco_x3_kafka_consume_min_size
Default | [None] |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
The broker will respond to a consumer when a batch of messages with this cumulative size is available.
intercept_utimaco_x3_kafka_consumer_group
Default | utimaco-x3-consumers |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The name of the Kafka consumer group used by the utimaco-x3-kafka consumer service. This is currently only used to record the current consumption offset on the Kafka cluster; it is currently not possible to have more than a single consumer!
intercept_utimaco_x3_rawlog_dir
Default | [None] |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
If this directory exists, and it is writable by the utimaco-x3 service, the messages exchanged between client and server are logged here. This is useful for debugging.
intercept_utimaco_x3_testing
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
Enable the Utimaco testing mode for the utimaco-x3 service, in which the use of TLS is not required.
language_tokenizer_kuromoji_split_compounds
Default | yes |
---|---|
Value | boolean |
See Also | |
Plugin | fts plugin |
Advanced Setting; this should not normally be changed. |
This setting enables search mode
in the Atilika Kuromoji library. The
setting defaults to enabled and should not be changed unless there is a
compelling reason.
WARNING
If this setting is changed, existing FTS indexes will produce unexpected results. The FTS indexes should be recreated in this case.
libexec_dir
Default | /usr/libexec/dovecot |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The directory from which you execute commands via doveadm-exec.
lmtp_verbose_replies
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
This setting makes the replies returned to the client much more verbose. Currently, this only applies when the LMTP proxy is involved, for which e.g. backend connection errors are returned in full detail.
Normally, these errors are replaced by a more generic error message to prevent leaking system details to the clients (e.g. IP addresses and ports). It is therefore not recommended to enable this setting beyond troubleshooting efforts.
login_greeting
Default | Dovecot ready. |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The greeting message displayed to clients.
Variables allowed:
Mail service user variables
Login variables
login_proxy_notify_path
Default | proxy-notify |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
Path to proxy-notify pipe.
Login Variables can be used.
mail_cache_max_header_name_length
Default | 100 |
---|---|
Value | unsigned integer |
Changes |
|
Advanced Setting; this should not normally be changed. |
Maximum header name length stored in the cache, where 0 stands for unlimited (which is also the former behavior).
When enabled, the cache truncates the names to this length in memory and on
file. While the header name remains unchanged in the storage, all the headers
sharing the first mail_cache_max_header_name_length
prefix
characters are de facto aliased and will be considered as the same header on
cache fetch.
Also, attempting to fetch a specific aliased header will succeed even if
the header does not actually exist (this does NOT happen when the feature
is disable with explicitly with mail_cache_max_header_name_length = 0
)
Example: (mail_cache_max_header_name_length = 5
)
If the mail contains the header X-name: value
, attempting to fetch
X-nam
or X-names
will also produce X-name: value
as a result
(with the original header name, not the requested one).
Trying to fetch the mail text or the mail headers will properly return only
X-name: value
.
mail_cache_max_headers_count
Default | 100 |
---|---|
Value | unsigned integer |
Changes |
|
Advanced Setting; this should not normally be changed. |
Maximum number of headers in yes
/temp
cache decision before the cache
refuses to promote more header decisions from no
to temp
, where 0
stands for unlimited (which is also the former behavior).
When entries are rejected, the event mail_cache_decision_rejected
is emitted.
Also, while the cache's headers count is saturated, the effective value of
mail_cache_unaccessed_field_drop
is reduced to 1/4 of
of the specified one, in order to aid the cache to return within the limits.
mail_cache_max_size
Default | 1G |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
If dovecot.index.cache
becomes larger than this, it's truncated
to empty size.
WARNING
The maximum value is 1 GB because the cache file format can't currently support larger sizes.
mail_cache_min_mail_count
Default | [None] |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
Only update cache file when the mailbox contains at least this many messages.
With a setting other than 0
, you can optimize behavior for fewer disk
writes at the cost of more disk reads.
mail_cache_purge_continued_percentage
Default | 200 |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
Compress the cache file when n% of records are deleted (by count, not by size).
For example 200
means that the record has 2 continued rows, i.e. it
exists in 3 separate segments in the cache file.
mail_cache_purge_delete_percentage
Default | 20 |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
Compress the cache file when n% of records are deleted (by count, not by size).
mail_cache_purge_header_continue_count
Default | 4 |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
Compress the cache file when we need to follow more than n next_offsets to find the latest cache header.
mail_cache_purge_min_size
Default | 32k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Only compress cache file if it is larger than this size.
mail_cache_record_max_size
Default | 64k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
If a cache record becomes larger than this, don't add it to the cache file.
mail_cache_unaccessed_field_drop
Default | 30days |
---|---|
Value | time |
See Also | |
Advanced Setting; this should not normally be changed. |
Specifies when cache decisions are downgraded.
Change caching decision from YES to TEMP after this much time has passed. Drop the field entirely after twice this much time has passed, regardless of whether the cache decision was YES or TEMP previously.
If the cache header count is capped to
mail_cache_max_headers_count
then the effective value is reduced
to 1/4 of the configured value until enough headers expire for the cache to
fall back inside the limits.
mail_ext_attachment_hash
Default | %{sha1} |
---|---|
Value | string |
Allowed Values | %{md4} %{md5} %{sha1} %{sha256} %{sha512} %{size} |
See Also | |
Advanced Setting; this should not normally be changed. |
The hash format to use in attachment filenames when saving attachments externally.
Variables and additional text can be included in this string.
The syntax allows truncation of any variable. For example %{sha256:80}
will return only the first 80 bits of the SHA256 output.
mail_full_filesystem_access
Default | no |
---|---|
Value | boolean |
See Also | |
Advanced Setting; this should not normally be changed. |
Allow full filesystem access to clients?
If enabled, no access checks are performed other than what the operating
system does for the active UID/GID. This also disables the
mailbox_list_validate_fs_names
setting.
This setting works with both Maildir and mbox, allowing you
to prefix mailbox names with /path/
or ~user/
indicators.
mail_index_log2_max_age
Default | 2days |
---|---|
Value | time |
Advanced Setting; this should not normally be changed. |
Delete .log.2
index file when older than this value.
Older .log.2
files are useful for QRESYNC and dsync, so this value
should not be too low.
mail_index_log_rotate_max_size
Default | 1M |
---|---|
Value | size |
See Also | |
Advanced Setting; this should not normally be changed. |
Always rotate transaction log after it exceeds this size.
mail_index_log_rotate_min_age
Default | 5mins |
---|---|
Value | time |
See Also | |
Advanced Setting; this should not normally be changed. |
Rotate transaction log if it is older than this value and is larger than
mail_index_log_rotate_min_size
.
mail_index_log_rotate_min_size
Default | 32k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
Rotate transaction log if it is larger than this size and is older than
mail_index_log_rotate_min_age
.
mail_index_rewrite_max_log_bytes
Default | 128k |
---|---|
Value | size |
See Also | |
Advanced Setting; this should not normally be changed. |
Rewrite the index when the number of bytes that needs to be read from the .log index file on refresh is between these min/max values.
mail_index_rewrite_min_log_bytes
Default | 8k |
---|---|
Value | size |
See Also | |
Advanced Setting; this should not normally be changed. |
Rewrite the index when the number of bytes that needs to be read from the .log index file on refresh is between these min/max values.
mail_max_keyword_length
Default | 50 |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
The maximum length allowed for a mail keyword name.
Compliance is enforced only during attempts to create new keywords.
mail_save_crlf
Default | no |
---|---|
Value | boolean |
Advanced Setting; this should not normally be changed. |
Save message with CR+LF line endings?
Messages are normally saved with LF line endings.
Enabling this makes saving messages less CPU-intensive, especially with the sendfile() system call used in Linux and FreeBSD. However, enabling comes at the cost of slightly increased disk I/O, which could decrease the speed in some deployments.
mailbox_idle_check_interval
Default | 30secs |
---|---|
Value | time |
Advanced Setting; this should not normally be changed. |
The minimum time between checks for new mail/other changes when a mailbox is in the IMAP IDLE state.
mailbox_subscriptions_filename
Default | subscriptions specific Mailbox Formats have different defaults |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
Specifies the filename used for storing mailbox subscriptions.
managesieve_client_workarounds
Default | [None] |
---|---|
Value | Boolean List |
Advanced Setting; this should not normally be changed. |
Enables various workarounds for ManageSieve clients. Currently there are none.
managesieve_implementation_string
Default | Dovecot Pigeonhole |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
Sets the ManageSieve implementation string returned by the IMPLEMENTATION
capability.
managesieve_max_compile_errors
Default | 5 |
---|---|
Value | unsigned integer |
Advanced Setting; this should not normally be changed. |
The maximum number of compile errors that are returned to the client upon script upload or script verification.
managesieve_max_line_length
Default | 64k |
---|---|
Value | size |
Advanced Setting; this should not normally be changed. |
The maximum ManageSieve command line length in bytes.
Since long command lines are very unlikely with ManageSieve, changing this will generally not be useful.
managesieve_notify_capability
Default | <dynamically determined> |
---|---|
Value | Boolean List |
Advanced Setting; this should not normally be changed. |
NOTIFY
capabilities reported by the ManageSieve service before
authentication.
This does normally not need to be configured. If left unassigned, these will be
assigned dynamically according to what the Sieve interpreter is configured to
support using the global sieve_extensions
setting (after login this
may differ depending on the settings applicable to the authenticated user).
managesieve_sieve_capability
Default | <dynamically determined> |
---|---|
Value | Boolean List |
Advanced Setting; this should not normally be changed. |
SIEVE
capabilities reported by the ManageSieve service before
authentication.
This does normally not need to be configured. If left unassigned, these will be
assigned dynamically according to what the Sieve interpreter is configured to
support using the global sieve_extensions
setting (after login this
may differ depending on the settings applicable to the authenticated user).
mbox_md5
Default | apop3d |
---|---|
Value | string |
Allowed Values | apop3d all |
See Also | |
Advanced Setting; this should not normally be changed. |
The mail-header selection algorithm to use for MD5 POP3 UIDLs when the
setting pop3_uidl_format = %{md5}
is applied.
mbox_min_index_size
Default | [None] |
---|---|
Value | size |
See Also | |
Advanced Setting; this should not normally be changed. |
For mboxes smaller than this size, index files are not written.
If an index file already exists, it gets read but not updated.
The default should not be changed for most installations.
metacache_bg_root_uploads
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
By default, doing changes to folders (e.g. creating or renaming) uploads
changes immediately to object storage. If this setting is enabled, the
upload happens sometimes later (within metacache_upload_interval
).
metacache_bundle_list_cache
Default | yes |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Enable caching bundle list.
metacache_index_merging
Default | v2 |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Specifies the algorithm to use when merging folder indexes.
Algorithm | Description |
---|---|
none |
Disable the merging algorithm |
v2 |
The new algorithm designed specifically for this purpose of merging two indexes. This is the recommended setting. |
metacache_max_parallel_requests
Default | 10 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Maximum number of metacache read/write operations to do in parallel.
metacache_merge_max_uid_renumbers
Default | 100 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
This is used only with metacache_index_merging = v2
.
If the merging detects that there are more than this many UIDs that are conflicting and would have to be renumbered, don't renumber any of them. This situation isn't expected to happen normally, and renumbering too many UIDs can cause unnecessary extra disk I/O.
The downside is that a caching IMAP client might become confused if it had previously seen different UIDs.
metacache_priority_weights
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
metacache_rescan_interval
Default | 1 day |
---|---|
Value | time |
See Also | |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
How often to run a background metacache rescan, which makes sure that the disk space usage tracked by metacache process matches what really exists on filesystem.
The desync may happen, for example, because the metacache process (or the whole backend) crashes.
The rescanning helps with two issues:
Setting this to 0
disables the rescan.
It's also possible to do this manually by running the
doveadm metacache rescan
command.
metacache_roots
Default | mail_home and mail_chroot |
---|---|
Value | string |
See Also | |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
List of metacache root directories, separated with :
.
Usually this is automatically parsed directly from mail_home
and
mail_chroot
settings.
Accessing a metacache directory outside these roots will result in a warning: "Index directory is outside metacache_roots".
It's possible to disable this check entirely by setting the value to :
.
TIP
This setting is required for metacache_rescan_interval
.
metacache_secondary_indexes
Default | yes |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Enable including secondary indexes into the user root bundle when using the virtual or virtual-attachments plugin.
This setting can be used to exclude the virtual and virtual-attachments folders from the user root bundle in case any problems are encountered.
metacache_size_weights
Default | [None] |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Whenever metacache notices that metacache_max_space
has been
reached, it needs to delete some older index files to make space for new ones.
This is done by calculating cleanup weights.
The simplest cleanup weight is to just use the user's last access UNIX timestamp as the weight. The lowest weight gets deleted first.
It's possible to enable using only simple weights by explicitly setting
metacache_priority_weights
and this setting
to empty values. However, by default priorities are taken into account when
calculating the weight.
The metacache_priority_weights
setting can be used to fine tune how
metacache adjusts the cleanup weights for different index priorities. There
are 4 major priorities (these are also visible in e.g.
doveadm metacache list
output):
Priority | Description |
---|---|
0 |
User root indexes (highest priority) |
1 |
FTS indexes |
2 |
INBOX and Junk folder indexes ("special" folders) |
3 |
Non-special folder indexes (lowest priority) |
The metacache_priority_weights
contains <percentage> <weight adjustment>
pairs for each of these priorities. So, for example, the
first 10% +1d
applies to the user root priority and the last 100% 0
applies to other folders' priority.
The weight calculation is then done by:
metacache_priority_weights
is next looked up for the given
priority indexes<percentage>
, add <weight adjustment>
to weight. So, for
example, with 10% +1d
if the disk space used by index files of this
priority type take <= 10% of metacache_max_space
, increase the
weight by 1d = 60*60*24 = 86400
.+1d
typically gives 1 extra day for the index files to exist
compared to index files that don't have the weight boost.<percentage>
exists so that the weight boost doesn't cause some
index files to dominate too much. For example, if root indexes' weights
weren't limited, it could be possible that the system would be full of
only root indexes and active users' other indexes would be cleaned
almost immediately.This setting is used to do final adjustments
depending on the disk space used by this user's indexes of the specific
priority. The setting is in format
<low size> <low weight adjustment> <max size> <high weight adjustment>
.
The weight adjustment calculation is:
<low size>
, increase weight by
(<low size> - <disk space>) * <low weight adjustment> / <low size>
<disk space>
to <max size>
and increase
weight by (<disk space> - <low size>) * <high weight adjustment> / (<max size> - <low size>)
2M +30 1G +120
value the priority adjustments will
look like:
+30
+23
+15
+8
0
+1
+6
+12
+30
+60
+120
Example:
metacache_priority_weights = 10% +1d 10% +1d 50% +1h 100% 0
metacache_size_weights = 2M +30 1G +120
metacache_userdb
Default | metacache/metacache-users.db |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Path to a database which metacache process periodically writes to.
This database is read by metacache at startup to get the latest state.
The path is relative to state_dir
.
obox_allow_nonreproducible_uids
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Normally Dovecot attempts to make sure that IMAP UIDs aren't lost even if a backend crashes (or if user is moved to another backend without indexes first being uploaded). This requires uploading index bundles whenever expunging recently saved mails. Setting this to "yes" avoids this extra index bundle upload at the cost of potentially changing IMAP UIDs. This could cause caching IMAP clients to become confused, possibly even causing it to delete wrong mails. Also FTS indexes may become inconsistent since they also rely on UIDs.
obox_autofix_storage
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
If activated, when an unexpected 404 is found when retrieving a message from object storage, Dovecot will rescan the mailbox by listing its objects. If the 404-object is still listed in this query, Dovecot issues a HEAD to determine if the message actually exists. If this HEAD request returns a 404, the message is dropped from the index. The message object is not removed from the object storage.
obox_avoid_cached_vsize
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Avoid getting the email's size from the cache whenever the email body is opened anyway. This avoid unnecessary errors if a lot of the vsizes are wrong. The vsize in dovecot.index is also automatically updated to the fixed value with or without this setting.
This setting was mainly useful due to earlier bugs that caused the vsize to be wrong in many cases.
obox_disable_fast_copy
Default | no |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Workaround for object storages with a broken copy operation. Instead perform copying by reading and writing the full object.
obox_fetch_lost_mails_as_empty
Default | no |
---|---|
Value | boolean |
See Also | |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Cassandra: "Object exists in dict, but not in storage" errors will be
handled by returning empty emails to the IMAP client. The tagged FETCH
response will be OK
instead of NO
.
obox_lost_mailbox_prefix
Default | recovered-lost-folder- |
---|---|
Value | string |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
If folder name is lost entirely due to lost index files, generate a name for the folder using this prefix.
obox_max_rescan_mail_count
Default | 10 |
---|---|
Value | unsigned integer |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
Keep a maximum of this many newly saved mails in local metacache indexes
before metacache is flushed to object storage. For example with a value of
10, every 11th mail triggers a metacache flush. Note that the flush isn't
immediate - it will happen in the background some time within the next
metacache_upload_interval
.
A higher value reduces the number of index bundle uploads, but increases the number of mail downloads to fill the caches after a backend crash.
obox_pop3_backend_uidls
Default | yes |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
If set to no
, don't try to lookup migrated POP3 UIDLs from email metadata
in any situation. This used to bring performance improvements, but now the
existence of migrated UIDLs is tracked more efficiently and there should be no
need to change this setting.
obox_size_missing_action
Default | warn-read |
---|---|
Value | string |
Allowed Values | warn-read read stat |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
This setting controls what should be done when the mail object is missing the size metadata.
Options:
Value | Description |
---|---|
read |
Same as warn-read , but doesn't log a warning. |
stat |
Use fs_stat() to get the size, which is the fastest but doesn't work if mails are compressed or encrypted. |
warn-read |
Log a warning and fallback to reading the email to calculate its size. |
obox_use_object_ids
Default | yes |
---|---|
Value | boolean |
Plugin | obox plugin |
Advanced Setting; this should not normally be changed. |
If enabled, access objects directly via their IDs instead of by path, if possible.
quota_clone_unset
Default | no |
---|---|
Value | boolean |
Plugin | quota-clone plugin |
Changes |
|
Advanced Setting; this should not normally be changed. |
Unset quota information before updating. This is needed with some dict drivers that do not support upserting, such as SQL with older SQLite.
service_privileged_group
Default | [None] |
---|---|
Value | string |
See Also | |
Advanced Setting; this should not normally be changed. |
Secondary UNIX group - which is disabled by default - but can be enabled by the
process. mail_privileged_group
setting is a more user friendly way
to use this setting for mail processes.
sieve_duplicate_default_period
Default | 14d |
---|---|
Value | time |
See Also | |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
Default period after which tracked values are purged from the duplicate tracking database.
sieve_duplicate_max_period
Default | 7d |
---|---|
Value | time |
See Also | |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
Maximum period after which tracked values are purged from the duplicate tracking database.
sieve_include_max_includes
Default | 255 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
The maximum number of scripts that may be included. This is the total number of scripts involved in the include tree.
sieve_include_max_nesting_depth
Default | 10 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
The maximum nesting depth for the include tree.
sieve_max_script_size
Default | 1M |
---|---|
Value | size |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
The maximum size of a Sieve script. The compiler will refuse to compile any script larger than this limit.
If set to 0
, no limit on the script size is enforced.
sieve_variables_max_scope_count
Default | 255 |
---|---|
Value | unsigned integer |
See Also | |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
The maximum number of variables that can be declared in a scope.
There are currently two variable scopes: the normal script scope and the global scope created by the Sieve include extension.
The minimum value for this setting is 128
.
sieve_variables_max_value_size
Default | 4k |
---|---|
Value | size |
See Also | |
Plugin | sieve plugin |
Advanced Setting; this should not normally be changed. |
The maximum allowed size for the value of a variable. If exceeded at runtime, the value is always truncated to the configured maximum.
The minimum value for this setting is 4000 bytes
.
state_dir
Default | /var/lib/dovecot |
---|---|
Value | string |
Advanced Setting; this should not normally be changed. |
The compile-time directory PKG_STATEDIR (typically /var/lib/dovecot) is hard-coded as the location of state files. The PKG_STATEDIR value is taken as the default state_dir setting but can be overridden - for instance, if you wish to use the same binaries for a system daemon and a user daemon.
The settings state_dir = /home/foo/dovecot/state
and
base_dir = /home/foo/dovecot/run
give an example of usage.
virtual_max_open_mailboxes
Default | 64 |
---|---|
Value | unsigned integer |
Plugin | virtual plugin |
Advanced Setting; this should not normally be changed. |
How many mailboxes to open in virtual plugin.