5.2 anvil模块
2016-04-07 11:16
225 查看
postfix使用anvil模块来做统计。该模块是收发信过程中的基本模块。
postfix作为一种正规的服务器,会用慢启动算法逐步增加对对方服务器的发信请求,避免给对方服务器造成过大压力。但是恶意的服务器(垃圾邮件或ddos)显然不会这么“温柔”。所以postfix必须既做的了君子,又防的了小人。既要为别人考虑,也要保护自己。要有对客户行为做判断的机制。anvil模块可以用来统计客户的并发行为。
anvil模块采用4.4节中的multi_server.c做模板,所以可以对并发量做统计。anvil模块可以统计以下几种并发量:
CONNECTIONCOUNT/RATE
MESSAGERATE
RECIPIENTRATE
TLSSESSION NEGOTIATION RATE
AUTHRATE
anvil模块统计和smtp协议解析过程是并行的,统计值用来作为客户端是否“靠谱”的依据,由于smtpd.c采用single_server.c做执行模板,所以无论如何一个smtpd进程中对客户的服务是串行的。smtpd模块根据客户端并发连接数和连接频率来判断它是不是“友好”,来决定是否为其为其提供服务。
postfix设定了许多参数用来统计客户端行为,根据其行为判断客户端是否可能会是恶意客户端。本书涉及到的参数有:
smtpd_client_connection_count_limit:表示客户端并发连接数,默认值((DEF_PROC_LIMIT + 1) / 2),DEF_PROC_LIMIT默认为100。
smtpd_client_connection_rate_limit:客户端发信频率,默认值为0。
smtpd_client_message_rate_limit:anvil_rate_time_unit时间内客户端向服务器发送的请求数,默认值为0,允许客户端发送postfix承受范围内的所有请求。
smtpd_client_recipient_rate_limit:anvil_rate_time_unit时间内客户端向服务器发送的rcpt地址数。
anvil模块用anvil_remote_connect,anvil_remote_mail,anvil_remote_rcpt,anvil_remote_newtls,anvil_remote_disconnect,anvil_remote_newtls_stat,anvil_remote_lookup七个函数统计相关信息。
smtpd模块又利用/global/anvil_clnt.c中的anvil_clnt_connect、anvil_clnt_mail、anvil_clnt_rcpt这三个函数分别在smtpd_proto、解析Mail命令的mail_cmd函数、解析rcpt命令的rcpt_cmd函数中统计上述四个参数的实际值,看看是否超过参数的规定值。
postfix作为一种正规的服务器,会用慢启动算法逐步增加对对方服务器的发信请求,避免给对方服务器造成过大压力。但是恶意的服务器(垃圾邮件或ddos)显然不会这么“温柔”。所以postfix必须既做的了君子,又防的了小人。既要为别人考虑,也要保护自己。要有对客户行为做判断的机制。anvil模块可以用来统计客户的并发行为。
anvil模块采用4.4节中的multi_server.c做模板,所以可以对并发量做统计。anvil模块可以统计以下几种并发量:
CONNECTIONCOUNT/RATE
MESSAGERATE
RECIPIENTRATE
TLSSESSION NEGOTIATION RATE
AUTHRATE
anvil模块统计和smtp协议解析过程是并行的,统计值用来作为客户端是否“靠谱”的依据,由于smtpd.c采用single_server.c做执行模板,所以无论如何一个smtpd进程中对客户的服务是串行的。smtpd模块根据客户端并发连接数和连接频率来判断它是不是“友好”,来决定是否为其为其提供服务。
postfix设定了许多参数用来统计客户端行为,根据其行为判断客户端是否可能会是恶意客户端。本书涉及到的参数有:
smtpd_client_connection_count_limit:表示客户端并发连接数,默认值((DEF_PROC_LIMIT + 1) / 2),DEF_PROC_LIMIT默认为100。
smtpd_client_connection_rate_limit:客户端发信频率,默认值为0。
smtpd_client_message_rate_limit:anvil_rate_time_unit时间内客户端向服务器发送的请求数,默认值为0,允许客户端发送postfix承受范围内的所有请求。
smtpd_client_recipient_rate_limit:anvil_rate_time_unit时间内客户端向服务器发送的rcpt地址数。
anvil模块用anvil_remote_connect,anvil_remote_mail,anvil_remote_rcpt,anvil_remote_newtls,anvil_remote_disconnect,anvil_remote_newtls_stat,anvil_remote_lookup七个函数统计相关信息。
smtpd模块又利用/global/anvil_clnt.c中的anvil_clnt_connect、anvil_clnt_mail、anvil_clnt_rcpt这三个函数分别在smtpd_proto、解析Mail命令的mail_cmd函数、解析rcpt命令的rcpt_cmd函数中统计上述四个参数的实际值,看看是否超过参数的规定值。
相关文章推荐
- node.js系统找不到指定文件报错
- RapidJson读取json文档
- jd-gui安装
- boost asio异步读写网络聊天程序client 实例具体解释
- swing设置JTable的单元格内容居中显示、不能被编辑,隐藏某一列
- IOS开发心得汇总
- Encrypt
- FILE 相关
- 泛型
- tomcat域名配置
- 5.1.3 SMTPD_CMD smtpd_cmd_table[]数组:回调函数数组
- Android eclipse工程导入Android studio注意事项
- Linux内核中链表的实现与应用【转】
- C#引用类库时出现黄色三角加感叹号的处理
- select、poll、epoll之间的区别总结[整理]
- nw.js node-webkit系列(20)拖动文件到页面并读取文件信息
- postgres error : failed to read kind from backend
- OpenCV Haar AdaBoost源码改进(比EMCV快6倍)
- 民间称谓大全
- web项目上云的思考