DOVEADM-DICT(1)
π DOVEADM-DICT(1) π
okay bestie, this is DOVEADM-DICT(1), a Dovecot manual page, and it's literally all about poking at dictionary entries. no cap, it's giving "niche but powerful" energy. let's get into it π¦
β¨ NAME β¨
doveadm-dict β commands related to dictionary manipulation in user context
π SYNOPSIS π
doveadm [GLOBAL OPTIONS] dict command [-u user] [OPTIONS] config-filter-name [args]
doveadm [GLOBAL OPTIONS] mail dict command [OPTIONS] config-filter-name [args]
πΈ DESCRIPTION πΈ
So <purple>doveadm dict</purple> and <purple>doveadm mail dict</purple> are the two ways in, and both of them let you query and modify dictionary entries. iconic.
The <purple>doveadm mail dict</purple> flavor can be used inside a specific user context. that's highkey useful when, say, a userdb lookup returns user-specific dict settings π. Other than that little glow-up, the two commands behave identically. fr fr.
config-filter-nameβ the filter name to use when looking up the dict settings. thinkmail_attribute,quota_clone. you can also use an empty filter name and just specify the dict settings yourself using the-oparameters π
π GLOBAL OPTIONS π
these are the global doveadm(1) options, the ones that apply everywhere:
-Dβ enables verbosity and debug messages. turn it on when you want the tea β-Oβ do not read any config file, just use defaults. thedovecot_storage_versionsetting defaults to the latest version, but can be overridden with-o.-kβ preserve entire environment fordoveadm, not just theimport_environmentsetting.-vβ enables verbosity, including progress counter.-iinstance-nameβ if you're using multiple Dovecot instances, choose the config file based on this instance name. see theinstance_namesetting for more info π«Ά-cconfig-fileβ read configuration from the givenconfig-file. by default it first reads config socket, and then falls back to/etc/dovecot/dovecot.conf. you can also point this to config socket of some instance running compatible version β¨-osetting=valueβ overrides the configuration setting from/etc/dovecot/dovecot.confand from the userdb with the given value. in order to override multiple settings, the-ooption may be specified multiple times.-fformatterβ specifies the formatter for formatting the output. supported formatters are:flowβ prints each line withkey=valuepairs.jsonβ prints a JSON array of JSON objects.pagerβ prints eachkey: valuepair on its own line and separates records with form feed character (^L).tabβ prints a table header followed by tab separated value lines.tableβ prints a table header followed by adjusted value lines.
π OPTIONS π
doveadm dict command-specific options:
-uuserβ the user to use.
doveadm mail dict command-specific options:
-Aβ if the-Aoption is present, the command will be performed for all users. using this option in combination with system users fromuserdb { driver = passwd }is not recommended, because it contains also users with a lower UID than the one configured with thefirst_valid_uidsetting π when the SQL userdb module is used, make sure that theuserdb_sql_iterate_querysetting setting matches your database layout. (yes, "setting setting", that's what it says, i don't make the rules π) when using the LDAP userdb module, make sure that theuserdb_fieldssetting anduserdb_ldap_iterate_fieldssetting settings match your LDAP schema. otherwisedoveadm(1)will be unable to iterate over all users π-Ffileβ execute the command for all the users in thefile. this is similar to the-Aoption, but instead of getting the list of users from the userdb, they are read from the givenfile. thefilecontains one username per line π-Ssocket_pathβ the option's argument is either an absolute path to a local UNIX domain socket, or a hostname and port (hostname:port), in order to connect a remote host via a TCP socket. this allows an administrator to executedoveadm(1)mail commands through the given socket π₯-uuser/maskβ run the command only for the givenuser. it's also possible to use*and?wildcards (e.g.-u *@example.org) π
π COMMANDS π
π¦ get
doveadm [GLOBAL OPTIONS] dict get [-u user] config-filter-name key
doveadm [GLOBAL OPTIONS] mail dict get [-A | -u user | -F file] [-S socket_path] config-filter-name key
fetch a key from a dictionary π
keyβ the key to fetch.
π¦ iter
doveadm [GLOBAL OPTIONS] dict iter [-u user] [-1RV] config-filter-name prefix
doveadm [GLOBAL OPTIONS] mail dict iter [-A | -u user | -F file] [-S socket_path] [-1RV] config-filter-name prefix
find the keys matching the a prefix in a dictionary (yes, "the a prefix", we're keeping it π).
-1β exact match.-Rβ recurse.-Vβ don't print values, just key namesprefixβ the key prefix to look for.
list keys into the dictionary. (that's it, that's the line, it's just vibing there at the end of the section πΈ)
π¦ inc
doveadm [GLOBAL OPTIONS] dict inc [-u user] [-t timestamp-msecs] config-filter-name key diff
doveadm [GLOBAL OPTIONS] mail dict inc [-A | -u user | -F file] [-S socket_path] [-t timestamp-msecs] config-filter-name key diff
increment the value of a numeric key in the keys into the dictionary β¨
-ttimestamp-msecsβ set the timestamp also.keyβ the key to increment.diffβ the amount of the increment.
π¦ set
doveadm [GLOBAL OPTIONS] dict set [-u user] [-t timestamp-msecs] [-e expire-secs] config-filter-name key value
doveadm [GLOBAL OPTIONS] mail dict set [-A | -u user | -F file] [-S socket_path] [-t timestamp-msecs] [-e expire-secs] config-filter-name key value
set/create keys into the dictionary π
-ttimestamp-msecsβ set the timestamp also.-eexpire-secsβ set the key duration also.keyβ the key to set.valueβ the value to set.
π¦ unset
doveadm [GLOBAL OPTIONS] dict unset [-u user] [-t timestamp-msecs] config-filter-name key
doveadm [GLOBAL OPTIONS] mail dict unset [-A | -u user | -F file] [-S socket_path] [-t timestamp-msecs] config-filter-name key
remove a key from the dictionary π«Ά
-ttimestamp-msecsβ set the timestamp also.keyβ the key to unset.
π REPORTING BUGS π
report bugs, including doveconf -n output, to the Dovecot Mailing List β¨dovecot@dovecot.orgβ©. information about reporting bugs is available at: β¨https://dovecot.org/bugreport.htmlβ©
bestie if something's broken, send the doveconf -n output too or they can't help you, that's the whole vibe check π
π SEE ALSO π
and that's the whole page!! f979264, April 2026, DOVEADM-DICT(1) β mwah, go slay some dictionary entries, ily πβ¨π
π¦ where this page comes from
- alpine 3.23: dovecot-doc 2.4.5-r0 Β· MIT AND LGPL-2.1-or-later
- alpine 3.24: dovecot-doc 2.4.5-r0 Β· MIT AND LGPL-2.1-or-later
- arch rolling: dovecot 2.4.5-1 Β· MIT AND LGPL-2.1-only
- fedora 43: dovecot 1:2.4.5-1.fc43 Β· MIT AND LGPL-2.1-only
- fedora 44: dovecot 1:2.4.5-1.fc44 Β· MIT AND LGPL-2.1-only
- nixos 26.05: dovecot 2.4.5
- nixpkgs unstable: dovecot 2.4.5
- opensuse-leap 16.0: dovecot24 2.4.5-160000.1.1 Β· BSD-3-Clause AND LGPL-2.1-or-later AND MIT
- opensuse-leap 16.0: dovecot24 2.4.5-160000.1.1 Β· BSD-3-Clause AND LGPL-2.1-or-later AND MIT
- opensuse-leap 16.0: dovecot24 2.4.5-160000.1.1 Β· BSD-3-Clause AND LGPL-2.1-or-later AND MIT
- opensuse-leap 16.0: dovecot24 2.4.5-160000.1.1 Β· BSD-3-Clause AND LGPL-2.1-or-later AND MIT
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash on : a language model's rewrite of the original, under its terms