A-A+

Spam Locker简介2 – 插件流程介绍

2009年03月02日 学习随笔 暂无评论 阅读 1 次

来源地址:http://www.extmail.org/forum/thread-1453-1-1.html

Spam Locker简介2 - 插件流程介绍

了解清楚Spam Locker的插件流程,对于编写插件,或理解垃圾邮件的识别非常重要。由MTA(如postfix或qmail等)送来的SMTP特征信息,经过解析处理后,进入了插件的执行循环,其主要执行过程如下:
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()的函数将在请求结束时执行,以释放一些系统资源,例如销毁对象,释放内存,清理临时文件,将数据信息写入磁盘/数据库等。

给我留言

Copyright © 浩然东方 保留所有权利.   Theme  Ality 07032740

用户登录