使用 STARTTLS 时 SMTP 纯身份验证安全吗?

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

我正在编写一些需要发送电子邮件的Linux代码。我的问题是: 当我使用 STARTTLS(在 msmtprc 中启用 starttls)时,使用普通身份验证(auth plain)是否安全?是否连接 a) 在发送密码之前进行加密?或者 b) 发送密码然后建立加密?

我假设第一个解决方案(a),但我想确保没有明文密码通过网络传输。

另外(这是一个附带问题)我认为即使 STARTTLS 处于开启状态,通常也不是强制性的,而且我听说中间人攻击者可以“降级”连接以禁用 TLS。这是真的吗?这里的问题是:我是否应该做进一步的测试以确保只能与 SMTP 服务器建立加密连接?

这是我的 msmtprc:

account default
host my-smtp-server.pl
tls on
tls_certcheck off
tls_starttls on
port 587
auth on
from [email protected]
auth plain
user username
password p@$$w0rd
security authentication smtp starttls msmtp
1个回答
0
投票

如果使用 STARTTLS,则在发送凭据之前将加密连接。

但是,您认为中间人攻击可能会干扰 STARTTLS 协商并导致未加密的连接,这一点是正确的。您可以在事后使用 msmtp 的日志记录检测到这一点,其中将包括有关是否使用 TLS 的信息。但这无助于防止此类攻击的实际发生。

如果您想要要求 TLS,则需要关闭 STARTTLS —

tls_starttls off
— 但通过
tls on
保持 TLS 本身处于打开状态。请注意,在这种情况下,服务器将需要使用不同的端口,因为连接必须从一开始就加密,并且托管 STARTTLS 支持的常规端口(通常为 587)将期望启动未加密的连接与.

如果电子邮件客户端(无论是 msmtp 还是像 Outlook 或 Thunderbird 这样的 GUI 客户端)能够提供使用 STARTTLS 的选项,但如果服务器似乎不支持它(无论是因为它确实不支持),则拒绝连接,那就太好了不是,或者因为某些中间恶意软件使它看起来不像)。不过,我还没有听说过任何电子邮件客户端具有类似的功能。

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