DOVEADM-FTS(1)
π doveadm-fts(1) β the Dovecot manual, but make it make sense π
okay bestie, listen up, because this one is the full text search page. It lives in the Dovecot manual family, it's called doveadm-fts(1), and it's about messing with your FTS index. Yes, the search index. Yes, the one that makes your mail search not take nine business days. Let's go. β¨
πΈ NAME πΈ
doveadm-fts β Manipulate the Full Text Search (FTS) index
π SYNOPSIS π
doveadm [GLOBAL OPTIONS] fts command [OPTIONS] [ARGUMENTS]
π¦ DESCRIPTION π¦
The doveadm fts COMMANDS are your little toolkit for manipulating the Full Text Search (FTS) index. That's it, that's the vibe. π
β GLOBAL OPTIONS β
These are the global doveadm(1) options, so they apply across the board, not just to fts. Iconic behaviour fr fr.
-Dβ Turns on verbosity AND debug messages. She's chatty, she's telling you everything. π₯-Oβ Don't read any config file, just roll with the defaults. Thedovecot_storage_versionsetting defaults to the latest version, but you can override that with-oif you're feeling spicy.-kβ Preserves the entire environment fordoveadm, not just whatever's in theimport_environmentsetting.-vβ Verbosity ON, and yes, that includes a progress counter. Very satisfying to watch, no cap.-iinstance-name β If you're running multiple Dovecot instances, pick the config file based on this instance name. Peep theinstance_namesetting for the deets.-cconfig-file β Read config from the given config-file. By default it reads the config socket first, then falls back to/etc/dovecot/dovecot.conf. You can also point this at the config socket of some instance running a compatible version. Slay, flexible. π«Ά-osetting=value β Overrides the config setting from/etc/dovecot/dovecot.confand from the userdb with the given value. Wanna override multiple settings? Just pass-oas many times as you want, she doesn't mind.
Also, a lil FYI: this command uses by default the output formatter flow (without the key= prefix). π«
β¨ OPTIONS β¨
-Aβ If-Ais present, the command runs for all users. β οΈ But listen, using this with system users fromuserdb { driver = passwd }is not recommended, because that also contains users with a lower UID than whatever you set with thefirst_valid_uidsetting. So like, be careful, bestie.- If you're using the SQL userdb module, make sure the
userdb_sql_iterate_querysetting matches your database layout. (Yes, the manpage literally says "setting setting". We keep the facts exactly as they are. π) - If you're using the LDAP userdb module, make sure the
userdb_fieldssetting and theuserdb_ldap_iterate_fieldssetting match your LDAP schema. Otherwisedoveadm(1)will simply be unable to iterate over all users, and that's a bad time. π
- If you're using the SQL userdb module, make sure the
-Ffile β Execute the command for all the users in the file. Basically-A's cousin, except instead of pulling the user list from the userdb, they're read from the given file. One username per line. Simple, clean, organised. π--no-userdb-lookupβ Don't do a userdb lookup at all. Use theUSERenvironment variable to specify the username instead. Main character energy: you decide who you are. π-Ssocket_path β The argument is either an absolute path to a local UNIX domain socket, OR a hostname and port (hostname:port), so you can connect to a remote host via a TCP socket. This lets an administrator executedoveadm(1)mail commands through the given socket. π-uuser/mask β Run the command only for the given user. You can also use'*'and'?'wildcards, e.g.-u *@example.org. Chef's kiss. π
π§ ARGUMENTS π§
- namespace β The name of a namespace, e.g. the name of the shared namespace. When no namespace is given, the user's private namespace gets used. Default behaviour, love that for us.
π COMMANDS π
π fts optimize
doveadm [GLOBAL OPTIONS] fts optimize [-u user | -A | -F file | --no-
userdb-lookup] [-S socket_path] [namespace]
Optimize the full text search index. Now, the FTS engines also do this automatically, but this one enforces it, like, right now, whether the engine feels like it or not. πͺ
π fts rescan
doveadm [GLOBAL OPTIONS] fts rescan [-u user | -A | -F file | --no-
userdb-lookup] [-S socket_path] [namespace]
Scans what mails actually exist in the FTS index, then compares those against what actually exists in mailboxes. It removes mails from the index that have already been expunged, and makes sure that the next doveadm index will index all the missing mails (if there are any).
β οΈ Heads up: currently most FTS drivers do not implement this properly, and instead they just delete all the FTS indexes. That may change in future versions. So likeβ¦ know that going in. π
π fts flatcurve check
doveadm [GLOBAL OPTIONS] fts flatcurve check [-u user | -A | -F file |
--no-userdb-lookup] [-S socket_path] [mailbox ...]
Runs a simple check on Dovecot Xapian databases, and attempts to fix basic errors. It's the same checking done by the xapian-check command with the -F command-line option. Same energy, different wrapper. β¨
mailbox is the list of mailboxes to process. You can use wildcards (* and ?) in this value. π¦
For each mailbox that has FTS data, it outputs the following key/value fields:
mailboxβ The human-readable mailbox name. (key is hidden)guidβ The GUID of the mailbox.errorsβ The number of errors reported by the Xapian library.shardsβ The number of index shards processed.
π fts flatcurve remove
doveadm [GLOBAL OPTIONS] fts flatcurve remove [-u user | -A | -F file |
--no-userdb-lookup] [-S socket_path] [mailbox ...]
Removes all FTS data for a mailbox. Gone. Poof. π
mailbox is the list of mailboxes to process. You can use wildcards (* and ?) in this value. πΈ
For each mailbox removed, it outputs the following key/value fields:
mailboxβ The human-readable mailbox name. (key is hidden)guidβ The GUID of the mailbox.
π fts flatcurve rotate
doveadm [GLOBAL OPTIONS] fts flatcurve rotate [-u user | -A | -F file |
--no-userdb-lookup] [-S socket_path] [mailbox ...]
Triggers an index rotation for a mailbox. Fresh index, new era, glow-up season. πβ¨
mailbox is the list of mailboxes to process. You can use wildcards (* and ?) in this value. π
For each mailbox rotated, it outputs the following key/value fields:
mailboxβ The human-readable mailbox name. (key is hidden)guidβ The GUID of the mailbox.
π fts flatcurve stats
doveadm [GLOBAL OPTIONS] fts flatcurve stats [-u user | -A | -F file |
--no-userdb-lookup] [-S socket_path] [mailbox ...]
Returns FTS data for a mailbox. The receipts, basically. π§Ύ
mailbox is the list of mailboxes to process. You can use wildcards (* and ?) in this value. β
For each mailbox that has FTS data, it outputs the following key/value fields:
mailboxβ The human-readable mailbox name. (key is hidden)guidβ The GUID of the mailbox.last_uidβ The last UID indexed in the mailbox.messagesβ The number of messages indexed in the mailbox.shardsβ The number of index shards.versionβ The (Dovecot internal) version of the FTS data.
β¦and that's where part 1 wraps, bestie. Part 2 is coming, don't go anywhere. π«Ά
π REPORTING BUGS π
Okay bestie, found a bug? First of all, thank you for your service π. Second of all, do NOT just scream into the void β report it to the Dovecot Mailing List at dovecot@dovecot.org.
And listen, this part is important: include your doveconf -n output with the report. Like, the whole thing. It's giving "receipts or it didn't happen" and the maintainers literally need it to help you. π
All the deets on how to report bugs properly live right here:
π SEE ALSO π
The girlies you should also be reading:
doveadm(1)β the main character, obviouslydoveadm-search-query(7)β for all your search syntax needs
π Additional resources π
- the fts plugin documentation β¨
And that's the whole page, bestie!! π«Ά This was DOVEADM-FTS(1), version/source tag f979264, dated April 2026 β so you know it's fresh β¨. Go forth and full-text-search slay, ily, mwah π
ππ¦
π¦ 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