我们这里发生了一个非常奇怪的问题。
以这个示例电子邮件为例(原始形式,经过消毒):
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 以重新传输到 Internet。
除了...虽然电子邮件重新传输到目标外部收件人...它实际上只发送收件人、发件人、主题等,但完全忽略了邮件的实际内容。这也通过在 Python 中直接提交 MIMEText() 测试电子邮件来复制。
但是,同一封电子邮件在直接提交到我接收此邮件的外部邮件服务器(@NOPE
我的实际域和服务器在哪里)时,可以很好地传输和中继所有内容。当我们通过内部部署的 Postfix 中继传输时也会发生同样的事情,该中继通过 Sophos 设备,然后直接进入接收服务器。
因此,似乎以这种方式通过 Exchange Online 路由任何邮件,而本地系统通过 MS365 发送邮件完全无法正常工作。无论提交的消息如何。
是否有其他人在这里获得了需要通过 MS365 路由的任何类型的本地邮件系统或解决方案,并且如果没有 Microsoft 完全吃掉邮件就无法做到?
上述电子邮件从外部发送到测试列表,路由到本地 Exchange 服务器(由于本地 listservs 导致 Exchange 混合设置),为符合 DMARC 进行了修改,然后作为新邮件重新传输到两个外部地址,在收件人端同样的问题。内部 MS365(组织内)收件人也有同样的问题。
同样,通过本地 Postfix 的东西可以很好地交付,但通过 MS365 中继时就不行了(它显然接受了电子邮件并重新传输了除了实际消息之外的所有内容)。
好的,所以看起来我想通了,但这是我不得不对微软大喊大叫的事情。
我的问题中的消息逐字逐句地发送到 Postfix 以及发送到 Outlook SMTP 连接器的内容。然而,不同之处在于,Postfix 正确地处理了消息,然后以某种不同于 Python 的 smtplib 处理邮件传输的方式重新传输它。消息及其内容在通过 MS365 上的发送连接器发送到门外之前首先被传递到 Postfix 服务器进行处理时得到正确传递。哪个...不是我们想要的,因为我们不想在 prem、Postfix 或其他方式上维护任何类型的实际邮件服务器,只想直接交付给 Microsoft 365 进行处理,而不是需要“中间人跳”在邮件服务器和 MTA之前从端点客户端和连接器接收消息。
奇怪的是,Microsoft 365 无法正确处理直接传递给它的消息,除非 Microsoft 想要处理一些不符合 RFC 的奇怪格式……但这是另一场战斗。
您的申请是否满足以下要求? 如何设置多功能设备或应用程序以使用 Microsoft 365 或 Office 365 发送电子邮件
尝试在您的电子邮件服务器上使用Send-MailMessage或Telnet来测试 SMTP 并查看是否有任何差异。
此外,也许以下线程会有所帮助:发送 emal stmp office 365 : message empty