题 检查SMTP服务器是否启用SSL的最佳方法是什么?


检查SMTP服务器是否启用SSL的最佳方法是什么?

后续问题:如果尚未启用SSL,如何启用SSL?

操作系统是CentOS。


6
2017-09-11 08:08






答案:


这取决于您是指SSL还是TLS。

  • SSL 在TCP / 465上拥有自己的专用端口。测试它存在的最好方法是使用OpenSSL的精彩s_client,它会为你协商SSL技巧。

    openssl s_client -connect localhost:465
    

    如果您的服务器未绑定到localhost,那么显然将其替换为IP或主机名。

  • TLS 起初看起来就像普通的SMTP一样。加密是从纯文本协议的顶部协商的。您可以通过向服务器发出EHLO请求来测试它是否可用。您可以使用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,您需要告诉我们您正在使用的邮件包。


16
2017-09-11 08:28



如果添加-starttls smtp,也可以将openssl用于TLS - grawity
我不知道。谢谢! - Dan Carley
我真的是指SSL。谢谢!但是不要用TLS去除零件;当我正在处理TLS时,我可能会再次引用这个帖子。 - Randell
这个答案混淆了术语大的时间!! SSL和TLS只是加密协议。当海报谈到'TLS'时,我相信他的确意味着'STARTTLS'。请参阅下面的答案。 - unixhacker2010


有一个简单的工具。你给他们发了一封电子邮件,他们回复了一堆细节:

https://www.checktls.com/perl/TestSender.pl


1
2018-02-24 19:26





如果您正在运行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实例:

  • 一个在端口587上启用TLS并使用各种SMTP-AUTH配置(因此经过身份验证的远程用户可以发送任意邮件);
  • 一个在端口465上启用SSL并使用各种SMTP-AUTH配置(同样的原因,不同的客户端(感谢Microsoft Outlook“Express”);以及
  • 一个启用了TLS但没有AUTH,一个被锁定,以便它只接收有效本地收件人的邮件(远程发件人可以根据自己的喜好使用TLS)。

每个人都有一个单独的配置文件。应该有一种方法可以让前两个运行作为同一个实例监听两个端口,但我永远无法让它正常工作。

如果你变得足够大,这些不同的实例可以在不同的机器上运行。


0
2017-09-11 17:56





在我看来,这个页面上给出的答案是完全错误的。

原因是SSL / TLS + SMTP可能意味着两件事。

一个是在SSL / TLS中包装套接字的地方。如果服务器想要为未加密和加密的流量提供服务,那么它需要两个端口用于此目的,每个端口用于每种类型的流量。按照惯例,SMTP服务器通常将端口25用于未加密的流量,将端口465用于加密的流量。通过使用诸如stunnel之类的外部工具,这实际上可以以这样的方式实现,使得客户端和服务器都不知道实际流量在加密套接字上传播。因此,即使您的SMTP服务器不支持SSL / TLS,您也可以实现此方法..但像sendmail和postfix这样的服务器支持这一点,因此不需要外部工具。

另一种方法是 STARTTLS 用来。这是SMTP协议的扩展,因此需要服务器和客户端都支持它。使用STARTTLS,服务器可以通过同一个套接字为加密流量和未加密流量提供服务,即两者都可以使用端口25。您可以通过在端口25上连接并发出SMTP服务器来查看SMTP服务器是否启用了STARTTLS EHLO 丹的命令在本页的其他地方解释。

SSL和TLS都只是加密协议,TLS是SSL的后继者。

我收到了我的信息 这里

SMTP服务器使用的术语加速了这两种方法之间的混淆。想想Postfix的参数 smtpd_tls_security_level 和 smtpd_use_tls 及其相关文件。这些参数涉及 STARTTLS,不是这样的 TLS。其他SMTP服务器在混淆术语方面同样出色。


0
2017-09-13 06:59