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 位网友发表了评论 此处只显示部分留言 点击查看完整评论页面