检查SMTP服务器是否启用SSL的最佳方法是什么?
后续问题:如果尚未启用SSL,如何启用SSL。
操作系统是CentOS。
这取决于您是指SSL还是TLS。
SSL在TCP / 465上有它自己的专用端口。 最好的方法来testing它的存在将是使用OpenSSL的美妙的s_client将协商SSL欺骗你。
openssl s_client -connect localhost:465
如果你的服务器没有绑定到本地主机,那么显然用IP或主机名replace它。
TLS看起来就像普通的SMTP一样。 encryption是从纯文本协议上进行协商的。 您可以通过向服务器发出EHLO请求来testing它是否可用。 您可以使用Netcat或Telnet客户端。
$ nc -v localhost 25 localhost [127.0.0.1] 25 (smtp) open 220 mail.example.com ESMTP Exim 4.69 Fri, 11 Sep 2009 09:25:20 +0100 ehlo test 250-mail.example.com Hello localhost [127.0.0.1] 250-SIZE 10485760 250-PIPELINING 250-STARTTLS 250 HELP
重要的路线是从最后一个广告STARTTLS能力的第二条线。
为了说明如何为您的邮件服务器启用SSL / TLS,您需要告诉我们您正在使用的邮件包。
有一个简单的工具。 你发给他们一封电子邮件,他们回复了一堆细节:
如果您正在运行CentOS,则可能使用了Sendmail。 安装Sendmail-mc软件包。 在/etc/mail/sendmail.mc里面有一些你需要查看TLS的指令:
dnl # Rudimentary information on creating certificates for sendmail TLS: dnl # cd /usr/share/ssl/certs; make sendmail.pem dnl # Complete usage: dnl # make -C /usr/share/ssl/certs usage dnl # dnl define(`confCACERT_PATH', `/etc/pki/tls/certs')dnl dnl define(`confCACERT', `/etc/pki/tls/certs/ca-bundle.crt')dnl dnl define(`confSERVER_CERT', `/etc/pki/tls/certs/sendmail.pem')dnl dnl define(`confSERVER_KEY', `/etc/pki/tls/certs/sendmail.pem')dnl
一旦你有这个工作,你可以通过类似这样的SSL启用Sendmail:
DAEMON_OPTIONS(`Addr=142.46.200.221, Port=465, Name=SSA, M=Eas')
哦,并阻止了一堆时间来玩它,然后才把它做好。
当我这样做的时候,我几乎总是要运行三个sendmail实例:
每个人都有一个单独的configuration文件。 应该有一种方法来让前两个运行在同一个实例上监听两个端口,但我永远不能让它正常工作。
如果你足够大,这些不同的实例可以在不同的机器上运行。
在我看来,在这个页面上给出的答案是完全错误的。
原因是SSL / TLS + SMTP可能意味着两件不同的事情。
一个是你在SSL / TLS中套接字的地方。 如果服务器要同时处理未encryption的和encryption的stream量,那么为此需要两个端口,每个stream量types一个端口。 按照惯例,SMTP服务器通常将端口25用于未encryption的通信,端口465用于encryption的通信。 通过使用诸如stunnel之类的外部工具,这实际上可以以这样的方式实现,使得客户端和服务器都不知道实际的通信量在encryption的套接字上传播。 所以即使你的SMTP服务器不支持SSL / TLS,你也可以实现这种方法..但是像sendmail和postfix这样的服务器确实支持这个,所以不需要外部工具。
另一种方法是使用STARTTLS 。 这是对SMTP协议的扩展,因此要求服务器和客户端都支持它。 使用STARTTLS,服务器可以在同一个套接字上同时提供encryption的stream量和未encryption的stream量,也就是说,你可以使用端口25。 您可以通过在端口25上连接SMTP服务器来查看SMTP服务器是否启用了STARTTLS,并在此页面的其他地方解释Dan发出EHLO命令。
SSL和TLS都只是encryption协议,TLS是SSL的后继者。
我从这里得到了我的信息。
SMTP服务器使用的术语加速了这两种方法之间的混淆。 考虑Postfix的参数smtpd_tls_security_level和smtpd_use_tls及其相关文档。 这些参数处理STARTTLS ,而不是TLS 。 其他SMTP服务器在混淆术语方面同样做得很好。