Skip to main content

Implements an RFC-5804 Manage Sieve client.

Project description

Overview

A pure Python client implementation of “A Protocol for Remotely Managing Sieve Scripts”, as defined in RFC-5804. It works with either Python 2.7 or Python 3.3+.

Module Contents

class Managesieve

The main class for interactive with sieve server.

Here are the members of the Managesive class. All of these methods may raise a ServerResponseNo or ServerResponseBye exception. See RFC-5804 for details on when NO or BYE is returned by the server.

Managesieve(host=None, port=None)

If host is None, it defaults to ‘localhost’. If port is None, it defaults to 4190. The connection to the server is immediately made. This method may raise any exception raised by the socket module.

cmd_authenticate(auth_type, options=None)

Send an AUTHENTICATION request to the sieve server, along with the speficied options, any. On success, returns None. If the authentication fails, a ServerResponseNo exception is raised.

cmd_capability()

Send a CAPABILITY request to the sieve server. Returns a list of tuples, one per capability returned by the server.

cmd_checkscript(contents)

Send a CHECKSCRIPT request to the sieve server. If the contents of the script are valid, returns None. Otherwise, a ServerResponseNo exception is raised.

cmd_deletescript(name)

Send a DELETESCRIPT request to the sieve server. The script name is deleted. Returns None on success. Raises a ServerResponseNo if the script cannot be deleted (for example, if it does not exist or is the currently active script).

cmd_getscript(name)

Send a GETSCRIPT request to the sieve server. On success, the contents script named name is returned. On error (for example, if the script does not exist), a ServerResponseNo exception is raised.

cmd_havespace(name, size)

Send a HAVESPACE request to the sieve server. name is the name of a possibly non-existent script, and size a size, in bytes. If the server is willing to store a script named name of size size, then None is returned. Otherwise, a ServerResponseNo exception is raised.

cmd_listscripts()

Send a LISTSCRIPT request to the sieve server. On success, a 2-tuple is returned. The first element is a set containing the names of all of the scripts on the server. If a script is active, its name is returned in the second element of the tuple. If no script is active, the second element is None.

cmd_logout()

Send a LOGOUT request to the sieve server. The user is logged out, and on success None is returned.

cmd_noop()

Send a NOOP request to the sieve server. This is a protocol no-op, and may be used to keep the connection alive. None is returned.

cmd_putscript(name, contents)

Send a PUTSCRIPT request to the sieve server. A script with name name and contents specified by contents is stored on the server. On success, None is returned. If an error occurs, including the script contents being invalid, a ServerResponseNo exception is raised. Note that putting a script to the server does not change the currently active script.

cmd_renamescript(oldname, newname)

Send a RENAMESCRIPT request to the sieve server. The script named oldname is renamed to newname. None is returned on success.

cmd_setactive(name)

Send a SETACTIVE request to the sieve server. The script named name is set as the active script. Returns None on success.

cmd_starttls(keyfile=None, certfile=None, cert_reqs=_ssl.CERT_NONE, ssl_version=_ssl.PROTOCOL_SSLv23, ca_certs=None, ciphers=None)

Send a STARTTLS request to the sieve server. keyfile and certfile are currently ignored. On success, the conenction to the sieve server is now encrypted. The return value is the same as cmd_capabilities, which may have changed since the connection was first opened.

The keyfile, certfile, cert_reqs, ssl_version, ca_certs, and cipher parameters have the same meaning as (and are passed directly to) ssl.wrap_socket.

login_plain(username, authuser, password)

Logs on to the sieve server, using the PLAIN authentication scheme. username is the user whose account will be accessed. authuser is the name of the user being authenticated, and password is that password for authuser.

Exceptions

BaseException

The base class for all exceptions raised by managesieve3.

ServerResponseNo

The sieve server sent an unexpected NO response. See RFC-5804 for details.

Available fields are:

Name

Description

name

The name of the RFC-5804 command that was being executed when the server returned a NO response.

code

The code returned in the NO response. This is a list (possibly of length 1) of the heirarchical response codes.

text

The human readable text error message, if any.

results

The textual body of the response, if any.

ServerResponseBye

The sieve server sent a BYE response. See RFC-5804 for details.

Available fields are:

Name

Description

name

The name of the RFC-5804 command that was being executed when the server returned a BYE response.

code

The code returned in the BYE response. This is a list (possibly of length 1) of the heirarchical response codes.

text

The human readable text error message, if any.

results

The textual body of the response, if any.

ServerProtocolError

The client code detected a protocol error when talking to the sieve server.

Change log

1.1 2016-10-27 Eric V. Smith

  • Remove hack for setting RPM name (issue #4).

  • Always use setuptools (issue #3).

  • Add additional ssl.wrap_socket() parameters to starttls().

1.0 2015-06-02 Eric V. Smith

  • Initial release.

  • Implements all RFC-5804 commands.

  • Contains an extensive test suite for command parsing. I really need to create a dummy server to test the socket handling and STARTTLS.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

managesieve3-1.1.tar.gz (15.1 kB view details)

Uploaded Source

Built Distribution

managesieve3-1.1-py2.py3-none-any.whl (11.0 kB view details)

Uploaded Python 2 Python 3

File details

Details for the file managesieve3-1.1.tar.gz.

File metadata

  • Download URL: managesieve3-1.1.tar.gz
  • Upload date:
  • Size: 15.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No

File hashes

Hashes for managesieve3-1.1.tar.gz
Algorithm Hash digest
SHA256 7c43f23d8d0c83b6aaae93a0f661cef9c4657bbc90cc7c9cf37e775150c021ab
MD5 707cf4d7cec1620005b10992e2fec8a2
BLAKE2b-256 a77cf8f5ad82e73c6471048f10661b3abd0671bb15b62587c547eabbf477edeb

See more details on using hashes here.

Provenance

File details

Details for the file managesieve3-1.1-py2.py3-none-any.whl.

File metadata

File hashes

Hashes for managesieve3-1.1-py2.py3-none-any.whl
Algorithm Hash digest
SHA256 1cc6241cb4217b7191820fa0554efb67702c4501db63ddec7e9271e5c58c9a78
MD5 bb150baf7bfcb2ad68232216a612f98f
BLAKE2b-256 24c1a09d4847a59e8ac3dc950b5b88b6d23ce789f431acbe3b1b4ed9a5fa3bd1

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page