DOVEADM-SIEVE(1)
π DOVEADM-SIEVE(1) β doveadm-sieve, from the Dovecot manual
okay bestie, sit down, hydrate, because we're about to learn how to manage Sieve scripts and it's genuinely gonna be a good time π
β¨ NAME β¨
doveadm-sieve β all the commands that deal with handling Sieve scripts π
πΈ SYNOPSIS πΈ
doveadm [GLOBAL OPTIONS] sieve_cmd [options] [arguments]
π¦ DESCRIPTION π¦
So the doveadm sieve commands are part of Pigeonhole (pigeonhole(7)), which is the whole thing that adds Sieve (RFC 5228) and ManageSieve (RFC 5804) support to Dovecot (dovecot(1)). Yes, it's a whole ecosystem. Yes, it's iconic.
And like, what do you actually do with them? You use the doveadm sieve commands to manage Sieve filtering. That's the vibe. π
π GLOBAL OPTIONS π
These are the global doveadm(1) options, aka the ones that apply no matter what:
-Dβ turns on verbosity and debug messages. maximum yapping mode, and honestly? we love that for us.-Oβ do not read any config file, just use defaults. thedovecot_storage_versionsetting defaults to the latest version, but you can override it with-o. no cap.-kβ preserves the entire environment fordoveadm, not just theimport_environmentsetting. keeping it all, periodt.-vβ enables verbosity, including a progress counter. so you can watch the little numbers go up π«Ά-iinstance-name β if you're running multiple Dovecot instances, this picks the config file based on the instance name. check theinstance_namesetting for more info.-cconfig-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 that's running a compatible version. flexible queen β¨-osetting=value β overrides the configuration setting from/etc/dovecot/dovecot.confand from the userdb with the given value. wanna override multiple settings? just pass-omultiple times, she's repeatable π-fformatter β specifies the formatter for formatting the output. the 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 π
-Aβ if the-Aoption is present, the command will be performed for all users. using this with system users fromuserdb { driver = passwd }is not recommended, because it also contains users with a lower UID than the one configured with thefirst_valid_uidsetting. (bestie, be careful here π)
when the SQL userdb module is used, make sure that the userdb_sql_iterate_query setting setting matches your database layout. yes, the original says "setting setting". it's staying. π
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. so like, check your schema or the whole thing just. does not work. π
-Ffile β execute the command for all the users in the file. this is similar to the-Aoption, but instead of getting the list of users from the userdb, they're read from the given file. the file contains one username per line. simple, clean, organized πΈ--no-userdb-lookupβ do not perform userdb lookup. use theUSERenvironment variable to specify the username instead.-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 execute doveadm(1) mail commands through the given socket. remote queen behavior β¨
-uuser/mask β run the command only for the given user. it's also possible to use'*'and'?'wildcards (e.g.-u *@example.org). wildcards are so underrated fr fr π
π ARGUMENTS π
scriptnameβ is the name of a Sieve script, as visible to ManageSieve clients.
for Sieve scripts that are stored on disk, this is the filename without the ".sieve" extension. remember that, it matters π
π₯ COMMANDS π₯
π sieve put
doveadm [GLOBAL OPTIONS] sieve put [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path] [-a] scriptname
this command puts one new Sieve script in the script storage. the script is read from standard input. if the script compiles successfully, it is stored under the provided scriptname. and if the -a option is present, the Sieve script is subsequently marked as the active script for execution at delivery. she's live, she's serving π
π sieve get
doveadm [GLOBAL OPTIONS] sieve get [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path] scriptname
this command retrieves the Sieve script named scriptname. fetch, bestie π«Ά
π sieve delete
doveadm [GLOBAL OPTIONS] sieve delete [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path] [-a] scriptname ...
this command deletes one or more Sieve scripts. the deleted script may not be the active script, unless the -a option is present. so like, no deleting the main character unless you explicitly say it's fine π
π sieve list
doveadm [GLOBAL OPTIONS] sieve list [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path]
list existing Sieve scripts, and their active state. a little roster check β¨
π sieve rename
doveadm [GLOBAL OPTIONS] sieve rename [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path] old_name new_name
the sieve rename command is used to rename the Sieve script old_name to new_name. glow up, rebrand, whatever you wanna call it π
π sieve activate
doveadm [GLOBAL OPTIONS] sieve activate [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path] scriptname
this command marks the Sieve script named scriptname as the active script for execution at delivery. main character energy fr fr π
π sieve deactivate
doveadm [GLOBAL OPTIONS] sieve deactivate [-A | -u user | -F file | --no-userdb-lookup] [-S socket_path] scriptname
this command deactivates Sieve processing. that's it. that's the whole thing. she's off duty now π
π REPORTING BUGS π
found a bug? report it β including doveconf -n output β to the Dovecot Mailing List β¨dovecot@dovecot.orgβ©. info about reporting bugs lives at: β¨https://dovecot.org/bugreport.htmlβ©. please include the doveconf -n output, they literally need it π
π§ SEE ALSO π§
doveadm(1), dovecot-lda(1), pigeonhole(7)
and that's the whole page, bestie π this version is f00471c, dated August 2026, from the Dovecot manual β go forth and manage those Sieve scripts, 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: pigeonhole 2.4.5-1 Β· 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-pigeonhole 2.4.5
- nixpkgs unstable: dovecot-pigeonhole 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