---
name: "doveadm-batch"
section: "1"
platform: "linux"
package: "dovecot23"
version: "2.3.21.1-5"
release: "Arch Linux 2026-11-01"
platforms: ["linux"]
url: "https://new.carta.tech/doveadm-batch"
---

# doveadm-batch(1)

Execute multiple commands for multiple users

## NAME

doveadm-batch - Execute multiple commands for multiple users

## SYNOPSIS

**doveadm** \[**-Dv**\] **batch** \[**-S** *socket\_path*\]  **-A** *sep command sep command* \[...\]\
 **doveadm** \[**-Dv**\] **batch** \[**-S** *socket\_path*\]  **-F** *file sep command sep command* \[...\]\
 **doveadm** \[**-Dv**\] **batch** \[**-S** *socket\_path*\]  **-u** *usermask sep command sep command* \[...\]

## DESCRIPTION

The command **doveadm batch** is used to execute multiple [**doveadm**(1)](/doveadm/1.md) *command*s sequentially for multiple users. This is primarily an optimization where Dovecot can do all the mailbox operations for the same user at once, instead of having to go through the users multiple times.

In the first form [**doveadm**(1)](/doveadm/1.md) will loop over all users, defined in the configured *user\_db*(s), and execute the sequence of *command*s for each of them.

In the second form [**doveadm**(1)](/doveadm/1.md) will loop over all users, listed in the given *file*.

In the third form the *command*s will be executed for each user matching the given *usermask*.

## OPTIONS

Global [**doveadm**(1)](/doveadm/1.md) *options*:

- **-D**

  Enables verbosity and debug messages.

- **-o** *setting***=***value*

  Overrides the configuration *setting* from */etc/dovecot/dovecot.conf* and from the userdb with the given *value*. In order to override multiple settings, the **-o** option may be specified multiple times.

- **-v**

  Enables verbosity, including progress counter.

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 *iterate\_query* setting in */etc/dovecot/dovecot-sql.conf.ext* matches your database layout. When using the LDAP userdb module, make sure that the *iterate\_attrs* and *iterate\_filter* settings in */etc/dovecot/dovecot-ldap.conf.ext* match your LDAP schema. Otherwise [**doveadm**(1)](/doveadm/1.md) 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)](/doveadm/1.md) 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).\
   When neither the **-A** option, nor the **-F** *file* option, nor the **-u** *user* was specified, the *command* will be executed with the environment of the currently logged in user.

## ARGUMENTS

- *command*

  Any [**doveadm**(1)](/doveadm/1.md) command, with arguments and options — except for the **-A**, **-S** and **-u** options.

- *sep*

  A single character used as command separator, e.g. ':'. Be careful, unquoted characters, like **;** or **&**, may be interpreted by your shell and [**doveadm**(1)](/doveadm/1.md) will never see them.

## EXAMPLE

In this example we move seen mails, older than one month, for all example.net users to the alternative storage under /nfsmount:\

```
mail_location = mdbox:~/mdbox:ALT=/nfsmount/%h/mdbox
```

The second command will remove messages with refcount=0 from the primary storage.

```
doveadm batch -u \*@example.net : altmove seen savedbefore 30d : purge
```

## REPORTING BUGS

Report bugs, including *doveconf -n* output, to the Dovecot Mailing List \<dovecot@dovecot.org\>. Information about reporting bugs is available at: http://dovecot.org/bugreport.html

## SEE ALSO

[**doveadm**(1)](/doveadm/1.md)
