请说明SMTP加密协议和端口(仅限服务器之间)

时间:2017-12-22 06:28:38

标签: email ssl encryption smtp starttls

有人可以澄清邮件服务器连接到另一个邮件服务器的典型方式,以便发送加密邮件吗?

据我所知,STARTTLS命令旨在将tcp连接升级为TLS,但我是否真的希望(作为服务器)在远程端口25上执行此操作?

我构建了自己的SMTP服务器(没有加密,在perl中)并且它托管我的所有电子邮件,但我从未在日志中看到任何尝试发送STARTTLS的远程服务器。我的服务器应该也运行在另一个端口上吗?为什么没有人试过STARTTLS?

最后,如果我希望人们在Gmail中看到锁定图标,当我连接到谷歌MX服务器发送电子邮件时,我要做的就是在该端口25上启动与STARTTLS的TLS会话?我是否需要像权威机构验证的证书?

谢谢!

2 个答案:

答案 0 :(得分:2)

  

...发送加密电子邮件?

首先,传输加密邮件和使用您询问的STARTTLS之间存在差异。加密邮件通常指的是使用PGP或S / MIME的端到端加密,即发件人加密并且收件人对邮件进行解密。相反,STARTTLS不是端到端,而只是逐跳加密:途中的每一跳(邮件服务器)都可以访问普通邮件,只有跳转之间的传输才会被加密。

  

...将tcp连接升级到TLS,但是我真的希望(作为服务器)在远程端口25上执行此操作吗?

您应该使用端口25,因为这是为MX记录连接定义的唯一端口。 STARTTLS的相关标准是RFC 3207。它描述了一个SMTP扩展,其中接收邮件服务器可以在对EHLO的响应中宣布支持STARTTLS,然后客户端(即另一个邮件服务器或邮件用户代理)可以使用STARTTLS命令升级当前连接。简而言之,流程是这样的:

< 220 server.example.com SMTP ready
> EHLO client.example.org
> 250-8BITMIME
> 250 STARTTLS
> STARTTLS
< 220 go ahead
... TLS handshake happens, initiated by client ...
> EHLO client.example.com
< 250-8BITMIME
< 250 AUTH PLAIN LOGIN
...
  

...但我从未在日志中看到任何试图发送STARTTLS的远程服务器

如果您未在EHLO回复中宣布支持STARTTLS,则客户不会尝试STARTTLS。

  

...在Gmail中看到锁定图标,当我连接到谷歌MX服务器发送电子邮件时,我所要做的就是在该端口25上启动与STARTTLS的TLS会话?我是否需要像权威机构验证的证书?

只有当您是接收邮件的邮件服务器时才需要证书,因此如果使用STARTTLS,则需要作为TLS服务器工作。如果将邮件发送到Gmail,您就是发送邮件的客户端。在这种情况下,您可能会使用客户端证书,但您并不需要。由于您正在使用Perl:Net::SMTP的当前版本(从版本3.x开始)只要安装了IO::Socket::SSL就支持已包含的TLS。您只需要添加对starttls的调用,如发送邮件即可发送邮件。

答案 1 :(得分:0)

  

我知道STARTTLS命令旨在将tcp连接升级到TLS,但我真的希望(作为服务器)这样做   在远程端口25?

是。由RFC 3207定义 对于“真实”SSL连接,使用端口465或587,但不应再使用465。 由于您询问服务器协议,我不了解您的客户。