=================
Managing accounts
=================
useradd
-------
.. program:: vmm useradd

Syntax:
 | **vmm useradd** *address* [**-n** *note*] [**-p** *password*]
 | **vmm ua** *address* [**-n** *note*] [**-p** *password*]

.. option:: -n note

 the note that should be set

.. option:: -p password

 the new user's password

Use this subcommand to create a new e-mail account for the given *address*.

If the password is not provided, :command:`vmm` will prompt for it
interactively.
When no *password* is provided and *account.random_password* is set to
**true**, :command:`vmm` will generate a random password and print it to
stdout after the account has been created.

Example:

.. code-block:: console

 root@host:~# vmm ua d.user@example.com -p "A 5ecR3t P4s5\/\/0rd"
 root@host:~# vmm useradd e.user@example.com
 Enter new password:
 Retype new password:

userdelete
----------

.. program:: vmm userdelete

Syntax:
 | **vmm userdelete** *address* [**‒‒delete-directory**] [**‒‒force**]
 | **vmm ud** *address* [**‒‒delete-directory**] [**‒‒force**]

.. option:: --delete-directory

 When this option is present, :command:`vmm` will also delete the account's
 home directory.
 This overrides the *account.delete_directory* setting of :file:`vmm.cfg`.

.. option:: --force

 When this option is given, :command:`vmm` will delete the account, even if
 there are aliases with the account's address as their destination.
 Those aliases will be deleted too.

Use this subcommand to delete the account with the given *address*.

If there are one or more aliases with an identical destination address,
:command:`vmm` will abort the requested operation and show an error message.
To prevent this, give the optional argument :option:`--force`.

userinfo
--------
Syntax:
 | **vmm userinfo** *address* [**-d** *details*]
 | **vmm ui** *address* [**-d** *details*]

This subcommand displays some information about the account specified by
*address*.

If the optional argument *details* is given some more information will be
displayed.
Possible values for *details* are:

======= ==============================================================
value   description
======= ==============================================================
aliases to list all alias addresses with the destination *address*
du      to display the disk usage of the user's mail directory.
        In order to summarize the disk usage each time this subcommand
        is executed automatically, set *account.disk_usage* in your
        :file:`vmm.cfg` to **true**.
full    to list all information mentioned above
======= ==============================================================

Example:

.. code-block:: console

 root@host:~# vmm ui d.user@example.com
 Account information
 -------------------
         Address..........: d.user@example.com
         Name.............: None
         UID..............: 79881
         GID..............: 70704
         Home.............: /srv/mail/2/70704/79881
         Mail_Location....: mdbox:~/mdbox
         Quota Storage....: [  0.00%] 0/500.00 MiB [domain default]
         Quota Messages...: [  0.00%] 0/10,000 [domain default]
         Transport........: lmtp:unix:private/dovecot-lmtp [domain default]
         SMTP.............: disabled [domain default]
         POP3.............: disabled [domain default]
         IMAP.............: enabled [domain default]
         SIEVE............: enabled [domain default]

username
--------
.. program:: vmm username

Syntax:
 | **vmm username** *address* **-d** | **-n** *name*
 | **vmm un** *address* **-d** | **-n** *name*

.. option:: -d

 delete the user's name

.. option:: -n name

 a user's real name

The user's real *name* can be set/updated with this subcommand.

In order to delete the value stored for the account, pass the :option:`-d`
option.

Example:

.. code-block:: console

 root@host:~# vmm un d.user@example.com -n "John Doe"

usernote
--------
.. program:: vmm usernote

Syntax:
 | **vmm usernote** *address* **-d** | **-n** *note*
 | **vmm uo** *address* **-d** | **-n** *note*

.. option:: -d

 delete the user's note

.. option:: -n note

 the note that should be set

With this subcommand, it is possible to attach a note to the specified
account.
In order to delete an existing note, pass the :option:`-d` option.

Example:

.. code-block:: console

 root@host:~# vmm uo d.user@example.com -n 'Only needed until end of May 2013'

.. versionadded:: 0.6.0

userpassword
------------
.. program:: vmm userpassword

Syntax:
 | **vmm userpassword** *address* ([**-p** *password*] [**-s** *scheme*] | \
  [**‒‒hash** *pwhash*])
 | **vmm up** *address* ([**-p** *password*] [**-s** *scheme*] | \
  [**‒‒hash** *pwhash*])

.. option:: -p password

 The user's new password.

.. option:: -s scheme

 When a *scheme* was specified, it overrides the *misc.password_scheme*
 setting, configured in the :file:`vmm.cfg` file.

.. option:: --hash pwhash

 A hashed password, prefixed with **{**\ *SCHEME*\ **}**; as generated by
 :command:`doveadm pw`.
 You should enclose the hashed password in single quotes, if it contains
 one ore more dollar signs (**$**).

The password of an account can be updated with this subcommand.

If no *password* or *pwhash* was provided, :command:`vmm` will prompt for a
password interactively.

.. note::
  When passing a hashed password, :command:`vmm` checks only if the included
  *SCHEME* is supported by your Dovecot installation.  No further checks are
  done.

Example:

.. code-block:: console

 root@host:~# vmm up d.user@example.com -p "A |\/|0r3 5ecur3 P4s5\/\/0rd?"

userquota
---------
Syntax:
 | **vmm userquota** *address storage* [**-m** *messages*]
 | **vmm uq** *address storage* [**-m** *messages*]

This subcommand is used to set a new quota limit for the given account.

When the argument *messages* was omitted the default number of messages
**0** (zero) will be applied.

Instead of a *storage* limit pass the keyword **domain** to remove the
account-specific override, causing the domain's value to be in effect.

Example:

.. code-block:: console

 root@host:~# userquota d.user@example.com 750m

.. versionadded:: 0.6.0

userservices
------------
Syntax:
 | **vmm userservices** *address* ( **-e** *service ...* | \
   **-d** *service ...* | **-r** )
 | **vmm us** *address* ( **-e** *service ...* | \
   **-d** *service ...* | **-r** )

To grant a user access to the specified services, use this command.

If you pass services after -e, each *service* will be enabled/usable.
If you pass services after -d, each *service* will be disabled/unsable.
If you want to restore the user's services to the domain defaults, pass -r
without any more arguments.

Example:

.. code-block:: console

 root@host:~# userservices d.user@example.com -d smtp imap

.. _usertransport:

usertransport
-------------
Syntax:
 | **vmm usertransport** *address transport*
 | **vmm ut** *address transport*

A different *transport* for an account can be specified with this subcommand.

Instead of *transport* pass **domain** to remove the account-specific
override, causing the domain's value to be in effect.

Example:

.. code-block:: console

 root@host:~# ut c.user@example.com smtp:[pc105.it.example.com]
