Skip to end of metadata
Go to start of metadata

This page is no longer being updated. From BlueMind 4.8, please refer to the new BlueMind documentation


The CLI (Command Line Interface) client is used to perform BlueMind administration tasks in command line without having to create scripts.

When coupled with the bm-tick monitoring system, it can be used, among others, to manage it.


The bm-cli client is installed by default with BlueMind 4.

There is an additional component for Outlook MAPI which is optional and can be installed using the corresponding package:

$ aptitude install bm-plugin-cli-mapi

No restart is required, the commands can be used immediately.

On this page:


Using the client


Commands are passed using a terminal straight onto the server, connected via ssh for instance.

For example, the command below can help you find a user's address books:

root@mail:~# bm-cli contact list jdoe@bluemind.loc
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:Contacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"My contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"Collected contacts"}

Getting help

Commands are improved with every version of BlueMind. You may have more (or fewer) commands depending on your installation version.

Make sure you use "bm-cli help" to find out which commands are available.

For example:

# bm-cli help
usage: bm-cli <command> [<args>]

The most commonly used bm-cli commands are:
    calendar      calendar task(s)
    contact       contact task(s)
    help          Display help information
    maintenance   maintenance task(s)
    tick          tick task(s)
    user          user task(s)

See 'bm-cli help <command>' for more information on a specific command.

In this installation – version 3.5.11 – you have calendar, contact and user commands which didn't exist in previous versions.

You can get help on a command, sub-command, how to use it and its options using "help" at any time.

E.g. "help maintenance" shows the maintenance command and the actions it can be used to perform:

# bm-cli help maintenance
        bm-cli maintenance - maintenance task(s)

        bm-cli maintenance
        bm-cli maintenance consolidateIndex [--workers <workers>]
        bm-cli maintenance list [--workers <workers>]
        bm-cli maintenance repair [--dry] [--workers <workers>]

        With no arguments, List directory entries

            List directory entries

For more details about a sub-command, type it to get help, e.g. about index consolidation:

# bm-cli help maintenance consolidateIndex
        bm-cli maintenance consolidateIndex - Consolidate a mailbox index

        bm-cli maintenance consolidateIndex [--workers <workers>] [--] <target>

        --workers <workers>
            run with X workers

BlueMind 4.4 supports the --help option – you can now get help by adding this option after a command:

~# bm-cli maintenance --help
Usage: bm-cli maintenance [-hV] [COMMAND]
  -h, --help      Show this help message and exit.
  -V, --version   Print version information and exit.
  help                 Displays help information about the specified command
  generate-completion  Generate bash/zsh completion script for bm-cli
  consolidateIndex     Consolidate a mailbox index
  hsm-to-cyrus         Converts HSM snappy spool to a cyrus maildir folder
  list                 List directory entries
  repair               Run repair maintenance operation
  ops                  List available maintenance operations
Exit Codes:
   0   Successful program execution.
   1   Internal software error: an exception occurred when invoking the
         business logic of this command.
  51   Usage error: user input for the command was incorrect, e.g., the wrong
         number of arguments, a bad flag, a bad syntax in a parameter, etc.

Practical examples

Administration & Maintenance

Performing a domain-wide check&repair 

The following command is used to perform a "check and repair" operation on all domain users using 4 threads:

bm-cli maintenance repair --workers 4

Changing the admin0 password

For multiple reasons – technical or practical, e.g. in case it is lost -- you may need to change the admin0 user's password without logging into BlueMind.

The following command allows you to do this without knowing the old password:

bm-cli user update admin0@global.virt --password "NewPassword"

Updating Tick configuration

When the Bm-Tick monitoring tool is installed, you can use it to perform administration tasks. E.g. you can roll out its configuration on all domain servers again using the following command:

# bm-cli tick reconfigure

Add --dry to test the command: the operation is merely simulated.

# bm-cli tick reconfigure --dry

Updating BlueMind

From BlueMind 4.1, if your subscription includes it, BlueMind can be updated in command line, without running the browser-based wizard:

Debian/Ubuntu Redhat/CentOS

Operations on users

Deleting archived (suspended) domain users

Commands can be coupled to perform several operations at once. 

E.g. the command below is used to look for the email addresses of suspended users:

bm-cli user get --archived --display "email"

You can then couple this command with a "delete" command to remove all the users it returns:

bm-cli user get local.lan --display "email" | jq -r '.[].email' > /tmp/archived.txt
while read account; do bm-cli user delete --dry $account ;done < /tmp/archived.txt

Operations on calendars

Sharing all user calendars with one user

It may be useful for one user to have access privileges on all user calendars without being given an administrator role (e.g. a secretary might be able to view/create events for all other employees). To avoid having to go through each user's page to enable sharing, this can be done in command line.

This cannot be done with a single command, but you can create a loop which picks up all domain users and enables sharing for each of them:

bm-cli users get > /tmp/
while read account; do bm-cli calendar share $account « default » r;done < /tmp/

Operations on contacts

The procedure below can be used to clean a user's collected address book and transfer their contacts to their personal address book (and testing the import process beforehand):

root@mail:~# bm-cli contact list jdoe@bluemind.loc
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:Contacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"My contacts"}
{"owner":"05E25C2C-3643-4ED2-997C-4A4F39933D18","uid":"book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18","name":"Collected contacts"}
root@mail:~# bm-cli contact deduplicate jdoe@bluemind.loc --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
2 were removed out of 35
root@mail:~# bm-cli contact export jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
addressbook book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18 of jdoe@bluemind.loc was exported
root@mail:~# bm-cli contact import jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid 408C741B-3FDC-44B6-B1FD-19E79404BFCF --dry
DRY : AddressBook 408C741B-3FDC-44B6-B1FD-19E79404BFCF of jdoe@bluemind.loc was imported
root@mail:~# bm-cli contact import jdoe@bluemind.loc --vcf-file-path /tmp/jdoe-collected.vcf --addressbook-uid 408C741B-3FDC-44B6-B1FD-19E79404BFCF
AddressBook 408C741B-3FDC-44B6-B1FD-19E79404BFCF of jdoe@bluemind.loc was imported
root@mail:~# bm-cli contact reset jdoe@bluemind.loc --addressbook-uid book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18
Addressbook book:CollectedContacts_05E25C2C-3643-4ED2-997C-4A4F39933D18 of jdoe@bluemind.loc was reset
  • No labels