将 RCPT TO 发送到 AWS NLB 后面的 SMTP 服务时,为什么会出现重新协商?

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

我通过使用 TLS 1.2 的网络负载均衡器 (NLB) 使用 ECS Fargate 来托管 SMTP 服务,该服务使用标准 SMTP 中断与客户端进行通信。

我正在通过

openssl
测试该服务。

这在本地和 Fargate 上都运行良好:

$openssl s_client -connect xxx.com:443
HELO
250 OK
MAIL FROM:[email protected]
250 OK
QUIT
250 OK

但是,Fargate 服务适用于 NLB/Fargate 上的所有 SMTP 命令,除了以字符

R
开头的任何命令,例如
RCPT TO:

我得到

RENEGOTIATING
,然后是
connection close
,这在本地不会发生。

$openssl s_client -connect mynlbhost.tampabayclosure.com:443
HELO
250 Hello
MAIL FROM:[email protected]
250 OK
RCPT TO:[email protected]
RENEGOTIATING
write:errno=54

我尝试了

openssl s_client -connect host:port -no_renegotiation
openssl s_client -connect host:port -no_renegotiation -tls1_2
,但都没有成功。

问题是什么?

amazon-web-services smtp aws-fargate aws-nlb
1个回答
0
投票

这些解决方案都有效:

  1. 使用 TLS v1.3

  2. 使用

    openssl s_client -quiet
    抑制
    R
    Q
    字符

    的交互式解释
  3. 使用

    rcpt to:
    (您可以这样做,因为根据 RFC 5321,SMTP 命令不区分大小写)


问题是什么?

此行为与

openssl s_client
有关:

当交互使用时(这意味着既没有给出 -quiet 也没有给出 -ign_eof),并且没有给出 -adv 或 -nocommands,则进入“Basic”命令模式。在此模式下,某些命令被识别以执行特殊操作。 这些命令是一个字母,必须出现在行首

R
重新协商 SSL 会话(仅限TLSv1.2 及更低版本)。

这就是为什么当您输入

RENEGOTIATING
或任何其他带有
RCPT TO:
的命令 starting 时,您会看到
R
消息,然后连接关闭。

请注意,

R
的位置很重要 - 这就是为什么您在使用
MAIL FROM:
时没有遇到此问题,即使它包含
R


本地不会发生

这很可能是因为您没有在本地使用 SSL。

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