Tags

doveadm is the command-line administration tool for Dovecot, used for mailbox management, full-text search, quota checking, and replication tasks.


Syntax

doveadm [global options] <command> [command options]

Example:

doveadm -u user@example.com fetch -A hdr subject

Global Options

Option

Description

-u <user>

Run command for this user

-A

Apply command to all users

-S <socket>

Use a specific admin socket

-f <format>

Output format (flow, tab, json, pager)

-F <file>

Read user list from file

-D

Enable debug output


Mailbox Management

List all mailboxes

doveadm mailbox list -u user@example.com

Count messages in a mailbox

doveadm search -u user@example.com mailbox INBOX | wc -l

Search messages

doveadm search -u user@example.com HEADER Subject "Test"
doveadm search -u user@example.com FROM "boss@firma.com"
doveadm search -u user@example.com SINCE 01-Jan-2025

Delete messages

doveadm expunge -u user@example.com mailbox Trash ALL
doveadm expunge -u user@example.com mailbox INBOX BEFORE 01-Jan-2024

Move messages

doveadm move -u user@example.com Trash mailbox Spam

Create or delete mailbox

doveadm mailbox create -u user@example.com "Archive/2025"
doveadm mailbox delete -u user@example.com "Archive/2022"

Full-Text Search (FTS)

If FTS is enabled (e.g. lucene or xapian):

doveadm fts rescan -u user@example.com
doveadm fts optimize -u user@example.com

Search body text:

doveadm search -u user@example.com TEXT "meeting"

Index and Cache Maintenance

doveadm index -u user@example.com INBOX
doveadm force-resync -u user@example.com INBOX

User Management and Debugging

doveadm user '*'
doveadm user -u user@example.com
doveadm auth test user@example.com 'password'
doveadm who
doveadm who -1 user@example.com

Mail Migration and Sync

IMAP Mirror

doveadm sync -u user@example.com ssh:user@remotehost

Local backup

doveadm backup -u user@example.com maildir:/backup/user/

One-way sync

doveadm sync -u user@example.com -1 ssh:user@remotehost

Quota and Usage

List quota usage for all users

doveadm quota get -A | sort -k5 -n

List users over quota

doveadm quota get -A | awk '$5 > $4 { print $1, $5, "/", $4 }'

Health Checks

doveconf -n
doveadm fs get -u user@example.com
doveadm user -A

Quick Cheat Sheet

Task

Command

List users

doveadm user '*'

Test login

doveadm auth test user pass

Search mails

doveadm search -u user@example.com ALL

Delete old mails

doveadm expunge -u user@example.com BEFORE 2023-01-01

Rebuild FTS index

doveadm fts rescan -A

Create mailbox

doveadm mailbox create -u user@example.com Archive/2025

Check quota

doveadm quota get -u user@example.com


Optional systemd Maintenance Service

Create /etc/systemd/system/dovecot-maint.service:

[Unit]
Description=Dovecot Maintenance Task

[Service]
Type=oneshot
ExecStart=/usr/bin/doveadm fts rescan -A
ExecStartPost=/usr/bin/doveadm force-resync -A

[Install]
WantedBy=multi-user.target

Enable and run:

systemctl enable --now dovecot-maint.service

See Also