
联系方式![]()
Similar entries
友情链接导航 |
Milter 协议(2)
由 qyb 于 星期五, 2007-08-24 15:40 发表
先贴一段 twisted 框架下实现 Milter 协议解析的核心函数 :) class MilterServer(Protocol):
def init_dataReceived(self): self.lastdata = "" self.len = 0 def __init__(self): # 注意:实践中发现一次 recv 中包括了两个完整的 packet; 而且理论上存在 def proc(self, data): 上述代码在线上曾短时间的跑了跑,协议解析的逻辑部分应该是没有问题滴(稳妥起见,目前我们实际用的还是 libmilter 的 python binding) 实现 Milter Server 需要注意的一个事情就是:和 SMTP 一样,是要能支持在一次 由于相当然的以为 eom (EndOfMessage) 事件后会话就应该结束了,结果碰到了问题怎么也想不出头绪,绕了一个多星期的弯路才找到程序的毛病所在。 另外在 Postfix 实现里面,自定义的 replymsg 的格式要求严格遵循 RFC,格式是: 仔细阅读了一下 sendmail 的 Milter Technical Overview,原来在 DATA 阶段,MTA 是需要把信件整个接受下来以后,再依次发给各个 Milter 的,而且是给一个 Milter 完整的传送完一个 message 后,再接着向下一个 Milter 发送。以前一直理解有误,觉得应该是 on-the-fly 的把数据依次传递给 Milter,这样效率最高. |
最新评论
16 小时 59 分钟之前
1 天 6 小时之前
1 天 7 小时之前
1 天 7 小时之前
1 天 8 小时之前
1 天 16 小时之前
2 天 15 小时之前
3 天 19 小时之前
4 天 13 小时之前
4 天 14 小时之前