DOVEADM-DICT(1)

πŸ“¦
version 2.4.5 Β· 4 versions
, in alpine 3.23, alpine 3.24, arch rolling, fedora 43, fedora 44, nixos 26.05, nixpkgs unstable, opensuse-leap 16.0

πŸ’– 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. think mail_attribute, quota_clone. you can also use an empty filter name and just specify the dict settings yourself using the -o parameters πŸ’…

🌈 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. the dovecot_storage_version setting defaults to the latest version, but can be overridden with -o.
  • -k β€” preserve entire environment for doveadm, not just the import_environment setting.
  • -v β€” enables verbosity, including progress counter.
  • -i instance-name β€” if you're using multiple Dovecot instances, choose the config file based on this instance name. see the instance_name setting for more info 🫢
  • -c config-file β€” read configuration from the given config-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 ✨
  • -o setting=value β€” overrides the configuration setting from /etc/dovecot/dovecot.conf and from the userdb with the given value. in order to override multiple settings, the -o option may be specified multiple times.
  • -f formatter β€” specifies the formatter for formatting the output. supported formatters are:
    • flow β€” prints each line with key=value pairs.
    • json β€” prints a JSON array of JSON objects.
    • pager β€” prints each key: value pair 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:

  • -u user β€” the user to use.

doveadm mail dict command-specific options:

  • -A β€” if the -A option is present, the command will be performed for all users. using this option in combination with system users from userdb { driver = passwd } is not recommended, because it contains also users with a lower UID than the one configured with the first_valid_uid setting 😭 when the SQL userdb module is used, make sure that the userdb_sql_iterate_query setting 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 the userdb_fields setting and userdb_ldap_iterate_fields setting settings match your LDAP schema. otherwise doveadm(1) will be unable to iterate over all users πŸ’€
  • -F file β€” execute the command for all the users in the file. this is similar to the -A option, but instead of getting the list of users from the userdb, they are read from the given file. the file contains one username per line πŸ“
  • -S socket_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 execute doveadm(1) mail commands through the given socket πŸ”₯
  • -u user/mask β€” run the command only for the given user. 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 names
  • prefix β€” 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 ✨

  • -t timestamp-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 πŸ’…

  • -t timestamp-msecs β€” set the timestamp also.
  • -e expire-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 🫢

  • -t timestamp-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 🌈

doveadm(1)


and that's the whole page!! f979264, April 2026, DOVEADM-DICT(1) β€” mwah, go slay some dictionary entries, ily πŸŽ€βœ¨πŸ’œ

πŸ“¦ where this page comes from