您的位置:首页 > 编程语言 > PHP开发

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可能为不同的客户提供不同的特性。这里首先计算出对该客户不为其提供哪些特性:

/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响应码掩码。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: