Postfix 在 ECS 中作为任务运行不起作用

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

我有一个在 ECS 中运行的 postfix 容器,我已将其配置为使用端口 2525,因为我读到端口 25 可能会被阻止。

当我尝试使用 nodemailer 从节点应用程序建立到它的连接(直接到从 AWS 控制台中任务的网络选项卡获取的任务专用 IP)时,我收到错误

Greeting never received
。 postfix 容器中没有记录任何内容。

但是,如果我卷曲 IP 和端口 2525,postfix 会记录

warning: non-SMTP command from localhost[127.0.0.1]: GET / HTTP/1.1
。这个警告是有道理的,证明端口是开放的并且正在接收呼叫。

如果我使用 telnet 它会连接,但如果我发出标准 SMTP

HELO
命令,我会得到:

HELO [email protected]
HTTP/1.1 400 Bad Request
content-length: 11
content-type: text/plain
date: Wed, 08 May 2024 16:40:25 GMT
server: envoy
connection: close

可能发生什么事?就像 ECS 强制流量应为 TCP 时使用 HTTP 一样?本地运行的完全相同的容器和配置工作正常,并且

HELO
返回预期的响应。

容器正在fargate中运行

amazon-ecs aws-fargate postfix-mta
1个回答
0
投票

该问题是由任务定义中的

appProtocol
块中的
portMappings
设置引起的:

portMappings = [
        {
          "name" : "postfix",
          "containerPort" : 2525,
          "hostPort" : 2525,
          "protocol" : "tcp",
          "appProtocol" : "http"
        }
      ]

删除

appProtocol
即可建立 SMTP 连接。

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