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

问题描述 投票:1回答:2

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

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

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

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

谢谢!

email ssl encryption smtp starttls
2个回答
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会话?我是否需要SSL等权威机构验证的证书?

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.