我正在运行带有 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 |