跳转到主要内容

实现了RFC-5804 Manage Sieve客户端。

项目描述

概述

“远程管理Sieve脚本的协议”的纯Python客户端实现,如RFC-5804中定义。它适用于Python 2.7或Python 3.3+。

模块内容

class Managesieve

与sieve服务器交互的主类。

以下是Managesive类的成员。所有这些方法都可能引发一个ServerResponseNoServerResponseBye异常。有关服务器返回NOBYE的详细情况,请参阅RFC-5804。

Managesieve(host=None, port=None)

如果hostNone,则默认为‘localhost’。如果port为None,则默认为4190。将立即建立与服务器的连接。此方法可能引发由socket模块引发的任何异常。

cmd_authenticate(auth_type, options=None)

向sieve服务器发送AUTHENTICATION请求,以及指定的任何选项。如果成功,则返回None。如果认证失败,则引发一个ServerResponseNo异常。

cmd_capability()

向sieve服务器发送CAPABILITY请求。返回一个元组列表,每个元组对应服务器返回的一个功能。

cmd_checkscript(contents)

向sieve服务器发送CHECKSCRIPT请求。如果脚本的内容有效,则返回None。否则,引发一个ServerResponseNo异常。

cmd_deletescript(name)

向sieve服务器发送一个DELETESCRIPT请求。删除脚本name。成功时返回None。如果脚本无法删除(例如,如果脚本不存在或当前是活动脚本),则引发ServerResponseNo

cmd_getscript(name)

向sieve服务器发送一个GETSCRIPT请求。成功时,返回名为name的脚本内容。如果出错(例如,如果脚本不存在),则引发ServerResponseNo异常。

cmd_havespace(name, size)

向sieve服务器发送一个HAVESPACE请求。其中name是可能不存在的脚本名称,size是字节数。如果服务器愿意存储名为name大小为size的脚本,则返回None。否则,引发ServerResponseNo异常。

cmd_listscripts()

向sieve服务器发送一个LISTSCRIPT请求。成功时,返回一个元组。第一个元素是包含服务器上所有脚本名称的集合。如果脚本处于活动状态,则其名称在元组的第二个元素中返回。如果没有脚本处于活动状态,则第二个元素为None

cmd_logout()

向sieve服务器发送一个LOGOUT请求。用户被注销,成功时返回None

cmd_noop()

向sieve服务器发送一个NOOP请求。这是一个协议无操作,可以用来保持连接活跃。返回None

cmd_putscript(name, contents)

向sieve服务器发送一个PUTSCRIPT请求。在服务器上存储一个名为name、内容由contents指定的脚本。成功时返回None。如果发生错误,包括脚本内容无效,则引发ServerResponseNo异常。请注意,将脚本放入服务器不会更改当前活动脚本。

cmd_renamescript(oldname, newname)

向sieve服务器发送一个RENAMESCRIPT请求。将名为oldname的脚本重命名为newname。成功时返回None

cmd_setactive(name)

向sieve服务器发送一个SETACTIVE请求。将名为name的脚本设置为活动脚本。成功时返回None

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

向sieve服务器发送一个STARTTLS请求。keyfilecertfile目前被忽略。成功时,与sieve服务器的连接现在是加密的。返回值与cmd_capabilities相同,这可能自连接首次打开以来已更改。

keyfilecertfilecert_reqsssl_versionca_certscipher参数的含义与(并直接传递给)ssl.wrap_socket相同。

login_plain(username, authuser, password)

使用PLAIN认证方案登录sieve服务器。username是要访问的用户的用户名。authuser是要认证的用户名,password是该用户的密码。

异常

BaseException

所有由managesieve3引发的异常的基类。

ServerResponseNo

服务器发送了一个意外的NO响应。有关详细信息,请参阅RFC-5804。

可用的字段有

名称

描述

name

当服务器返回NO响应时正在执行的RFC-5804命令的名称。

code

NO响应中返回的代码。这是一个可能长度为1的层次结构响应代码列表。

text

如果有的话,返回可读文本错误消息。

results

如果有的话,返回响应的文本正文。

ServerResponseBye

筛选服务器发送了BYE响应。有关详细信息,请参阅RFC-5804。

可用的字段有

名称

描述

name

服务器返回BYE响应时正在执行的RFC-5804命令名称。

code

BYE响应中返回的代码。这是一个包含层次响应代码的列表(可能长度为1)。

text

如果有的话,返回可读文本错误消息。

results

如果有的话,返回响应的文本正文。

ServerProtocolError

客户端代码在向筛选服务器通信时检测到协议错误。

变更日志

1.1 2016-10-27 Eric V. Smith

  • 移除设置RPM名称的hack(问题#4)。

  • 始终使用setuptools(问题#3)。

  • 将额外的ssl.wrap_socket()参数添加到starttls()中。

1.0 2015-06-02 Eric V. Smith

  • 初始发布。

  • 实现了所有RFC-5804命令。

  • 包含命令解析的广泛测试套件。我真的需要创建一个模拟服务器来测试套接字处理和STARTTLS。

项目详情


下载文件

下载您平台上的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源分发

managesieve3-1.1.tar.gz (15.1 kB 查看散列

上传时间

构建分发

managesieve3-1.1-py2.py3-none-any.whl (11.0 kB 查看散列

上传时间 Python 2 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误日志 StatusPage StatusPage 状态页面