使用 MS365 作为 Python 应用程序的邮件中继时电子邮件为空

使用 MS365 作为 Python 应用程序的邮件中继时电子邮件为空

我们这里遇到了一个非常奇怪的问题。

以此电子邮件为例(原始形式,已净化):

To: [email protected]
From: Thomas Ward via TestList <[email protected]>
Subject: Test Message
Date: Wed, 4 Aug 2021 19:44:49 -0400
MIME-Version: 1.0
Content-Type: multipart/alternative;
 boundary="------------EFA1B8DAB3C4E625DD16F705"
Content-Language: en-US
Sender: [email protected]
Reply-To: Thomas Ward <teward@NOPE>
CC: Thomas Ward <teward@NOPE>
Message-ID: <162812069430.22940.8470019517074758016@listserv-server>
List-Id: TestList <[email protected]>
List-Post: <mailto:[email protected]>

--------------EFA1B8DAB3C4E625DD16F705
Content-Type: text/plain; charset=utf-8; format=flowed
Content-Transfer-Encoding: 7bit

Test


--------------EFA1B8DAB3C4E625DD16F705
Content-Type: text/html; charset=utf-8
Content-Transfer-Encoding: 7bit

<html>
  <head>

    <meta http-equiv="content-type" content="text/html; charset=UTF-8">
  </head>
  <body>
    <p>Test<br>
    </p>
  </body>
</html>

--------------EFA1B8DAB3C4E625DD16F705--

这是通过直接 SMTP 发送到 MS365 的发送连接器,该发送连接器配置为从我们的内部邮件服务器接收邮件并将其中继到 MS365,以便重新传输到互联网。

除了...当电子邮件重新发送到目标外部收件人时...它实际上只发送收件人、发件人、主题等,但完全忽略邮件的实际内容。这也可以通过在 Python 中直接提交 MIMEText() 测试电子邮件来复制。

但是,当将同一封电子邮件直接提交到我接收该邮件的外部邮件服务器(即@NOPE我的实际域和服务器)时,所有内容都可以正常传输和中继。当我们通过本地 Postfix 中继传输时,也会发生同样的事情,该中继会经过 Sophos 设备,然后直接到达收件人服务器。

因此,使用本地系统通过 MS365 发送邮件,以这种方式通过 Exchange Online 路由任何邮件似乎完全无法正常工作。无论提交了什么消息。

有没有其他人拥有任何类型的内部邮件系统或解决方案,需要通过 MS365 路由,并且如果 Microsoft 不完全接收消息就无法路由?

上述电子邮件从外部发送到测试列表,路由到本地 Exchange 服务器(由于本地列表服务器而设置 Exchange Hybrid),修改为符合 DMARC 要求,然后作为新邮件重新传输到两个外部地址,收件人端存在同样的问题。内部 MS365(组织内)收件人也存在同样的问题。

再次,通过本地 Postfix 传输可以正常进行,但通过 MS365 中继传输时则不行(MS365 明确接受了电子邮件并重新传输了除实际消息之外的所有内容)。

答案1

好的,看起来我已经解决了这个问题,但是我必须向微软大喊大叫。

我的问题中的消息与发送到 Postfix 和发送到 Outlook SMTP 连接器的消息完全一致。然而,不同之处在于 Postfix 会正确处理该消息,然后重新传输它不知何故这种方式与 Python 的 smtplib 处理邮件传输的方式不同。消息邮件内容在首先交给 Postfix 服务器进行处理后,才能正确传送,然后通过 MS365 的发送连接器发送出去。这……不是我们想要的,因为我们不想在本地维护任何类型的实际邮件服务器、Postfix 或其他,只想直接传送到 Microsoft 365 进行处理,而不是需要在邮件服务器和 MTA 中进行“中间人跳跃”从端点客户端和连接器接收消息。

奇怪的是,Microsoft 365 无法正确处理直接发送给它的消息,除非微软想要处理一些奇怪的格式不是符合 RFC......但那是一场不同的斗争。

答案2

您的申请是否满足以下要求? 如何设置多功能设备或应用程序以使用 Microsoft 365 或 Office 365 发送电子邮件

尝试使用发送邮件消息或者远程登录在您的电子邮件服务器上测试 SMTP 并查看是否存在差异。

此外,以下帖子也许有帮助:发送电子邮件至 office 365:消息为空

相关内容