我遇到了一个奇怪的情况,两个邮件服务器相互通信,需要帮助确定哪个服务器的行为正常。
解释起来有点复杂,所以我认为 SMTP 对话可能是最简单的描述方式。在这个场景中,mailserver1.foo.com 正在尝试将消息传递给 securityappliance.foo.com。
SMTP 工作流程如下:
220 securityappliance.foo.com ESMTP Sendmail 8.14.4/8.14.4; Tue, 6 Mar 2018 14:21:53 -0800
EHLO mailserver1.foo.com
250-securityappliance.foo.com Hello mailserver1.foo.com [1.1.1.1], pleased to meet you
250-ENHANCEDSTATUSCODES
250-PIPELINING
250-8BITMIME
250-SIZE
250-DSN
250-ETRN
250-DELIVERBY
250 HELP
MAIL FROM:<[email protected]>
250 2.1.0 <[email protected]>... Sender ok
RCPT TO:<[email protected]>
250 2.1.5 <[email protected]>... Recipient ok
DATA
354 Enter mail, end with "." on a line by itself
X-Example-Header-Blah: Blah
From: <[email protected]>
To: <[email protected]>
Subject: Message #1. I expect this to fail and am not concerned about that.
Extra text/attachments.
.
550 5.3.0 Requested action on message failed; message rejected
MAIL FROM:<[email protected]>
557 5.3.0 Milter Implementation Error: Invalid argument passed
因此,我们有两封邮件作为同一 SMTP 连接的一部分以单个文件形式传递。第一封邮件导致 550 错误(我们知道为什么会发生这种情况)。然后上游邮件服务器立即提交另一个MAIL FROM:
命令,但该命令被拒绝(因为安全设备认为它是同一事务的一部分)。
上游服务器是否需要RSET
在发送完全独立的消息之前发出命令?或者接收安全设备是否应该理解电子邮件是完全不同的,并且不将其视为消息 #1 的一部分?
我希望这说得通。我很乐意为您解释。我正在尝试确定哪个终端实体是正确的,以便我能够联系到合适的支持资源。