HONOR-MILTER 反垃圾邮件网关

来源:互联网 发布:unity3d 关闭垂直同步 编辑:程序博客网 时间:2024/04/19 12:02

推荐一款中文反垃圾邮件网关:

honor-milter 是一款基于libmilter的邮件过滤系统. 兼容 postfix,sendmail

支持中文反垃圾,spf,ip黑名单/发送频率,mail黑名单/发送频率,和 clamav查毒引擎.

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

百度网盘下载 免费版 程序和反垃圾库:http://pan.baidu.com/s/1hrfROqw

Ⅰ 快速安装/使用

ⓐ 安装运行程序  (只支持64位Linux系统)

  • 创建目录 /opt/honor_milter/ ,进入其中
  • 解开honor_milter.tgz 即可

ⓑ 下载/更新最新反垃圾库

  • 下载最新版 const-(version).db.gz,建议备份
  • 解开得到 const.db,移动到 ./spamdb/const.db

ⓒ 启动/停止/重启

./libexec/honor_milter.sh start/stop/reload/restart

ⓓ 适配 postfix

修改配置文件/etc/postfix/master.cf,在准备启用libmilter的smtpd服务下增加

 -o smtpd_milters=inet:127.0.0.1:36130 -o milter_protocol=6

ⓔ 适配sendmail

修改配置文件sendmail.mc,增加配置行

INPUT_MAIL_FILTER(`honor_milter',`S=inet:36130@127.0.0.1')

ⓕ 投递到垃圾邮件箱

1) 启用内容反垃圾后,会在邮件头上追加

X-honor-antispam: 0.893871 bad spam 或X-honor-antispam: 0.281281 good

本系统只追加邮件头. 使用者可以根据上述信息采取过滤措施.

2) 如,在imap服务器的sieve配置中加入策略,把垃圾邮件移动到垃圾邮件箱或删除等操作.
以dovecot为例子,在dovecot的sieve的配置中增加

if anyof (header :contains "X-honor-antispam" "spam"){    fileinto "junk";    stop;}

Ⅱ 功能模块及配置

./etc/service/目录下的文件,是各个模块的配置文件.(一般配置文件风格)
每个模块先加载./etc/main.cf,再加载自己的配置文件.

ⓐ 主服务milter

milter,通过libmilter协议,为postfix/sendmail提供服务.milter服务的配置文件为 ./etc/service/milter.cf

zcmd = libexec/milter#milter服务端口zlisten = 127.0.0.1:36130zproc_limit = 10

配置项包括下面介绍的各模块的配置

ⓑ 中文反垃圾

反垃圾服务的配置文件为 ./etc/service/spamd.cf

zcmd = libexec/spamd #反垃圾服务监听地址.这里请注意,反垃圾服务必须和milter服务在同一台电脑上.zlisten = 127.0.0.1:36160zproc_limit = 1

相关配置项

#是否启用反垃圾功能,默认启用antispam_enable = 1#反垃圾服务监听地址.这里请注意,反垃圾服务必须和milter服务在同一台电脑上.antispam_server = 127.0.0.1:36160#反垃圾的结论,会追加到邮件头上,其邮件头的name部分antispam_append_header = X-honor-antispam# 工作线程数antispam_concurrency_limit = 8# 只读反垃圾库antispam_constdb = spamdb/const.db# 可写反垃圾库(用于训练,反馈),值为空,则忽略(即不可训练,反馈)antispam_traindb = spamdb/train.db#阈值,参考值,反垃圾得分大于等于antispam_threshold则给出关键字 bad spam,否则给出关键字 goodantispam_threshold = 0.7

ⓒ SPF检查

#是否启用spf检查功能,默认禁用spf_enable = 0#spf策略,可选header,reject,discard#   header 把结果追加到邮件头,其邮件头的name部分由配置项spf_append_header设置#   reject spf不一致,拒收(通知发信者)#          在smtp协议上返回给发信者的信息由配置项spf_reject_reply设置#   discard spf不一致,丢弃(不通知发信者)spf_destination = header#spf白名单,符合白名单则不做过滤#查询表, 查询键形如 somedomain.com&192.168.1.1, 或somedomain.com&192.168.1spf_whitelist =#建议保留spf_softfail_as_reject = 1#如果发信域没有配置spf,则当作spf不一致,默认否.spf_none_as_reject = 0spf_append_header = X-honor-spfspf_reject_reply = DENY. SPF

ⓓ CLAMAV 查毒

如果邮件系统的流量较大建议关闭此功能.

#是否启用clamav查毒功能,默认禁用clamav_enable = 0#查毒策略,可选 reject,discard#   reject 有毒,拒收(通知发信者).#          在smtp协议上返回给发信者的信息由配置项clamav_reject_reply设置#   discard 有毒,丢弃(不通知发信者)clamav_destination = reject#clamav的服务clamd监听地址#参见/etc/clamav/clamd.conf中配置项LocalSocket和TCPSocketclamav_server = /var/run/clamav/clamd.ctlclamav_reject_reply = DENY. FOUND VIRUS

