DOVEADM-PW(1)
π DOVEADM-PW β the Dovecot password hash glow-up station π
okay bestie, so this is doveadm-pw, the Dovecot password hash generator and validator, straight out of the Dovecot manual (section 1, the user commands one, iykyk). It makes hashes, and it can check hashes. That's the whole vibe. β¨
β¨ SYNOPSIS β¨
doveadm [GLOBAL OPTIONS] pw -l
doveadm [GLOBAL OPTIONS] pw [-p password] [-r rounds] [-s scheme] [-u
user] [-V]
doveadm [GLOBAL OPTIONS] pw -t hash [-p password] [-u user]
πΈ DESCRIPTION πΈ
doveadm pw is your girl for generating password hashes in all the different password schemes, and optionally verifying the hash you just made. Bestie behaviour, fr fr.
Every generated password hash comes with a {scheme} prefix, like {SHA512-CRYPT.HEX}. Meanwhile all passdbs have a default scheme they use for passwords that were stored without a {scheme} prefix. And plot twist: you can override that default scheme just by storing the password with the scheme prefix. π
Now, if you wanna verify or generate passwords without configuring Dovecot first β no setup, no drama β you can just run doveadm -O pw. iconic. π
π GLOBAL OPTIONS π
The global doveadm(1) options, bestie:
-Dβ turns on verbosity and debug messages. maximum oversharing, love that for us.-Oβ don't read any config file at all, just use defaults. thedovecot_storage_versionsetting defaults to the latest version, but you can override it with-o.-kβ preserves the entire environment fordoveadm, not just theimport_environmentsetting.-vβ verbosity on, including a progress counter. we love a lil progress moment.-iinstance-name β if you're running multiple Dovecot instances, pick the config file based on this instance name. see theinstance_namesetting for more.-cconfig-file β read configuration from the given config-file. by default it first reads the config socket, then falls back to/etc/dovecot/dovecot.conf. you can also point this at the config socket of some instance running a compatible version.-osetting=value β overrides the configuration setting from/etc/dovecot/dovecot.confand from the userdb with the given value. wanna override multiple settings? just use-omultiple times, it's fine.
π OPTIONS π
-lβ lists all supported password schemes and exits successfully. π
quick heads up: there are up to three optional password schemes β BLF-CRYPT (Blowfish crypt), SHA256-CRYPT and SHA512-CRYPT. whether they're available depends on the system's currently used libc. so like, it depends on your libc's mood, basically. π
-ppassword β the plain text password you want the hash generated for. if you don't give a password,doveadm(1)will prompt you interactively for one. (β οΈ beware: using this option means your plain text password ends up in your shell history! not the slay you think it is.)-rrounds β the password schemesBLF-CRYPT,SHA256-CRYPTandSHA512-CRYPTsupport a variable number of encryption rounds. here's the minimum/maximum number of encryption rounds per scheme, and if you omit the-roption, the default number of encryption rounds gets applied:BLF-CRYPTβ minimum4, maximum31, default5SHA256-CRYPTβ minimum1000, maximum999999999, default5000SHA512-CRYPTβ minimum1000, maximum999999999, default5000
-sscheme β the password scheme that should be used to generate the hashed password. by default theCRYPTscheme is used (with the$2y$bcrypt format). you can also append an encoding suffix to the scheme β the supported encoding suffixes are:.b64,.base64and.hex. β¨
see also password_schemes for more details about password schemes.
-thash β test whether the given password hash matches a given plain text password. you should enclose the password hash in single quotes if it contains one or more dollar signs ($). the plain text password can be passed with the-poption. when no password was specified,doveadm(1)will prompt you interactively for one.-uuser β when theDIGEST-MD5scheme is used, the user name must also be given, because the user name is literally part of the generated hash. for more info about Digest-MD5, also readauth_digest_md5. for other schemes, this isn't required. π«Ά-Vβ when this option is given, the hashed password gets internally verified. the result of the verification shows up after the hashed password, enclosed in parentheses.
π EXAMPLE π
An ARGON2ID hash β best security at time of this writing, though it can be heavy on a busy server:
# doveadm pw -s ARGON2ID
Enter new password:
Retype new password:
{ARGON2ID}$argon2id$v=19$m=65536,t=3,p=1$AOrrkaFmGxCFtX+NCSHFkg$N3rlzYFqyNkCwrOingnDJ/qDQ09yGHgQa8PQfbu7rIE
Alternatively, a SHA512-CRYPT hash:
# doveadm pw -s SHA512-CRYPT
Enter new password:
Retype new password:
{SHA512-CRYPT}$6$qAvxfQ2UbA1QTXSg$SB2aMEK76DBObt.KqTjF5.yDMceaD3dkG2UvrKQD0rZ9PKii/VAn.VS0nBsDqJX18kXieMi8AWJr0f7Ae9dAp/
π¦ REPORTING BUGS π¦
Found a bug? π report it β including your doveconf -n output β to the Dovecot Mailing List β¨dovecot@dovecot.orgβ©. info about reporting bugs lives at: β¨https://dovecot.org/bugreport.htmlβ©
π SEE ALSO π
and that's the whole page, bestie β this was Dovecot's DOVEADM-PW(1), revision f979264, dated April 2026. no cap, that's everything. go generate some hashes, you absolute icon. πβ¨π
π¦ 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