Spam Locker简介2 - 插件流程介绍
了解清楚Spam Locker的插件流程,对于编写插件,或理解垃圾邮件的识别非常重要。由MTA(如postfix或qmail等)送来的SMTP特征信息,经过解析处理后,进入了插件的执行循环,
其主要执行过程如下:
[quote]
init_hook
pre_run_hook
run_hook
post_run_hook
cleanup_hook
[/quote]
每个插件里只要定义了相应过程的钩子函数,那么都会在每个过程中被调用。以下是各阶段钩子的用途介绍:
[b]init_hook - 初始化钩子[/b]
凡是在模块里定义的init()函数,都会在这个阶段执行,但不需要任何的返回值,定义init钩子的主要
用途是对一些针对插件的具体应用的初始化,例如DNS,数据库等。
[b]pre_run_hook - 预执行钩子[/b]
凡是在模块里定义的pre_hook()函数都会在此阶段执行,如果返回'DUNNO'则表示让上层的程序
继续执行其他插件,本插件没有发现问题。如果插件识别出当前SMTP请求是属于垃圾邮件,则返回
诸如“554 blocked by xxx”之类的错误信息,判断流程立刻停止,并将错误信息送到客户端。
注意:此钩子原理上是为HELO或MAIL FROM阶段设计的。但在目前,全部只对RCPT TO阶段有效
[b]run_hook - 执行钩子[/b]
凡是在模块中定义了hook()的核心函数,都会被执行,同理,如果识别出垃圾邮件,则返回错误
信息,如果没有,则返回'DUNNO'。
注意:此钩子原理上是为RCPT TO阶段设计的。但在目前,全部只对RCPT TO阶段有效
[b]post_run_hook - 结束钩子[/b]
该钩子主要是针对DATA要结束但MTA未返回成功时的操作,凡是定义了post_hook()的函数都会在
此阶段执行,主要用于检测邮件及队列的一些特征信息,以便识别垃圾邮件的。
注意:此钩子原理上是为DATA阶段设计的。但在目前,全部只对RCPT TO阶段有效
[b]cleanup_hook - 清理钩子[/b]
顾名思义,定义为cleanup()的函数将在请求结束时执行,以释放一些系统资源,例如销毁对象,
释放内存,清理临时文件,将数据信息写入磁盘/数据库等。 新的技术大家应该积极的支持,让基发扬光大, :victory: 好东西啊,要好好研究 关注~~~~~~~ :lol 最近在看代码,基本上了解一点。
页:
[1]