Рейтинг:-1

Как отправить электронное письмо с помощью openssl и Microsoft Exchange Online?

флаг vn

С Microsoft отключает базовую проверку подлинности в Exchange Online, я задался целью добавить поддержку Modern Authentication в наше приложение. Наше приложение отправляет основные оповещения по электронной почте. В настоящее время для этого мы используем базовую аутентификацию SMTP или открытый ретранслятор, но современная аутентификация была бы хорошим дополнением.

Чтобы полностью понять процесс, я хотел бы пройти весь процесс электронной почты вручную. У меня есть клиент разработки в Microsoft, в котором я зарегистрировал наше приложение. У меня нет проблем с получением токена Oauth с областью действия электронной почты. Я не могу пройти через связь с SMTP-сервером.

Поскольку связь должна быть зашифрована, я использую openssl (вместо telnet). Я подключаюсь к серверу с помощью этой команды:

openssl s_client -connect smtp.office365.com:587 -crlf -starttls smtp

Есть некоторые отзывы о согласовании SSL, а затем сервер отвечает:

250 СМТПУТФ8

В этот момент я считаю, что должен использовать команду EHLO. Однако после

ЭХЛО

Ответ просто (сервер меняется при каждой попытке)

' [AM4PR0101CA0056.eurprd01.prod.exchangelabs.com] 

На данный момент я не уверен, что делать. Я считаю, что может быть необходимо вставить некоторый домен после команды ehlo (чтобы определить онлайн-арендатора Microsoft для подключения?). Однако, какой бы домен я ни вставлял, ответ всегда такой:

501 5.5.4 Неверное доменное имя [AM4PR0101CA0056.eurprd01.prod.exchangelabs.com]

Может ли кто-нибудь объяснить, как инициировать связь с клиентом Microsoft Exchange Online через OpenSSL? Что ставить после EHLO? Я вообще подключаюсь к правильному адресу? Я просто пытаюсь добраться до точки, где я могу выполнить команду AUTH XOAUTH2 для входа в свой клиент.

Я смог выполнить весь процесс на smtp-сервере Gmail (smtp.gmail.com). Там не имеет значения, что вы добавите после команды ehlo, после ее ввода вас поприветствуют, и вы сможете перейти к входу в систему с помощью различных команд AUTH.

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

ЭХЛО является «продвинутым» преемником более старого привет и предназначен для представления вашего SMTP-клиента. Так похоже на высказывание «Привет! Я Роб, приятно познакомиться». вам нужно указать собственное имя хоста после EHLO.

RFC 5312

Синтаксис:

"EHLO" "(пробел)" "(домен/адрес-литерал)" "CRLF"

Имя домена, указанное в команде EHLO, ДОЛЖНО быть основным имя хоста (доменное имя, которое разрешается в адрес RR) или, если хост не имеет имени, адресный литерал, как описано в Раздел 4.1.3 и обсуждается далее в обсуждении EHLO Раздел 4.1.4.

Некоторые реализации SMTP-сервера более строги, чем другие, требуя, чтобы протокол SMTP правильно реализовывался при подключении клиентов. Обратите внимание, что плохая реализация SMTP обычно (значительно) увеличивает ваш рейтинг спама.

флаг vn
Хорошо, поэтому я использовал такую ​​службу, как http://www.whatismyhostname.com/, чтобы определить свое имя хоста. smtp.office365.com не принимает это. RFC говорит в 4.1.3, что в качестве альтернативы можно использовать адресный литерал (IP-адрес) в квадратных скобках. Тоже не работает. У вас это вообще работает? Если у вас есть OpenSSL, это очень простой тест.
Рейтинг:0
флаг vn

Моя проблема была в начальной команде:

openssl s_client -connect smtp.office365.com:587 -crlf -starttls smtp

И, в частности, флаг -crlf - без него я мог бы ввести что-либо после EHLO и все равно получить приветствие от SMTP-сервера и перейти к AUTH.

Флаг, кажется, что-то делает с окончаниями строк, к которым этот SMTP-сервер особенно придирчив. Итак, эта команда работает для меня:

openssl s_client -connect smtp.office365.com:587 -starttls smtp

Я читал другие источники, в которых упоминается добавление этого флага для решения проблем, для меня его удаление помогло. Я рекомендую всем, у кого такая же проблема, попробовать оба.

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

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