以libmilter方式处理milter连接的twisted协议

yatxmilter的Python项目详细描述


耶克斯过滤器(又一个)
======================== < BR>
我们最近将项目名称从**TxFilter**更改为**YatxFilter**,因为已经有一个[TxFilter](https://github.com/flaviogrossi/TxFilter)项目正在使用不同的许可证开发中,我们不太愿意使用该名称。_ < BR>
用纯python编写的milter协议是一个twisted协议,根据[gplv2!](../master/许可证) < BR>
等等,什么? < BR>
yatxmilter**是一个项目,旨在使用[twisted matrix framework]将milter协议引入python(https://twistedmatrix.com/trac/)。它的灵感来源于人们告诉我们使用[钩针](https://pypi.python.org/pypi/crochet/)和libmilter来实现我们的目标。由于我们喜欢使用twisted内部的东西,所以决定创建这个项目。 < BR>
使用**yatxmilter**的目的是使用twisted的异步调用能力(而不是libmilter使用的线程解决方案)提供更快的响应。**YatxFilter**速度非常快,可以处理大量同时连接。在纯python中;) < BR>
如何使用? < BR>
首先,您必须使用pip或从[pypi]安装它(https://pypi.python.org/pypi/yatxmilter): < BR>

$pip安装yatxmilter
< BR>
**yatxmilter**的设计尽可能简单,并且尽可能接近libmilter(您可以在这里查看:https://www.milter.org/developers/api/),记住这一点,如果您知道libmilter是如何工作的,就不会遇到任何麻烦。
使用YatxFilter。函数调用几乎是相同的,函数名真正记住了libmilter名称调用。 < BR>
例如,仔细查看代码: < BR>< BR>
< BR>/usr/bin/python语言
-*-编码:UTF-8-*- < BR>
从未来导入Unicode文本 < BR>
来自yatxmilter.protocol import milterprotocolfactory
从yatxmilter.defaults导入milterfactory < BR>< BR>
def main():

因为我们的代码库中还有其他的反应器
来自twisted.internet导入reactor < BR>
反应器列表CP(1234,多企业工厂(
米尔特工厂() < BR>) < BR>
反应堆运行() < BR>
如果uuu name_uuuuu='\uuu main_uuu':
主() < BR>
< BR>
这只是一个扭曲的协议,就像任何扭曲的协议一样…… < BR>
"milter factory"只是创建"milter"对象的空工厂。你应该建立自己的工厂来实例化你的milter对象。"milterprotocolfactory"是一个为您提供魔力的工厂,它将通信抽象为"milter"接口。 < BR>
你的工作是扩展"milter",覆盖你需要使用的任何方法,以及"xxfi"协商方法,以交换milter将支持建立"milterfactory"的信号。 < BR>
另外,**yatxmilter**可以处理同一连接上的多个milter插件,处理与continue不同的任何信号,并与mta通信。 < BR>< BR>

mta yatxmilter你的米尔特 < BR>
__________
||
MTA打开|
连接|
|_________|
|_________
||| 实例化|
所有插件|
|________|
__________|
|||
MTA开始||
谈判_____|
|_________|
|__________
|||
发送标志|
|_________|
|
_________|
|||
合并标志<;。_____|
|________|
|
__________|
|||
状态过滤||
请求_____|
|_________|
|
|__________
|||
处理和回复|
|_________|
|
_________|
|||
等待全部完成||
或第一个错误_____|
|________|
|
v
__________
||
回复状态|
|________|
|
v
_________________________________
||
关闭连接|
|________________________________| < BR>
< BR>
仅此而已:) < BR> [谚] < BR>
*我们仍然没有测试单元和代码覆盖率,但如果您愿意,欢迎您推送它们:)
*文档:哇,更好的示例和sphinx相关文档仍在等待处理;
*py3现在完全被忽略了。 < BR>< BR>
许可证 < BR>
**yatxmilter**代码和文档是根据[gplv2](../master/license)许可证发布的,该许可证源于libmilter许可证-因为我们将其代码用作我们的基础,同时也是一种感谢。

欢迎加入QQ群-->: 979659372 Python中文网_新手群

推荐PyPI第三方库


热门话题
java嵌套循环打印一个数字,旁边有相同数量的星号   java JodReports替代方案   java如何将模型类parcelable对象从片段传递到活动?   java JCS缓存删除功能不删除特定元素   如何打开。Java的dll文件。   java在这种情况下如何选择聚合根?   java从CellEditorListener获取编辑的TreeNode   Java到web服务和mysql   从openssl ec在Java中创建公钥时出现加密无效密钥异常   Java数组:添加多个数组的元素时忽略空数组   java在初始化后向fragment发送数据   JButtons的java数组正在返回void   若联接列不包含特定值,则java JPA条件生成器仅返回实体   java ActionBar问题:NPE   java Portlet是被广泛使用还是非常罕见?