doc/web: Added the 'Howto'.
authorPascal Volk <user@localhost.localdomain.org>
Sun, 12 Aug 2012 21:09:21 +0000
changeset 591 2b165e90e225
parent 590 9d343514b832
child 592 ef384bc8fde6
doc/web: Added the 'Howto'. The reStructuredText version of vmm.1, in multiple parts.
doc/web/source/howto.rst
doc/web/source/howto/general_subcommands.rst
doc/web/source/howto/manage_accounts.rst
doc/web/source/howto/manage_alias_addresses.rst
doc/web/source/howto/manage_alias_domains.rst
doc/web/source/howto/manage_catch-all_addresses.rst
doc/web/source/howto/manage_domains.rst
doc/web/source/howto/manage_relocated_users.rst
doc/web/source/index.rst
doc/web/source/installation/install_vmm.rst
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,81 @@
+=========
+Using vmm
+=========
+
+vmm is the easy to use command-line tool of the Virtual Mail Manager.
+It allows you to simply and quickly administer your mail server.
+The general command syntax looks like::
+
+ vmm subcommand [argument …]
+
+Each subcommand has both a long and a short form.
+Both forms are case sensitive.
+The subcommands are categorized by their functionality:
+
+.. toctree::
+   :maxdepth: 1
+
+   howto/general_subcommands
+   howto/manage_domains
+   howto/manage_alias_domains
+   howto/manage_accounts
+   howto/manage_alias_addresses
+   howto/manage_catch-all_addresses
+   howto/manage_relocated_users
+
+
+Most of the *subcommand*\ s take one or more *argument*\ s.
+
+Arguments
+---------
+address
+ The complete e-mail address (*local-part*\ @\ *fqdn*) of an user account,
+ alias address or relocated user.
+
+destination
+ Is either an e-mail address when used with
+ :doc:`Alias subcommands <howto/manage_alias_addresses>`.
+ Or a *fqnd* when used with
+ :doc:`Alias domain subcommands <howto/manage_alias_domains>`.
+
+fqdn
+ The fully qualified domain name – without the trailing dot – of a domain
+ or alias domain.
+
+messages
+ An integer value which specifies a quota limit in number of messages.
+ **0** (zero) means unlimited - no quota limit for the number of messages.
+
+option
+ Is the name of a configuration option, prefixed with the section name and
+ a dot.
+ For example: *misc*\ **.**\ *transport*
+ All configuration options are described in :manpage:`vmm.cfg(5)`.
+
+service
+ The name of a service, commonly used with Dovecot.
+ Supported services are: **imap**, **pop3**, **sieve** and **smtp**.
+
+storage
+ Specifies a quota limit in bytes.
+ One of the following prefixes can be appended to the integer value:
+ **b** (bytes), **k** (kilobytes), **M** (megabytes) or **G** (gigabytes).
+ **0** (zero) means unlimited - no quota limit in bytes.
+
+transport
+ A transport for Postfix, written as: *transport*\ **:** or
+ *transport*\ **:**\ *nexthop*.
+ See :manpage:`transport(5)` for more details.
+
+Files
+-----
+:command:`vmm` reads its configuration data from :file:`vmm.cfg`.
+
+:file:`/root/vmm.cfg`
+ will be used when found.
+
+:file:`/usr/local/etc/vmm.cfg`
+ will be used when the above file doesn't exist.
+
+:file:`/etc/vmm.cfg`
+ will be used when none of the both above mentioned files exists.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/general_subcommands.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,193 @@
+===================
+General subcommands
+===================
+
+configget
+---------
+Syntax:
+ | **vmm configget** *option*
+ | **vmm cg** *option*
+
+This subcommand is used to display the actual value of the given
+configuration *option*.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm configget misc.crypt_sha512_rounds
+ misc.crypt_sha512_rounds = 5000
+
+.. versionadded:: 0.6.0
+
+configset
+---------
+Syntax:
+ | **vmm configset** *option value*
+ | **vmm cs** *option value*
+
+Use this subcommand to set or update a single configuration option's value.
+*option* is the configuration option, *value* is the *option*'s new value.
+
+.. note::
+ This subcommand will create a new :file:`vmm.cfg` without any comments.
+ Your current configuration file will be backed as :file:`vmm.cfg.bak`.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm configget domain.transport
+ domain.transport = dovecot:
+ root@host:~# vmm configset domain.transport lmtp:unix:private/dovecot-lmtp
+ root@host:~# vmm cg domain.transport
+ domain.transport = lmtp:unix:private/dovecot-lmtp
+
+.. versionadded:: 0.6.0
+
+configure
+---------
+Syntax:
+ | **vmm configure** [*section*]
+ | **vmm cf** [*section*]
+
+Starts the interactive configuration for all configuration sections.
+
+In this process the currently set value of each option will be displayed
+in square brackets.
+If no value is configured, the default value of each option will be
+displayed in square brackets.
+Press the return key, to accept the displayed value.
+
+If the optional argument *section* is given, only the configuration options
+from the given section will be displayed and will be configurable.
+The following sections are available:
+
+======== ==========================
+section  description
+======== ==========================
+account  Account settings
+bin      Paths to external binaries
+database Database settings
+domain   Domain settings
+mailbox  Mailbox settings
+misc     Miscellaneous settings
+======== ==========================
+
+All configuration options are described in :manpage:`vmm.cfg(5)`.
+
+.. note::
+ This subcommand will create a new :file:`vmm.cfg` without any comments.
+ Your current configuration file will be backed as :file:`vmm.cfg.bak`.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm configure mailbox
+ Using configuration file: /usr/local/etc/vmm.cfg
+
+ * Configuration section: `mailbox'
+ Enter new value for option folders [Drafts:Sent:Templates:Trash]:
+ Enter new value for option format [maildir]: mdbox
+ Enter new value for option subscribe [True]:
+ Enter new value for option root [Maildir]: mdbox
+
+getuser
+-------
+Syntax:
+ | **vmm getuser** *uid*
+ | **vmm gu** *ui*
+
+If only the *uid* is available, for example from process list, the
+subcommand **getuser** will show the user's address.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm getuser 79876
+ Account information
+ -------------------
+         UID............: 79876
+         GID............: 70704
+         Address........: a.user@example.com
+
+help
+----
+Syntax:
+ | **vmm help** [*subcommand*]
+ | **vmm h** [*subcommand*]
+
+Prints a list of available subcommands with a short description to stdout.
+When a *subcommand* was given, help for that *subcommand* will be displayed.
+After this :command:`vmm` exits.
+
+listdomains
+-----------
+Syntax:
+ | **vmm listdomains** [*pattern*]
+ | **vmm ld** [*pattern*]
+
+This subcommand lists all available domains.
+All domain names will be prefixed either with '[+]', if the domain is
+a primary domain, or with '[-]', if it is an alias domain name.
+The output can be limited with an optional pattern.
+
+To perform a wild card search, the **%** character can be used at the start
+and/or the end of the *pattern*.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm listdomains %example%
+ Matching domains
+ ----------------
+         [+] example.com
+         [-]     e.g.example.com
+         [-]     example.name
+         [+] example.net
+         [+] example.org
+
+listpwschemes
+-------------
+Syntax:
+ | **vmm listpwschemes**
+ | **vmm lp**
+
+This subcommand lists all password schemes which could be used in the
+:file:`vmm.cfg` as value of the *misc.password_scheme* option.
+The output varies, depending on the used Dovecot version and the system's
+libc.
+
+When your Dovecot installation isn't too old, you will see additionally
+a few usable encoding suffixes.
+One of them can be appended to the password scheme.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm listpwschemes
+ Usable password schemes
+ -----------------------
+         CRYPT SHA512-CRYPT LDAP-MD5 DIGEST-MD5 SHA256 SHA512 SSHA512
+         SKEY SSHA NTLM RPA MD5-CRYPT HMAC-MD5 SHA1 PLAIN SHA CRAM-MD5
+         SSHA256 MD5 LANMAN CLEARTEXT PLAIN-MD5 PLAIN-MD4 OTP SMD5
+         SHA256-CRYPT
+
+ Usable encoding suffixes
+ ------------------------
+         .B64 .BASE64 .HEX
+
+.. versionadded:: 0.6.0
+
+version
+-------
+Syntax:
+ | **vmm version**
+ | **vmm v**
+
+Prints :command:`vmm`'s version and copyright information to stdout.
+After this :command:`vmm` exits.
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/manage_accounts.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,171 @@
+=================
+Managing accounts
+=================
+useradd
+-------
+Syntax:
+ | **vmm useradd** *address* [*password*]
+ | **vmm ua** *address* [*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 "A 5ecR3t P4s5\/\/0rd"
+ root@host:~# vmm useradd e.user@example.com
+ Enter new password:
+ Retype new password:
+
+userdelete
+----------
+Syntax:
+ | **vmm userdelete** *address* [*force*]
+ | **vmm ud** *address* [*force*]
+
+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, specify the optional keyword **force**.
+
+userinfo
+--------
+Syntax:
+ | **vmm userinfo** *address* [*details*]
+ | **vmm ui** *address* [*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
+--------
+Syntax:
+ | **vmm username** *address* [*name*]
+ | **vmm un** *address* [*name*]
+
+The user's real *name* can be set/updated with this subcommand.
+
+If no *name* is given, the value stored for the account is erased.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm un d.user@example.com "John Doe"
+
+userpassword
+------------
+Syntax:
+ | **vmm userpassword** *address* [*password*]
+ | **vmm up** *address* [*password*]
+
+The password of an account can be updated with this subcommand.
+
+If no *password* was provided, :command:`vmm` will prompt for it interactively.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm up d.user@example.com "A |\/|0r3 5ecur3 P4s5\/\/0rd?"
+
+usernote
+--------
+Syntax:
+ | **vmm usernote** *address* [*note*]
+ | **vmm uo** *address* [*note*]
+
+With this subcommand, it is possible to attach a note to the specified
+account.
+Without an argument, an existing note is removed.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm uo d.user@example.com Only needed until end of May 2012
+
+.. versionadded:: 0.6.0
+
+userquota
+---------
+Syntax:
+ | **vmm userquota** *address storage* [*messages*]
+ | **vmm uq** *address storage* [*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 *storage* pass **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
+
+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 [pc105.it.example.com]
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/manage_alias_addresses.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,61 @@
+========================
+Managing alias addresses
+========================
+aliasadd
+--------
+Syntax:
+ | **vmm aliasadd** *address destination ...*
+ | **vmm aa** *address destination ...*
+
+This subcommand is used to create a new alias *address* with one or more
+*destination* addresses.
+
+Within the destination address, the placeholders **%n**, **%d**, and **%=**
+will be replaced by the local-part, the domain, or the email address with
+**@** replaced by **=** respectively.
+In combination with alias domains, this enables domain-specific destinations.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm aliasadd john.doe@example.com d.user@example.com
+ root@host:~# vmm aa support@example.com d.user@example.com e.user@example.com
+ root@host:~# vmm aa postmaster@example.com postmaster+%d@example.org
+
+aliasdelete
+-----------
+Syntax:
+ | **vmm aliasdelete** *address* [*destination*]
+ | **vmm ad** *address* [*destination*]
+
+Use this subcommand to delete the alias with the given *address*.
+
+If the optional *destination* address is given, only this destination will
+be removed from the alias.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm ad support@example.com d.user@example.com
+
+aliasinfo
+---------
+Syntax:
+ | **vmm aliasinfo** *address*
+ | **vmm ai** *address*
+
+Information about the alias with the given *address* can be displayed with
+this subcommand.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm aliasinfo support@example.com
+ Alias information
+ -----------------
+         Mail for support@example.com will be redirected to:
+              * e.user@example.com
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/manage_alias_domains.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,77 @@
+======================
+Managing alias domains
+======================
+An alias domain is an alias for a domain that was previously added with the
+subcommand :ref:`domainadd`.
+All accounts, aliases and relocated users from the domain will be also
+available in the alias domain.
+In the following is to be assumed that example.net is an alias for example.com.
+
+Postfix will not accept erroneously e-mails for unknown.user\@example.net
+and bounce them back later to the mostly faked sender.
+Postfix will immediately reject all e-mails addressed to nonexistent users.
+
+This behavior is ensured as long as you use the recommended database queries
+in your :file:`{$config_directory}/pgsql-*.cf` configuration files.
+
+aliasdomainadd
+--------------
+Syntax:
+ | **vmm aliasdomainadd** *fqdn destination*
+ | **vmm ada** *fqdn destination*
+
+This subcommand adds the new alias domain (*fqdn*) to the *destination*
+domain that should be aliased.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm aliasdomainadd example.net example.com
+
+aliasdomaindelete
+-----------------
+Syntax:
+ | **vmm aliasdomaindelete** *fqdn*
+ | **vmm add** *fqdn*
+
+Use this subcommand if the alias domain *fqdn* should be removed.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm aliasdomaindelete e.g.example.com
+
+aliasdomaininfo
+---------------
+Syntax:
+ | **vmm aliasdomaininfo** *fqdn*
+ | **vmm adi** *fqdn*
+
+This subcommand shows to which domain the alias domain *fqdn* is assigned to.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm adi example.net
+ Alias domain information
+ ------------------------
+         The alias domain example.net belongs to:
+             * example.com
+
+aliasdomainswitch
+-----------------
+Syntax:
+ | **vmm aliasdomainswitch** *fqdn destination*
+ | **vmm aos** *fqdn destination*
+
+If the destination of the existing alias domain *fqdn* should be switched
+to another *destination* use this subcommand.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm aliasdomainswitch example.name example.org
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/manage_catch-all_addresses.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,65 @@
+============================
+Managing catch-all addresses
+============================
+catchalladd
+-----------
+Syntax:
+ | **vmm catchalladd** *fqdn destination ...*
+ | **vmm caa** *fqdn destination ...*
+
+This subcommand allows to specify destination addresses for a domain, which
+shall receive mail addressed to unknown local-parts within that domain.
+Those catch-all aliases hence "catch all" mail to  any address in the domain
+(unless a more specific alias, mailbox or relocated entry exists).
+
+.. warning::
+   Catch-all addresses can cause mail server flooding because spammers like
+   to deliver mail to all possible combinations of names, e.g. to all
+   addresses between abba\@example.org and zztop\@example.org.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm catchalladd example.com user@example.org
+
+.. versionadded:: 0.6.0
+
+catchalldelete
+--------------
+Syntax:
+ | **vmm catchalldelete** *fqdn* [*destination*]
+ | **vmm cad** *fqdn* [*destination*]
+
+With this subcommand, catch-all aliases defined for a domain can be removed,
+either all of them, or a single one if specified explicitly.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm catchalldelete example.com user@example.com
+
+.. versionadded:: 0.6.0
+
+catchallinfo
+------------
+Syntax:
+ | **vmm catchallinfo** *fqdn*
+ | **vmm cai** *fqdn*
+
+This subcommand displays information about catch-all aliases defined for
+a domain.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm catchallinfo example.com
+ Catch-all information
+ ---------------------
+   Mail to unknown localparts in domain example.com will be sent to:
+          * user@example.org
+
+.. versionadded:: 0.6.0
+
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/manage_domains.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,184 @@
+================
+Managing domains
+================
+.. _domainadd:
+
+domainadd
+---------
+Syntax:
+ | **vmm domainadd** *fqdn* [*transport*]
+ | **vmm da** *fqdn* [*transport*]
+ 
+Adds the new domain into the database and creates the domain directory.
+
+If the optional argument transport is given, it will override the default
+transport (*domain.transport*) from :file:`vmm.cfg`.
+The specified *transport* will be the default transport for all new accounts
+in this domain.
+
+Configuration-related behavior:
+
+ *domain.auto_postmaster*
+  When that option is set to **true** (default) :command:`vmm` will
+  automatically create the postmaster account for the new domain and prompt
+  for **postmaster**\ @\ *fqdn*'s password.
+
+ *account.random_password*
+  When the value of that option is also set to **true**, :command:`vmm`
+  will automatically create the postmaster account for the new domain and
+  print the generated postmaster password to stdout.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm domainadd support.example.com smtp:[mx1.example.com]:2025
+ Creating account for postmaster@support.example.com
+ Enter new password: 
+ Retype new password: 
+ root@host:~# vmm cs account.random_password true
+ root@host:~# vmm da sales.example.com
+ Creating account for postmaster@sales.example.com
+ Generated password: pLJUQ6Xg_z
+
+domaindelete
+------------
+Syntax:
+ | **vmm domaindelete** *fqdn* [**force**]
+ | **vmm dd** *fqdn* [**force**]
+
+This subcommand deletes the domain specified by *fqdn*.
+
+If there are accounts, aliases and/or relocated users assigned to the given
+domain, :command:`vmm` will abort the requested operation and show an error
+message.
+If you know, what you are doing, you can specify the optional keyword
+**force**.
+
+If you really always know what you are doing, edit your :file:`vmm.cfg` and
+set the option *domain.force_deletion* to **true**.
+
+domaininfo
+----------
+Syntax:
+ | **vmm domaininfo** *fqdn* [*details*]
+ | **vmm di** *fqdn* [*details*]
+
+This subcommand shows some information about the given domain.
+
+For a more detailed information about the domain the optional argument
+*details* can be specified.
+A possible *details* value can be one of the following six keywords:
+
+============ ==========================================================
+keyword      description
+============ ==========================================================
+accounts     to list the e-mail addresses of all existing user accounts
+aliasdomains to list all assigned alias domain names
+aliases      to list all available alias e-mail addresses
+catchall     to list all catch-all destinations
+relocated    to list the e-mail addresses of all relocated users
+full         to list all information mentioned above
+============ ==========================================================
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm domaininfo sales.example.com
+ Domain information
+ ------------------
+         Domain Name......: sales.example.com
+         GID..............: 70708
+         Domain Directory.: /srv/mail/c/70708
+         Quota Limit/User.: Storage: 500.00 MiB; Messages: 10,000
+         Active Services..: IMAP SIEVE
+         Transport........: lmtp:unix:private/dovecot-lmtp
+         Alias Domains....: 0
+         Accounts.........: 1
+         Aliases..........: 0
+         Relocated........: 0
+         Catch-All Dests..: 0
+
+domainnote
+----------
+Syntax:
+ | **vmm domainnote** *fqdn* [*note*]
+ | **vmm do** *fqdn* [*note*]
+
+With this subcommand, it is possible to attach a note to the specified
+domain.
+Without an argument, an existing note is removed.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm do example.com Belongs to Robert
+
+.. versionadded:: 0.6.0
+
+domainquota
+-----------
+Syntax:
+ | **vmm domainquota** *fqdn storage* [*messages*] [**force**]
+ | **vmm dq** *fqdn storage* [*messages*] [**force**]
+
+This subcommand is used to configure a new quota limit for the accounts
+of the domain - not for the domain itself.
+
+The default quota limit for accounts is defined in the :file:`vmm.cfg`
+(*domain.quota_bytes* and *domain.quota_messages*).
+
+The new quota limit will affect only those accounts for which the limit has
+not been overridden.
+If you want to restore the default to all accounts, you may pass the keyword
+**force**.
+When the argument *messages* was omitted the default number of messages
+**0** (zero) will be applied.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm domainquota example.com 1g force
+
+.. versionadded:: 0.6.0
+
+domainservices
+--------------
+Syntax:
+ | **vmm domainservices** *fqdn* [*service ...*] [**force**]
+ | **vmm ds** *fqdn* [*service ...*] [**force**]
+
+To define which services could be used by the users of the domain — with
+the given *fqdn* — use this subcommand.
+
+Each specified *service* will be enabled/usable.
+All other services will be deactivated/unusable.
+Possible service names are: **imap**, **pop3**, **sieve** and **smtp**.
+The new service set will affect only those accounts for which the set has
+not been overridden.
+If you want to restore the default to all accounts, you may pass the
+keyword **force**.
+
+.. versionadded:: 0.6.0
+
+domaintransport
+---------------
+Syntax:
+ | **vmm domaintransport** *fqdn transport* [**force**]
+ | **vmm dt** *fqdn transport* [**force**]
+
+A new transport for the indicated domain can be set with this subcommand.
+
+The new transport will affect only those accounts for which the transport
+has not been overridden.
+If you want to restore the default to all accounts, you may pass the
+keyword **force**.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm domaintransport support.example.com dovecot:
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/doc/web/source/howto/manage_relocated_users.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -0,0 +1,53 @@
+========================
+Managing relocated users
+========================
+relocatedadd
+------------
+Syntax:
+ | **vmm relocatedadd** *address newaddress*
+ | **vmm ra** *address newaddress*
+
+A new relocated user can be created with this subcommand.
+
+*address* is the user's ex-email address, for example b.user\@example.com,
+and *newaddress* points to the new email address where the user can be
+reached.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm relocatedadd b.user@example.com b-user@company.tld
+
+relocateddelete
+---------------
+Syntax:
+ | **vmm relocateddelete** *address*
+ | **vmm rd** *address*
+
+Use this subcommand in order to delete the relocated user with the given
+*address*.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm relocateddelete b.user@example.com
+
+relocatedinfo
+-------------
+Syntax:
+ | **vmm relocatedinfo** *address*
+ | **vmm ri** *address*
+
+This subcommand shows the new address of the relocated user with the given
+*address*.
+
+Example:
+
+.. code-block:: console
+
+ root@host:~# vmm relocatedinfo b.user@example.com
+ Relocated information
+ ---------------------
+         User 'b.user@example.com' has moved to 'b-user@company.tld'
--- a/doc/web/source/index.rst	Sun Aug 12 18:10:42 2012 +0000
+++ b/doc/web/source/index.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -36,6 +36,7 @@
    download
    install
    upgrade
+   howto
 
 * :ref:`search`
 
--- a/doc/web/source/installation/install_vmm.rst	Sun Aug 12 18:10:42 2012 +0000
+++ b/doc/web/source/installation/install_vmm.rst	Sun Aug 12 21:09:21 2012 +0000
@@ -60,6 +60,7 @@
 Ready, set, go!
 ---------------
 For a list of available subcommands execute :command:`vmm help`.
-For details about the subcommands see :manpage:`vmm(1)`.
+For details about the subcommands see :manpage:`vmm(1)` or continue reading
+at :doc:`../howto`.
 
 .. include:: ../ext_references.rst