ExtMail服务器社区's Archiver

extmail 发表于 2006-4-17 07:44

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()的函数将在请求结束时执行,以释放一些系统资源,例如销毁对象,

释放内存,清理临时文件,将数据信息写入磁盘/数据库等。

zdslua 发表于 2008-3-6 13:18

新的技术大家应该积极的支持,让基发扬光大,

cnzg_y 发表于 2008-6-30 12:54

:victory: 好东西啊,要好好研究

yep0213 发表于 2010-4-8 09:00

关注~~~~~~~

fengyong 发表于 2010-6-7 16:50

:lol  最近在看代码,基本上了解一点。

页: [1]

Powered by Discuz! Archiver 7.0.0  © 2001-2009 Comsenz Inc.