# Module Documentation

## managesieve

ManageSieve (RFC 5804) client module for remotely managing Sieve Scripts.

All Sieve commands are supported by methods of the same name (in lower-case). All arguments to commands are converted to strings, except for `authenticate`.

class managesieve.MANAGESIEVE(host='', port=4190, use_tls=False, keyfile=None, certfile=None, tls_verify=True, timeout=None)

  Sieve client class.

  Instantiate with: MANAGESIEVE(host [, port])

  Parameters:

    - host – host’s name (default: localhost)

    - port – port number (default: standard Sieve port).

    - use_tls – switch to TLS automatically, fail if the server doesn’t support STARTTLS

    - keyfile – keyfile to use for TLS client authentication (optional)

    - certfile – certfile to use for TLS client authentication (optional)

    - timeout – If not None, socket timeout in seconds (refer to python’s socket.settimeout for details)

  exception abort

    Service errors - close and retry

  authenticate(mechanism, *authobjects)

    Authenticate to the server.

    Parameters:

      - mechanism (str) – authentication mechanism to use

      - authobjects – authentication data for this mechanism

    Returns:

      response (`OK`, `NO`, `BYE`)

  capability()

    Issue a CAPABILITY command and return the result.

    As a side-effect, on success these attributes are (re)set:

    - `capabilities` (list of strings)

    - `loginmechs` (list of strings)

    - `implementation` (string)

    - `supports_tls` (boolean)

    Returns:

      tuple(response, capabilities) – If response is `OK`, capabilities is a list of strings.

  deletescript(scriptname)

    Delete a scripts at the server.

    Parameters:

      scriptname (str) – name of script to be deleted

    Returns:

      response (`OK`, `NO`, `BYE`)

  exception error

    Logical errors - debug required

  getscript(scriptname)

    Get a script from the server.

    Parameters:

      scriptname (str) – name of script to be retrieved

    Returns:

      tuple(response, str) – if response is `OK`, str is the script content.

  havespace(scriptname, size)

    Query the server for available space.

    Parameters:

      - scriptname (str) – name of script to XXX

      - size (int) – XXX

    Returns:

      response (`OK`, `NO`, `BYE`)

  listscripts()

    Get a list of scripts on the server.

    Returns:

      tuple(response, [data]) – if response is `OK`, data is a list of (scriptname, active) tuples.

  login(auth, user, password)

    Authenticate to the Sieve server using the best mechanism available.

    Returns:

      response (`OK`, `NO`, `BYE`)

  logout()

    Terminate connection to server.

    Returns:

      response (`OK`, `NO`, `BYE`)

  putscript(scriptname, scriptdata)

    Put a script onto the server.

    Parameters:

      - scriptname (str) – name of script to be retrieved

      - scriptdata (str) – script content

    Returns:

      response (`OK`, `NO`, `BYE`)

  setactive(scriptname)

    Mark a script as the ‘active’ one.

    Parameters:

      scriptname (str) – name of script to be marked active

    Returns:

      response (`OK`, `NO`, `BYE`)

  starttls(keyfile=None, certfile=None, verify=True)

    Puts the connection to the SIEVE server into TLS mode.

    If the server supports TLS, this will encrypt the rest of the SIEVE session. If you provide the keyfile and certfile parameters, the identity of the SIEVE server and client can be checked. This, however, depends on whether the socket module really checks the certificates.

  unauthenticate()

    Leave the authenticated state.

    Returns:

      response (`OK`, `NO`, `BYE`)