HONOR-MILTER 荣耀邮件内容过滤系统

来源:互联网 发布:贝叶斯网络分析软件 编辑:程序博客网 时间:2024/03/28 17:57

Ⅰ 基本介绍

1, honor-spam是一款邮件打分系统,用于识别垃圾邮件.
支持中文简体,繁体,日文,韩文,越南文,等文字.
信件解析快速,精确,兼容度高.强大的中文字符集识别模块.独特的分词系统.高效的反垃圾库系统.
速度快,在基于dell vostro 2420(notebook)的vmware虚拟机上,单线程每秒处理1000封信件.

2, honor-spam不单独发布,随HONOR-MILTER 反垃圾邮件网关 一起发布.

3, 内容过滤服务器./libexec/spamd, 配置文件./etc/service/spamd.cf, 默认服务端口是 127.0.0.1:36160

4, ./spamdb/const.db./spamdb/train.db是反垃圾库.

  • ./spamdb/const.db只读,高速.
  • ./spamdb/train.db用于训练(回馈,喂养),速度较慢.

Ⅱ spamdc 工具使用说明

spamdc 是一个在线的反垃圾测试/回馈/调试工具.

$ ./bin/spamdc   ./bin/spamdc [ 127.0.0.1:36160 ] test     eml_file/eml_dir  ./bin/spamdc [ 127.0.0.1:36160 ] good     eml_file/eml_dir  ./bin/spamdc [ 127.0.0.1:36160 ] bad      eml_file/eml_dir  ./bin/spamdc [ 127.0.0.1:36160 ] reloaddb                           

ⓐ test: 测试信件得分

获得邮件 /spam/emls/test/aaa.eml, ./test/ffff/ppp.eml 的得分.

./bin/spamdc test /spam/emls/test/aaa.eml./bin/spamdc test /spam/emls/test/

ⓑ good: 训练正常信件

./bin/spamdc good /spam/emls/test/aaa.eml ./test/ffff/ppp.eml./bin/spamdc good /spam/emls/test/

ⓒ bad: 训练垃圾信件

./bin/spamdc good /spam/emls/test/aaa.eml ./bin/spamdc good ./eml/tmp/

ⓓ reloaddb: 重新加载反垃圾库

./bin/spamdc reloaddb

Ⅲ spamc 工具使用说明

spamc 是一个离线的反垃圾测试/回馈/调试工具.辅助使用者更好的使用内容过滤系统.

$ ./bin/spamc USAGE:  ./bin/spamc test        db [ db2 [ ...]]          eml_file/eml_dir  ./bin/spamc good        traindb                   eml_file/eml_dir  ./bin/spamc bad         traindb                   eml_file/eml_dir  ./bin/spamc merge_db    constdb_or_traindb        traindb           ./bin/spamc convert_db  traindb                   new_constdb
  • test/good/bad/merge_db/convert_db 是第一个参数,表明功能.
  • constdb 表示一个只读的数据库文件.
  • traindb 表示个可写的数据库文件(sqlite3).
  • eml_file 表示一个邮件文件.
  • eml_dir 表示一个目录,其下(及递归子目录下)的文件为邮件

ⓐ test: 测试信件得分

获得一个目录(/spam/emls/test/)下所有邮件的得分.

./bin/spamc test a.tdb /spam/emls/test/

获得一个目录(/spam/emls/test/)下所有邮件的得分,更多反垃圾库.

./bin/spamc test a.tdb b.tdb c.tdb d.cdb e.cdb...  /spam/emls/test/

获得一个邮件的得分,并且给出更详细的得分信息.

./bin/spamc test a.tdb b.tdb c.tdb d.cdb e.cdb...  /spam/emls/test/someone.eml

ⓑ good: 训练正常信件

./bin/spamc good a.tdb ./a.eml./bin/spamc good a.tdb /spam/emls/good/

ⓒ bad: 训练垃圾信件

./bin/spamc bad a.tdb ./b.eml./bin/spamc bad a.tdb /spam/emls/bad/

ⓓ merge_db: 合并数据库

把一个反垃圾数据库(既可以是constdb,也可以是traindb),合并到一个traindb.

./bin/spamc merge_db a.cdb dest.tdb./bin/spamc merge_db b.tdb dest.tdb

如果 dest.tdb不存在,会创建一个.

