Temos um problema muito estranho acontecendo aqui.
Veja este e-mail de exemplo (formato bruto, higienizado):
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--
Isso está sendo enviado via SMTP direto para um conector de envio no MS365 configurado para receber e retransmitir emails de nosso servidor de email local para o MS365 para retransmissão para a Internet.
Exceto... enquanto o e-mail é retransmitido para os destinatários externos de destino... ele na verdade apenas envia o Para, De, Assunto, etc., mas ignora completamente o conteúdo real da mensagem. Isso foi replicado com o envio direto de um e-mail de teste MIMEText() em Python também.
O mesmo e-mail, porém, quando enviado diretamente para os servidores de e-mail externos onde estou recebendo isso (onde @NOPE
estaria meu domínio e servidor real), transmite e retransmite bem, com todo o conteúdo. A mesma coisa acontece também quando transmitimos através de um relé Postfix local que passa por um dispositivo Sophos, que então vai diretamente para o servidor destinatário.
Portanto, parece que o roteamento de qualquer email via Exchange Online dessa maneira com um sistema local enviando emails via MS365 não funciona. Independentemente da mensagem enviada.
Alguém mais tem algum tipo de sistema de e-mail local ou soluções aqui que precisam ser roteadas via MS365 e simplesmente não conseguem sem que a Microsoft coma a mensagem em sua totalidade?
O e-mail acima foi enviado para a lista de teste de externo, roteado para um servidor Exchange local (configuração híbrida do Exchange devido a listservs locais), modificado para conformidade com DMARC e, em seguida, retransmitido para dois endereços externos como uma nova mensagem, mesmo problema nas extremidades do destinatário. Também o mesmo problema para destinatários internos do MS365 (na organização).
Novamente, a entrega funciona bem via Postfix no local, mas não quando retransmitida via MS365 (que claramente ACEITOU os e-mails e retransmitiu tudo, EXCETO a mensagem real).
OK, então parece que eu descobri isso, mas é algo que eu vou ter que gritar com a Microsoft.
As mensagens na minha pergunta são literalmente o que está sendo enviado para o Postfix e o que está sendo enviado para o conector SMTP do Outlook. A diferença é, no entanto, que o Postfix lida adequadamente com a mensagem e então a retransmite de uma forma diferente da forma como o smtplib do Python lida com a transmissão de e-mail. As mensagens e seus conteúdos são entregues corretamente quando entregues a um servidor Postfix para processamento antes de serem enviados pela porta através do Conector de Envio no MS365. O que ... não é o que queríamos porque não queríamos manter nenhum tipo de servidor de email real no local, Postfix ou outro, e apenas queríamos entregar diretamente ao Microsoft 365 para manuseio, em vez de precisar de um 'salto intermediário' em um servidor de correio e MTA antesreceber mensagens de clientes e conectores de endpoint.
Também é estranho que o Microsoft 365 seja incapaz de entregar corretamente as mensagens entregues diretamente a ele, a menos que a Microsoft tenha algum formato estranho que queira manipular que não seja compatível com RFC ... mas essa é uma luta diferente.
Seu aplicativo atende aos seguintes requisitos? Como configurar um dispositivo ou aplicativo multifuncional para enviar email usando o Microsoft 365 ou o Office 365
Tente usar Send-MailMessage ou Telnet em seu servidor de e-mail para testar o SMTP e ver se há alguma diferença.
Além disso, talvez o seguinte tópico seja útil: Send emal stmp office 365 : message empty