以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中清理Code39条码数据的regex帮助   将java转换为C++   java无法在Android Studio中生成签名的apk,出现错误   从数学方程出发   MySQL和Java内存问题   如何强制Java抛出算术异常?   java为什么JDBC将零端口视为空(默认)端口?   java如何在没有“changelog主题”的情况下加入KStream和KTable   排序我尝试合并两个排序的数组,但得到的是java。lang.ArrayIndexOutofBounds异常:5无法找出原因   如何在java中求大长度矩阵的逆?   基于maven构建的java生成类路径字符串   java每20个字符分割一个字符串,然后将每个部分打印到控制台   将字符串数字字转换为字符串数字:Java   在特定区域使用混合类型的java填充字节数组   尽管java类在开关块中实例化,但它只能调用接口方法