5.6.4 esmtp特性掩码
2016-04-07 14:06
676 查看
esmtp服务器接收EHLO命令后,会显示出类似下面的服务器支持的特性列表:
250-PIPELINING
250-SIZE 104857600
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
postfix可能为不同的客户提供不同的特性。这里首先计算出对该客户不为其提供哪些特性:
4884 ehlo_discard_maps在pre_jail_init中被初始化为参数smtpd_discard_ehlo_keyword_address_maps的值
smtpd_discard_ehlo_keyword_address_maps是一个查找表,以客户ip为键,服务器将不会发送给该客户的ehlo响应为值。
4886 var_smtpd_ehlo_dis_words即参数smtpd_discard_ehlo_keywords,该参数记录服务器不会发送给客户端的ehlo响应。
也就是smtpd_discard_ehlo_keywords记录通用的拒绝发给客户的EHLO响应,smtpd_discard_ehlo_keyword_address_maps记录针对特定ip的该响应。4884-4886行我们先针对客户端ip查找一下有没有针对该ip的smtpd_discard_ehlo_keyword_address_maps值,如果没有,将ehlo_words设为通用的smtpd_discard_ehlo_keywords值。
4887计算不发送的EHLO响应码掩码。
250-PIPELINING
250-SIZE 104857600
250-ETRN
250-STARTTLS
250-AUTH LOGIN PLAIN
250-AUTH=LOGIN PLAIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
postfix可能为不同的客户提供不同的特性。这里首先计算出对该客户不为其提供哪些特性:
/smtpd/smtpd.c 4879 /* 4880 * Determine what server ESMTPfeatures to suppress, typically to 4881 * avoid inter-operability problems.Moved up so we don't send 421 4882 * immediately after sending theinitial server response. 4883 */ 4884 if (ehlo_discard_maps == 0 4885 || (ehlo_words = maps_find(ehlo_discard_maps, state->addr, 0)) == 0) 4886 ehlo_words =var_smtpd_ehlo_dis_words; 4887 state->ehlo_discard_mask = ehlo_mask(ehlo_words);
4884 ehlo_discard_maps在pre_jail_init中被初始化为参数smtpd_discard_ehlo_keyword_address_maps的值
if(*var_smtpd_ehlo_dis_maps) ehlo_discard_maps= maps_create(VAR_SMTPD_EHLO_DIS_MAPS, var_smtpd_ehlo_dis_maps, DICT_FLAG_LOCK);
smtpd_discard_ehlo_keyword_address_maps是一个查找表,以客户ip为键,服务器将不会发送给该客户的ehlo响应为值。
4886 var_smtpd_ehlo_dis_words即参数smtpd_discard_ehlo_keywords,该参数记录服务器不会发送给客户端的ehlo响应。
也就是smtpd_discard_ehlo_keywords记录通用的拒绝发给客户的EHLO响应,smtpd_discard_ehlo_keyword_address_maps记录针对特定ip的该响应。4884-4886行我们先针对客户端ip查找一下有没有针对该ip的smtpd_discard_ehlo_keyword_address_maps值,如果没有,将ehlo_words设为通用的smtpd_discard_ehlo_keywords值。
4887计算不发送的EHLO响应码掩码。
相关文章推荐
- 5.6 smtp_proto函数:解析smtp协议
- 5.5 smtpd_service函数(smtpd.c):smtp服务回调函数
- IPC机制的几种通讯方式之ContentProvider
- 5.3.1.3 参数smtpd_delay_reject:延迟出错响应
- php获取一年中某一周的开始和结束时间
- $this->assign(); 与 $this->display(); PHP
- php计算字符串长度:utf8编码,包含中文
- php 根据指定的键对多维数组进行排序
- php本地文件包含&远程文件包含
- ThinkPHP 框架开发 零基础开发 网站商城 步骤 (2)
- PHP中PDO的事务处理分析
- wampServer 我进入phpadmin设置密码后。再访问就拒绝 error 1045
- 深入理解php底层:php生命周期
- PHP+Ajax实现无刷新分页实例详解(附demo源码下载)
- PHP的错误和异常处理
- PHP底层的运行机制与原理
- 最后一节php+mysql的故事
- 【未解决】php 中 '' "" null empty的区别
- thinkcmf thinkphp 学习
- 5.3.1.2 smtpd_check_*函数的ACL验证方法