我可以强制 Postfix 上端口 587 的隐式 TLS 连接吗?

我可以强制 Postfix 上端口 587 的隐式 TLS 连接吗?

我读过很多文章,说端口 587 默认是显式 TLS。这意味着它是 STARTTLS。它会在不安全的连接上询问服务器是否支持 TLS,如果支持,它会继续使用加密连接。然而,隐式 TLS(端口 465)从连接的开始到结束都是安全的,它永远不会不安全。

仅出于教育目的,假设我想使端口 587 隐式 TLS。我是否只需要在 main.cf 文件中更改此项

smtpd_tls_security_level = 可能

对此:

smtpd_tls_security_level = 加密

我知道我可以使用端口 465 来获得所需的结果。我只是想确保端口 587 是否也支持隐式 TLS,正如许多文章所声称的那样。

我明白如果 587 可以做到这一点,那就明确了目的。端口 587 是两者之间首选端口的原因仅仅是因为一些电子邮件客户端不支持加密

答案1

当然是可能的让任何服务监听任何端口,例如 SSH 监听端口 443 (HTTPS),这是绕过基于端口的防火墙的常用技巧。您可以更改此master.cfsmtpd监听端口 的实例。587但是,您不应将其更改,main.cf因为这也会影响实例在端口 上接受传入邮件25。SMTP 协议(RFC 5321) 必须以纯文本开头,因此始终使用STARTTLS

然而,它没有多大意义创建不符合 IANA 的配置服务名称和传输协议端口号注册表,相关互联网标准RFC 6409& 拟议标准RFC 8314, 3.3. 在实践中,邮件用户代理(MUA)即客户端软件需要标准端口,因此它们要么根据设置选择默认端口,要么根据端口选择默认设置。有些甚至可能根本不允许这样的配置。您必须同时配置服务器端和客户端才能支持这种模糊的设置。这意味着您的用户会更加困惑,并且需要额外的文档,而这些文档可能会产生误导——您已经找到了这类文章。不要制造更多混乱,但要坚持标准。

答案2

不,您无法更改端口的指定用途。对于 Postfix,其他邮件服务器在通过该端口进行通信时需要一定的“有效负载”。

当您传达隐式 TLS,而另一个处理您发送邮件到另一个域的邮件服务器需要显式 TLS 时,就会出现不匹配的情况,并且连接可能会被另一方拒绝。

之所以需要通过不安全的连接询问是否支持 tls,是因为如果您发送邮件到的邮件服务器不支持 tls,当一切都是 tls 时,我无法回答,而您的邮件服务器也没有答案。

假设邮件服务器来自您最大的客户,您确实想向其发送邮件,因此它回答“我无法执行 TLS”,您的邮件服务器将恢复为非 TLS,并且邮件服务器仍能处理您的邮件。如果它无法为您或您的公司处理邮件,您可能会损失数百万美元。

在执行 tls 时,大多数情况下会从安全模式回退到非安全模式

我尝试通过一个例子来让你更好地理解它。

相关内容