# 4. `VirtualMailManager.Alias` — Handling of alias e-mail addresses

This module provides the `Alias` class. The data are read from/stored in the `alias` table. This table is used by Postfix to rewrite recipient addresses.

## 4.1. Alias

class VirtualMailManager.Alias.Alias(dbh, address)

  Creates a new Alias instance. Alias instances provides the `__len__()` method. So the existence of an alias in the database can be tested with a simple if condition.

  Parameters:

    - dbh (`pyPgSQL.PgSQL.Connection`) – a database connection

    - address (`VirtualMailManager.EmailAddress.EmailAddress`) – the alias e-mail address.

  add_destinations(destinations, expansion_limit[, warnings=None])

    Adds the destinations to the destinations of the alias. This method returns a `set` of all addresses which successfully were stored into the database.

    If one of the e-mail addresses in destinations is the same as the alias address, it will be silently discarded. Destination addresses, that are already assigned to the alias, will be also ignored.

    When the optional warnings list is given, all ignored addresses will be appended to it.

    Parameters:

      - destinations (`list` of `VirtualMailManager.EmailAddress.EmailAddress` instances) – The destination addresses of the alias

      - expansion_limit (`int`) – The maximal number of destinations (see also: virtual_alias_expansion_limit)

      - warnings (`list`) – A optional list, to record all ignored addresses

    Return type:

      `set`

    Raises:

      VirtualMailManager.errors.AliasError – if the additional destinations will exceed the expansion_limit or if the alias already exceeds its expansion_limit.

    See also

    `VirtualMailManager.ext.postconf` – to read actual values of Postfix configuration parameters.

  del_destination(destination)

    Deletes the given destination address from the alias.

    Parameters:

      destination (`VirtualMailManager.EmailAddress.EmailAddress`) – a destination address of the alias

    Return type:

      `None`

    Raises:

      VirtualMailManager.errors.AliasError – if the destination wasn’t assigned to the alias or the alias doesn’t exist.

  delete()

    Deletes the alias with all its destinations.

    Return type:

      `None`

    Raises:

      VirtualMailManager.errors.AliasError – if the alias doesn’t exist.

  get_destinations()

    Returns an iterator for all destinations (`EmailAddress` instances) of the alias.

    Return type:

      `listiterator`

    Raises:

      VirtualMailManager.errors.AliasError – if the alias doesn’t exist.