基於內容的垃圾郵件識別

ZSPAM 是一款郵件打分系統,用於識別垃圾郵件. 最新版本2.5
支持中文簡體,繁體,日文,韓文,越南文,等文字
速度快,在基於dell vostro(notebook)的vmware虛擬機上,單線程每秒處理1000封信件html

在線識別垃圾郵件linux

下載/安裝/特徵庫/服務

下載
免費版程序和特徵庫, 最新版2.5
http://pan.baidu.com/s/1hrfROqw數據庫

安裝
建立目錄/opt/zmail/, 進入其中,解開zspam.tgz 便可
(只支持64位Linux系統, debian/ubuntu/centos)ubuntu

特徵庫
下載最新版 const-(version).db.gz, 建議備份
解開獲得 const.db, 移動到 ./var/spamdb/const.dbcentos

服務
啓動/中止/重啓
./bin/master.sh start/stop/reload服務器

文件目錄說明

/opt/zmail/
系統默認安裝路徑, 全部服務運行時路徑併發

./etc/service/spamd.cf
反垃圾服務程序的配置文件app

./bin/master.sh
啓動/中止/重啓 腳本dom

./bin/spamc
工具,用於 訓練,得分,測試,合併socket

./bin/spamd
反垃圾服務程序

./var/socket/spamd
domain socket, spamd 服務的domain socket

./var/spamdb/reloaddb_event_file
touch ./var/spamdb/reloaddb_event_file 會使spamd從新加載特徵庫文件

./etc/service/milter.cf
libmilter服務器配置文件

./bin/milter
libmilter服務程序

配置 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

子命令 zscore, 測試信件得分, 在線
例子:得到郵件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 em_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協議)
配置: etc/service/spamd.cf

### 須要啓動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.5 2019-08 增長特徵分析

2.1 2019-05 行爲特徵分析, 更多特徵

1.12 2017-06 HTML處理, 增長打分機制, 初級圖片處理

0.9 2015-12 多字節文字亂碼識別, 分詞技巧調整, 全新郵件解析庫, 增長特徵詞斷定詞

0.1 2007-10 貝葉斯統計, 中文分詞, 繁體, 日文, 韓文, 正向最大匹配, 郵件解析
相關文章
相關標籤/搜索