ⓔ convert_db: 数据库格式转换

把一个traindb转换为constdb.因为constdb比traindb快的多得多.

./libexec/spamc convert_db a.tdb a.cdb

a.cdb如果不存在,则创建一个,否则被覆盖.

Ⅳ 通信协议

ⓐ 获取邮件得分和关键字

1. 客户端 连接: 127.0.0.1:361602. 客户端 输入: score[一个空格]邮件文件路径\n3. 服务端 返回: OK 得分 关键字\n4. 客户端 关闭连接 或 回到 2

1, 所谓 "邮件文件路径" 形如 /opt/mail/storage/some1.eml
系统假设:客户端提供的任何文件都是邮件且可读.

2, 所谓 "得分" 形如 0.700268,介于0.000000 ~ 1.000000 之间,越接近1.0,是垃圾邮件的可能性越大.
根据得分,由使用者来最终确定是不是垃圾邮件.
根据作者实际经验,大于0.7的是垃圾邮件,小于0.4为正常邮件.

3, 所谓"关键字",如果得分大于等于antispam_threshold则为"bad spam",否则为"good".

4, 例子: 邮件/opt/mail/storage/u1.eml 的得分

输入: score /opt/mail/storage/u1.eml\n返回: OK 0.212383 good\n

5, 可以通过 ./bin/spamdc 操作, 如

./bin/spamdc test emlfile1

ⓑ 回馈/训练/喂养垃圾邮件

本节说的是如何在线操作. 非在线操作请参考 spamc

1. 客户端连接: 127.0.0.1:361602. 客户端输入: bad[一个空格]邮件文件路径\n3. 服务器返回: OK\nERR\n4. 客户端关闭连接 或 回到 2

1, 所谓 "邮件文件路径" 形如 /opt/mail/storage/some1.eml
系统假设:客户端提供的任何文件都是邮件且可读.

2, 例子: 训练 邮件/opt/mail/storage/u2.eml 为正常邮件

输入: good /opt/mail/storage/u2.eml\n返回: OK\n 或: ERR\n

3, 例子: 训练 邮件/opt/mail/storage/u3.eml 为垃圾邮件

输入: bad /opt/mail/storage/u3.eml\n返回: OK\n 或: ERR\n

4, 可以通过 ./bin/spamdc 操作, 如

./bin/spamdc bad emlfile1

ⓒ 回馈/训练/喂养正常邮件

训练正常邮件和训练垃圾邮件类似,请参考上节,只不过把上节的关键字bad改为good即可.

ⓓ 重新加载反垃圾库

在线更新const.db后,需要重启反垃圾服务器,没必要重启所有服务器.

1. 连接: 127.0.0.1:361602. 输入: reloaddb\n3. 返回: OK\n系统异常,程序退出

可以通过 ./bin/spamdc 操作, 如

./bin/spamdc reloaddb

Ⅴ 维护反垃圾库的一些建议

先说明,本系统即可以实时训练邮件,也可以手动维护.

如果在单机系统且规模较小(如1000邮件用户内),可通过服务端口实时训练,问题不大.

如果在多机环境或规模很大,不建议实时训练,sqlite3的写性能会成为瓶颈.

ⓐ 模型 1 (仅供参考)

1. 下载最新版反垃圾库 命名为:A2. 维护一个文件夹,其中存放较老较固定的邮件(回馈的或收集的正常和垃圾邮件),用spamc训练为反垃圾库 命名为: B    2.0 删除 B    2.1 ./bin/spamc good B somepath1_or_file1        ......    2.2 ./bin/spamc bad B somepath2_or_file2        ......3. 维护另一个文件夹,其中存放近期添加的邮件(回馈的或收集的正常和垃圾邮件),用spamc训练为反垃圾库 命名为: C    3.0 同 第2条4. 用spamc 合并A B C 为一个新的训练库,命名为: D    4.0 删除 D    4.1 ./bin/spamc merge_db A D    4.2 ./bin/spamc merge_db B D    4.3 ./bin/spamc merge_db C D5. 用spamc 把 D 转换为只读库 E    5.1 ./bin/spamc convert_db D E6. 移动 E 到 ./spamdb/const.db7. 重启系统即可. 或 重新加载反垃圾库.


0 0
原创粉丝点击