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











文章评论
共有 0 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面