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 β€” the dict manual, but make it a group chat πŸ’–

okay bestie, sit down, hydrate, and let me tell you about doveadm-dict β€” it lives in the Dovecot manual (section 1, the big-girl commands section, iykyk) and it's literally all about dictionary manipulation. Commands related to dictionary manipulation, to be exact. slay. ✨


✨ 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 doveadm dict and doveadm mail dict are the two little icons you use to query and modify dictionary entries. that's the whole job. πŸ’…

the doveadm mail dict version can be run within a specific user context, which is highkey useful when, say, a userdb lookup returns user-specific dict settings. other than that vibe difference, the two commands behave identically. no cap.

πŸŽ€ config-filter-name

this is the filter name to use when looking up the dict settings. think things like mail_attribute, quota_clone. πŸ“

and yes, you can also pass an empty filter name and just spell out the dict settings yourself using the -o parameters. main character energy tbh.


🌈 GLOBAL OPTIONS 🌈

these are the global doveadm(1) options, and there are a lot of them, so buckle up buttercup:

  • -D β€” Enables verbosity and debug messages. πŸ‘€
  • -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. (yes, a lil progress bar moment πŸ’…)
  • -i instance-name β€” If you're running 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 the config socket, and then falls back to /etc/dovecot/dovecot.conf. You can also point this at the config socket of some instance running a compatible version. πŸ”₯
  • -o setting=value β€” Overrides the configuration setting from /etc/dovecot/dovecot.conf and from the userdb with the given value. To override multiple settings, the -o option may be specified multiple times. (stack 'em, bestie)
  • -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.

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. πŸ”

  • -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.

🌸 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. πŸ—‘οΈ (bye babe)

  • -t timestamp-msecs β€” Set the timestamp also.
  • key β€” The key to unset.

😭 REPORTING BUGS 😭

found a bug? first of all, mood. 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⟩

ngl bestie, they really want that doveconf -n output. don't make them ask twice. 🫢

πŸ’– SEE ALSO πŸ’–


and that's the whole page, babes. this was DOVEADM-DICT(1) from the Dovecot manual, revision f979264, dated April 2026. mwah, go forth and manipulate some dictionaries. πŸ’…βœ¨πŸŽ€

πŸ“¦ where this page comes from