Рейтинг:0

Empty Email when using MS365 as a mail relay from a Python application

флаг co

We've got a very weird issue going on here.

Take this example email (raw form, sanitized):

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--

This is being sent via straight SMTP to a Send Connector at MS365 configured to receive and relay mail from our on-prem mail server to MS365 for retransmission to the Internet.

Except... while the email retransmits to the destination external recipients... it actually only sends the To, From, Subject, etc. but completely ignores the actual content of the message. This was replicated with direct submission of a MIMEText() test email in Python as well.

The same email, however, when directly submitted to the external mail servers where I'm receiving this (where @NOPE would be my actual domain and server), transmits and relays fine, with all content. The same thing happens as well when we transmit via an on-prem Postfix relay which goes through a Sophos appliance, which then goes directly to the recipient server.

So, it seems that routing any mail via Exchange Online in this way with an on-prem system sending mail via MS365 outright fails to function. Regardless of the message submitted.

Has anyone else got any kind of on-prem mail system(s) or solutions here which need to route via MS365, and simply is unable to without Microsoft eating the message in its entirety?

The above email was sent to the Test List from external, routed through to an on-prem Exchange server (Exchange Hybrid setup due to on-prem listservs), modified for DMARC compliance, and then retransmitted to two external addresses as a new message, same issue at recipient ends. Also same issue for internal MS365 (in-organization) recipients.

Again, delivery works fine via on-prem Postfix stuff, but not when relayed via MS365 (which clearly ACCEPTED the emails and retransmitted everything EXCEPT the actual message).

Рейтинг:0
флаг co

Итак, похоже, я понял это, но мне придется кричать на Microsoft.

Сообщения в моем вопросе — это дословно то, что отправляется в Postfix и что отправляется на SMTP-коннектор Outlook. Разница, однако, в том, что Postfix правильно обрабатывает сообщение, а затем повторно передает его. как-то способом, который отличается от того, как Python smtplib обрабатывает передачу почты. Сообщения и их содержимое доставляется должным образом при первой передаче на сервер Postfix для обработки перед отправкой через коннектор отправки в MS365. Что... это не то, чего мы хотели, потому что мы не хотели поддерживать какой-либо фактический почтовый сервер на prem, Postfix или что-то еще, а просто хотели доставлять напрямую в Microsoft 365 для обработки, а не нуждаться в «переходе через посредника». на почтовом сервере и MTA перед получение сообщений от клиентов конечных точек и соединителей.

Также странно, что Microsoft 365 не может правильно обрабатывать сообщения, переданные ему напрямую, если только у Microsoft нет какого-то странного формата, который он хочет обрабатывать. не Совместимость с RFC... но это другой бой.

Рейтинг:-1
флаг us

Соответствует ли ваше приложение следующим требованиям? Как настроить многофункциональное устройство или приложение для отправки электронной почты с помощью Microsoft 365 или Office 365

Попробуйте использовать Отправить-MailMessage или же Телнет на вашем почтовом сервере, чтобы протестировать SMTP и посмотреть, есть ли разница.

Кроме того, возможно, будет полезна следующая тема: Отправить emal stmp office 365: сообщение пустое

флаг co
Вариант 3 уже есть. Мы знаем, что почтовое приложение, отправляющее SMTP через ретранслятор в MS365, инициирует успешный ответ в очереди на доставку, но затем MS365 что-то делает с сообщением и передает в основном пустое сообщение. т.е. каждый заголовок сохраняется, но полезная нагрузка не передается повторно. Насколько мне известно, SMTP Relay не нуждается в лицензии для этого, если я не ошибаюсь? У нас есть несколько лицензий Business Basic, с которыми мы можем поиграть, если нам нужно использовать аутентифицированного/лицензированного отправителя.
флаг co
А что касается потока SO, мы уже генерируем контекст MIMEText при отправке тестовых сообщений через Python, так что это не проблема.
Ivan_Wang avatar
флаг us
Что получится, если вы подключитесь к Exchange Online PowerShell и выполните следующие команды: 1. **Get-TransportConfig | fl SmtpClientAuthenticationDisabled** 2. **Get-CASMailbox | fl SmtpClientAuthenticationDisabled**. Параметр «SmtpClientAuthenticationDisabled» указывает, следует ли отключить аутентифицированный SMTP (SMTP AUTH) для всей организации или для одного почтового ящика. Подробнее об этом: https://docs.microsoft.com/en-us/powershell/module/exchange/set-casmailbox?view=exchange-ps
флаг co
У нас нет для этого удостоверения почтового ящика — мы пытаемся отправлять оповещения из локальной системы, в которой нет почтового ящика, через прямую доставку SMTP их получателям на облачной стороне инфраструктуры. Первая команда возвращает True, поэтому авторизация клиента отключена. Однако при установленном соединителе (т. е. MS365 настроен на ПРИНЯТИЕ почты без вопросов или аутентификацию с локального SMTP-сервера) он никогда не должен давать сбоев из-за аутентификации. И мы *можем* отправить сообщение таким образом, и оно ДЕЙСТВИТЕЛЬНО будет доставлено, за исключением того, что в доставленное сообщение не включено настоящее письмо *тело*.

Ответить или комментировать

Большинство людей не понимают, что склонность к познанию нового открывает путь к обучению и улучшает межличностные связи. В исследованиях Элисон, например, хотя люди могли точно вспомнить, сколько вопросов было задано в их разговорах, они не чувствовали интуитивно связи между вопросами и симпатиями. В четырех исследованиях, в которых участники сами участвовали в разговорах или читали стенограммы чужих разговоров, люди, как правило, не осознавали, что задаваемый вопрос повлияет — или повлиял — на уровень дружбы между собеседниками.