请注意: 如果查毒结果为 Can't open file or directory,出现错误的原因很多.
其中一个是 apparmor 系统造成的. 请停止 apparmor,或修改 /etc/apparmor.d/usr.sbin.clamd

ⓔ IP投递频率限制

IP投递频率所谓的上限值形如 123-5677-123123

  • 123,某ip,每分钟投递限制,值为0则表示黑名单
  • 5677,某ip,每小时投递限制
  • 123123,某ip,每天投递限制

#是否启用ip频率限制功能,默认禁用limit_ip_enable = 0#投递超过频率限制,可选 reject,discard#   reject 超过频率限制,拒收(通知发信者).#          在smtp协议上返回给发信者的信息由配置项limit_ip_reject_reply设置#   discard 超过频率限制,丢弃(不通知发信者)limit_ip_destination = rejectlimit_ip_reject_reply = DENY. TOO MANY#发信频率限制的默认值limit_ip_limit_default = 3-10-30#查询表,结果是ip频率限制值,查询键是ip地址(查询表更多知识)limit_ip_limit_map = #查询表,结果是ip频率限制值,查询键是ip地址前三段, 形如192.168.1limit_ip_limit_map2 = #实时ip频率统计服务的监听端口limit_ip_anvil_server = 127.0.0.1:36133

查询顺序, 举例 202.106.112.58:

  1. 在 查询表 limit_ip_limit_map 中查询,键值为202.106.112.58, 返回结果既为限制值,如无结果,则:
  2. 在 查询表 limit_ip_limit_map2 中查询,键值为202.106.112, 返回结果既为限制值,如无结果,则:
  3. 取limit_ip_limit_default的值为结果

ⓕ SENDER投递频率限制

SENDER投递频率所谓的上限值形如 123-5677-123123

  • 123,某sender,每分钟投递限制,值为0则表示黑名单
  • 5677,某sender,每小时投递限制
  • 123123,某sender,每天投递限制

#是否启用sender频率限制功能,默认禁用limit_sender_enable = 0#limit_sender_destination 超过频率的限制策略,可选 reject,discard#   reject 超过频率限制,拒收(通知发信者)#          在smtp协议上返回给发信者的信息由配置项limit_sender_reject_reply设置#   discard 超过频率限制,丢弃(不通知发信者)limit_sender_destination = rejectlimit_sender_reject_reply = DENY. TOO MANY#发信频率限制的默认值limit_sender_limit_default = 3-10-30#查询表,结果是sender频率限制值,查询键是sender地址, 形如 tom@cat.orglimit_sender_limit_map = #查询表,结果是sender频率限制值,查询键是sender地址的域名部分, cat.orglimit_sender_limit_map2 = #实时sender频率统计服务的监听端口limit_sender_anvil_server = 127.0.0.1:36133

查询顺序, 举例 tom@cat.org

  1. 在 查询表 limit_sender_limit_map 中查询,键值为tom@cat.org, 返回结果既为限制值,如无结果,则:
  2. 在 查询表 limit_sender_limit_map2 中查询,键值为cat.org, 返回结果既为限制值,如无结果,则:
  3. 取limit_sender_limit_default的值为结果

ⓖ 实时频率统计服务

为IP/SENDER投递频率限制提供统计服务, 配置文件 ./etc/service/anvil.c

zcmd = libexec/anvil#如果多台电脑运行ip/sender频率限制服务,则只需(必须)在某一台服务器启用本服务.zlisten = 0:32506zproc_limit = 1

Ⅲ 附录

ⓐ 单独使用"内容过滤系统"

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

关于,邮件的回馈(训练,学习),得分,管理工具的使用等问题,请参考 HONOR-SPAM 荣耀邮件内容过滤系统

ⓑ 文件目录说明

/opt/honor_milter/系统默认安装路径,所有服务运行时路径../queue/libmilter,获得的邮件原文,临时存放地址./etc/service/main.cf邮件网关全局配置文件./etc/service/milter.cf邮件网关主程序的配置文件./etc/service/spamd.cf反垃圾程序的配置文件./etc/service/anvil.cf信件发送频率统计的配置文件./etc/service/clear.cf内部队列清理配置文件./bin/honor_milter.sh启动/停止/重启 脚本./bin/spamc一个工具,离线回馈,得分,测试,合并. 详细./bin/spamdc一个工具,在线回馈,得分,测试. 详细./bin/spf_test简易spf检查工具,参考./bin/map_searchmap查询表命令行工具,参考./libexec/master服务管理程序./libexec/milter邮件网关主程序./libexec/spamd反垃圾主程序./libexec/anvil信件发送频率统计./libexec/clear内部过期队列文件清理./spamdb/const.db反垃圾库,只读,高速../spamdb/train.db反垃圾库,用于训练(回馈,喂养).速度较慢,实际上是sqlite3.

ⓒ spf检测工具

./bin/spf_test 用于检查一个域名和一个ip是否匹配spf,用法:

./libexec/spf_test domain ip

例子

./libexec/spf_test 263.net 211.157.147.5./libexec/spf_test 163.com  202.130.113.39

1 0
原创粉丝点击