基于内容的垃圾邮件识别 --- 帮助文档

邮件技术

ZSPAM 是一款邮件打分系统,用于识别垃圾邮件. 最新版本2.5

支持中文简体,繁体,日文,韩文,越南文,等文字

速度快,在基于dell vostro(notebook)的vmware虚拟机上,单线程每秒处理1000封信件

在线识别垃圾邮件

下载/安装/特征库/服务

下载免费版程序和特征库, 最新版2.5
http://pan.baidu.com/s/1hrfROqw
安装创建目录/opt/zmail/, 进入其中,解开zspam.tgz 即可
(只支持64位Linux系统, debian/ubuntu/centos)
特征库下载最新版 const-(version).db.gz, 建议备份
解开得到 const.db, 移动到 ./var/spamdb/const.db
服务启动/停止/重启
./bin/master.sh start/stop/reload

文件目录说明

/opt/zmail/系统默认安装路径, 所有服务运行时路径
./etc/service/spamd.cf反垃圾服务程序的配置文件
./bin/master.sh启动/停止/重启 脚本
./bin/spamc工具,用于 训练,得分,测试,合并
./bin/spamd反垃圾服务程序
./var/socket/spamddomain socket, spamd 服务的domain socket
./var/spamdb/reloaddb_event_filetouch ./var/spamdb/reloaddb_event_file 会使spamd重新加载特征库文件
./etc/service/milter.cflibmilter服务器配置文件
./bin/milterlibmilter服务程序

配置 etc/service/spamd.cf

server-command = bin/spamd
server-service = spamd://var/socket/spamd
# 并发进程数
server-proc-count = 1

server-log = syslog,mail

# 每进程并发线程数
spam_concurrency_limit = 0

#特征库文件,可以是多个
#spam_db = var/spamdb/const.db,var/spamdb/const2.db,var/spamdb/const9.db
spam_db = var/spamdb/const.db

# touch var/spamdb/reloaddb_event_file, 会导致spamd重新加载特征库(var/spamdb/const.db)
spam_reloaddb_event_file = var/spamdb/reloaddb_event_file

spamc 工具使用说明

子命令例子
score
测试信件得分
离线
获得邮件a.eml, b.eml, 和 eml_path1下所有邮件 的得分
./bin/spamc score ./a.db,./b.db,./c.db a.eml b.eml emlpath1
./bin/spamc score ./a.db a.eml b.eml emlpath1
score
测试信件得分
在线
获得邮件a.eml, b.eml, 和 eml_path1下所有邮件 的得分
./bin/spamc score ./var/socket/spamd a.eml b.eml emlpath1
./bin/spamc score ./var/socket/spamd a.eml b.eml emlpath1
ham
训练正常信件
离线
训练a.eml, b.eml, c.eml, eml_path1, eml_path2 下所有的邮件为正常邮件
./bin/spamc ham ./train.db a.eml b.eml eml_path1
./bin/spamc ham ./train.db c.eml eml_path2
@提示, train.db 可以不存在, 程序会自动创建, train.db是bdb格式, 不能用const格式
spam
训练垃圾邮件
离线
训练x.eml, y.eml, z.eml, eml_path8, eml_path9 下所有的邮件为垃圾邮件
./bin/spamc ham ./train.db x.eml z.eml eml_path9
./bin/spamc ham ./train.db y.eml
./bin/spamc ham ./train.db eml_path8
merge_db
合并数据库
离线
合并a.db, b.db, c.db 到 train.db
./bin/spamc convert_db a.db train.db
./bin/spamc convert_db b.db train.db./bin/spamc convert_db c.db train.db
convert_db
数据库格式转换
离线
把train.db 转换为const.db, const.db是系统自带的只读数据库格式(速度快)
./bin/spamc convert_db const.db train.db

spamd服务, domain socket协议

客户端 连接 domain socket 文件 ./var/socket/spamd
客户端 输入 score[一个空格]邮件文件路径\r\n
服务端 返回
  OK[一个空格]得分\r\n
  ERR[一个空格]db\r\n
客户端 关闭连接 或 回到 2

# 所谓 “邮件文件路径” 形如 /opt/mail/storage/some1.eml

# 系统假设:客户端提供的任何文件都是邮件且可读.

# 所谓 “得分” 形如 0.700268,介于0.000000 ~ 1.000000 之间,越接近1.0,是垃圾邮件的可能性越大.

# 根据作者实际经验,大于0.7的是垃圾邮件,小于0.4为正常邮件.

postfix配置使用(libmilter协议)

本系统支持postfix/sendmail等(libmilter协议)

需要启动milter服务

server-command = bin/milter
/* 服务地址 */
server-service = milter://127.0.0.1:25062

# 并发进程数, 可以启动多个进程
# 每进程线程数不限
server-proc-count = 1

server-log = syslog,mail

# 把反垃圾的结果(得分)追加到指定邮件头
# 空表示不追加邮件头
spam_append_header = X-zz-spam

# spamd服务器的端口地址 
spamd_server = var/socket/spamd

#milter邮件临时存储目录, 可读写
milter_queue_path = var/milter_queue/

postfix main.cf 或 master.cf 配置

在main.cf添加

smtpd_milters=inet:127.0.0.1:25062

或在在master.cf中合适的smtpd服务下添加

 -o smtpd_milters=inet:127.0.0.1:25062

版本历史

2.52019-08 增加特征分析
2.12019-05 行为特征分析, 更多特征
1.122017-06 HTML处理, 增加打分机制, 初级图片处理
0.92015-12 多字节文字乱码识别, 分词技巧调整, 全新邮件解析库, 增加特征词判定词
0.12007-10 贝叶斯统计, 中文分词, 繁体, 日文, 韩文, 正向最大匹配, 邮件解析
京ICP备18054515号-2 eli960@qq.com qq: 1537212398