Dovecot Settings Types
String
String can contain any character. Strings support Settings variables
.
String without variables
Certain settings require specific variables and thus don't use the default Settings variables
. For example:
imap_logout_format = in=%{input} out=%{output}
Here the %{input}
and %{output}
refer to variables specific to the imap_logout_format
setting.
Unsigned Integer
Unsigned integer is a number between 0
..4294967295
, although specific settings may have additional restrictions.
The value can also be unlimited
, which translates to 4294967295
.
Octal Unsigned Integer
Same as unsigned integer, but if the value is prefixed with 0
, the number is read as octal (instead of decimal).
Boolean
Boolean settings interpret any value as true, or false.
yes
and no
are the recommended values. However, y
and 1
also work as yes
. Whereas, only no
will work as false.
All these are case-insensitive. Other values give errors.
Size
The size value type is used in Dovecot configuration to define the amount of space taken by something, such as a file, cache or memory limit. The size value type is case insensitive. The following suffixes can be used to define size:
Suffix | Value |
---|---|
B | bytes |
K | kilobytes |
M | megabytes |
G | gigabytes |
T | terabytes |
The values can optionally be followed by I
or IB
. For example K = KI = KIB
. The size value type is base 2
, meaning a kilobyte equals 1024
bytes.
The value can also be unlimited
.
Time
The Time value is used in Dovecot configuration to define the amount of Time taken by something or for doing something, such as a sending or downloading file, processing, and more.
The Time value supports using suffixes of any of the following words:
secs
seconds
mins
minutes
hours
days
weeks
INFO
So for example, d
, da
, day
, and days
all mean the same. Make sure to be explicit if you want to differentiate between mins
and msecs
, as m
does not suffice.
The value can also be infinite
.
Millisecond Time
This is similar to Time, but additionally supports milliseconds (ms
) precision.
The Millisecond Time value supports using suffixes of any of the following words:
- All the suffixes supported by Time
msecs
mseconds
millisecs
milliseconds
All of these have the same meaning. Similarly to Time, the suffixes can be shortened to e.g. ms
.
IP Addresses
The IP can be IPv4 address like 127.0.0.1
, IPv6 address without brackets like ::1
, or with brackets like [::1]
. The DNS name is looked up once during config parsing, e.g. host.example.com
. If a /block is specified, then it's a CIDR address like 1.2.3.0/24
. If a /block isn't specified, then it defaults to all bits, i.e. /32 for IPv4 addresses and /128 for IPv6 addresses.
Port Number
This type is an unsigned integer with numbers ranging only from 0
to 65535
.
URL
Special type of String setting. Conforms to Uniform Resource Locators (URL) (RFC 1738).
File
Path to a file. The file contents are read already by the config process, so the file permissions don't usually matter. However, some callers need to open the file again (e.g. the ssl_client_cert_file
setting with MySQL) after the process has dropped root privileges.
If you use %variables in file names, the expansion is delayed until the process accessing the setting expands it. The process is usually not running as root at this point, so you may need to adjust file permissions.
It's possible to give inline values (instead of a path to a file) for the setting by using inline:
prefix in the value. For example userdb could be returning crypt_global_public_key_file=inline:<public key content>
without having to use files.
Named Filter
The settings inside the filter are used only in a specific situation. See Named Filters for more details.
Named List Filter
The settings inside the filter are used only in a specific situation. The filter has a unique name, which can be used to identify it within the list. See Named Filters for more details.
String List
The string list type is a list of key=value
pairs. Each key name is unique within the list (i.e. giving the same key multiple times overrides the previous one). The string list is configured similarly to Named Filters:
fs_randomfail_ops {
read = 100
write = 50
}
You can clear out an existing string list by setting it to an empty value. This is mainly useful to drop default settings. For example:
auth_policy_request_attributes =
auth_policy_request_attributes {
login = %{requested_username}
}
Boolean List
The boolean list type is a list of key=yes/no
pairs. Each key is unique within the list (i.e. giving the same key multiple times overrides the previous one). The boolean list can be configured as a space or comma-separated list, which replaces the previous boolean list entirely. For example:
mail_plugins = quota imap_quota
mail_plugins = acl,imap_acl # removes quota and imap_quota
Quotes are also supported:
doveadm_allowed_commands = "mailbox list" "mailbox create"
The boolean list can also be configured to update an existing boolean list. For example:
mail_plugins = quota acl
protocol imap {
mail_plugins {
imap_quota = yes
imap_acl = yes
}
}
local 10.0.0.0/24 {
protocol imap {
mail_plugins {
imap_acl = no
}
}
}