postfix 日志显示 ??? 作为来自客户端的命令

postfix 日志显示 ??? 作为来自客户端的命令

我正在运行带有 postfix 3.1.0-3ubuntu0.4 包的 Ubuntu 18.04.6 LTS 服务器。

Apple Mail 客户端和 Postbox 客户端在首次向 smtp 服务发送电子邮件时都经历了奇怪的延迟。最终 Apple Mail 重试并成功,但 Postbox 放弃了。

在初始交换中,电子邮件客户端似乎在服务器问候之后发送了“???”作为命令,或者至少 Postfix 是这样记录的。日志中的行如下所示(实际 IP 地址已删除):

Nov 23 17:11:09 mail postfix/smtpd[3367]: < ipxx-xxx-xxx-xxx.ph.ph.cox.net[xx.xxx.xxx.xxx]: ???

服务器响应: 502 5.5.2 Error: command not recognized

这是怎么回事?我找不到任何地方将字符串“???”视为有效的 SMTP 命令。这是对旧系统的某种破解吗?

虽然上述两个客户端似乎都会发送此邮件,但 iOS 电子邮件客户端却不会。

我没有找到任何关于此情况的文档或允许其作为后缀设置的文档。

答案1

Postfix 取代非可打印()?其日志中包含的字符。

发生这种情况的一种方式是,客户端被指示建立 TLS 连接,但使用的端口号是 postfix 正在使用纯文本。二进制 TLS1.3 ClientHello 不是有效的 SMTP 命令,将在日志中显示为 ?。服务器通过兼容性黑客提议将现有的未加密 SMTP 连接升级到安全通道,这STARTTLS通常会被忽视。聪明的 MUA 可能会识别出这个错误 - 并使用偏离配置的设置重试 - 其中聪明的很容易进入危险的境地。

假设您的 postfix 设置为允许这样做;配置您的客户端使用端口 465/tcp(“通过 TLS 协议提交消息”)以及立即使用 TLS 的指令。这是提交邮件的推荐安全选项。以下几个关键字将帮助您识别一起使用的选项:

港口 保留用于通过以下方式提交消息 它在软件设置中被标记
465 通过 TLS 进行 SMTP (受到推崇的 隐式TLS、TLS、SMTPS、干净的TLS,包装模式
587 带有可选 TLS 的 SMTP 纯文本 明确的TLS、STARTTLS、选修的TLS,RFC 3207

相关内容