我有一个运行sendmail的CentOS 5.x服务器,它无法与一些不同的收件服务器协商TLS。 我正在研究它。
与此同时,我注意到,如果发生TLS握手错误,sendmail不会退步使用标准的未encryption的传递方法。 这是正常的行为?
我希望这个逻辑在(并且只有)我明确要求域名的时候已经到位。 例如,如果我在/ etc / mail / access中添加了TLS_SRV选项。 在这种情况下,我不这样做。 实质上,Sendmail只运行“机会式TLS”。
到目前为止,我所遇到的所有信息都表明这个问题是预期的行为,并且是硬编码的。
根据http://www.sendmail.org/m4/starttls.html#disable_starttls :
默认情况下,尽可能使用STARTTLS。 但是,有一些错误的MTA不能正确执行STARTTLS。 为了能够发送(或接收)这些MTA,可以使用与访问映射一起使用的规则集try_tls(srv_features)。 访问映射的条目必须使用Try_TLS(Srv_Features)进行标记,并引用连接系统的主机名或IP地址。
按照http://etutorials.org/Server+Administration/Sendmail/Part+II+Administration/Chapter+10.+Maintain+Security+with+sendmail/10.10+STARTTLS/ :
如果未使用访问数据库,则除非$ {verify}中的值为SOFTWARE,否则在所有情况下都允许连接,包括入站和出站。在这种情况下,不允许连接。
这两个blurbs都表明try_tls特性是当另一方声称支持它时跳过TLS的唯一select。 我明白,这是一个选项,但它很麻烦,因为这意味着我需要手动exception出站域有麻烦。
有没有其他方式有sendmail后备?
根据这个线程 , 在这个补丁中实现了回退functiontls_failures 。 显然这将在一定数量的TLS握手失败后自动使用纯文本。
注意:这个补丁集成在8.16中(至less可以作为快照)
至于这篇文章,8.16还没有发布 ,所以现在你将不得不使用/etc/mail/access或者/etc/mail/access_db作为Seth的build议 ,并且一定要使用makemap hash /etc/mail/access < /etc/mail/access来重build.db makemap hash /etc/mail/access < /etc/mail/access
至于在全球使用tls_failures安全风险; 考虑到这是机会主义的TLS ,我认为不要使用这个新的select只会有助于在一些真正的边缘情况下,收件人的邮件服务器被临时重新configuration,并在以后得到纠正。
您可以禁用某些主机的TLS。 例如:
# Try_TLS:gmail.com NO
我也指向你http://www.sendmail.org/m4/starttls.html
禁用STARTTLS并设置SMTP服务器function
默认情况下,尽可能使用STARTTLS。 但是,有一些错误的MTA不能正确执行STARTTLS。 为了能够发送(或接收)这些MTA,可以使用与访问映射一起使用的规则集try_tls(srv_features)。 访问映射的条目必须使用Try_TLS(Srv_Features)进行标记,并引用连接系统的主机名或IP地址。 默认情况下可以通过使用标签来指定。 例如,访问映射中的以下条目:
Try_TLS:broken.server NO Srv_Features:my.domain v Srv_Features: V
在发送到broken.server(或该域中的任何主机)时将closuresSTARTTLS,并且仅在TLS握手期间为my.domain中的主机请求客户端证书。 “Sendmail安装和操作指南”中列出了RHS Srv_Features上的有效条目。