Нравится это или нет, электронная почта повсюду. Протокол для перемещения этой почты повсюду – SMTP, а “маршрутизаторы” SMTP – SMTP ретрансляторы.
Not a reader? Check out this tutorial’s related video.
Настройка SMTP ретрансляторов различается в разных системах, но если у вас в качестве почтового провайдера используется Office 365, ваши варианты ограничены. Настройка может быть сложной и подверженной ошибкам, особенно для устройств, не поддерживающих TLS.
Обратите внимание, что для отправки электронной почты через Office 365 не требуется SMTP ретранслятор. Вы можете настроить клиентов для отправки электронной почты напрямую в Office 365 без добавления SMTP ретранслятора, который не требует каких-либо изменений в настройках. Чтобы узнать, как это сделать, прочтите статью Как отправить электронную почту Office 365 Direct Send/SMTP Client Submission (PowerShell).
Необходимые условия
Перед тем как продолжить, вам понадобятся следующие требования.
- Подписка на Office 365. Если у вас еще нет подписки, вы можете зарегистрироваться для пробного использования Office 365 E5.
- A Windows 10 computer with PowerShell v5.1
- A public static IP address. You can still create an SMTP relay in Office 365 even without this, but you might not test.
- Доступ к TCP-порту 25 с клиента на вашем конечном узле Office MX.
- A valid SSL certificate. This certificate could be a wildcard certificate (eg. *.yourdomain.com) issued by third-party certificate authorities like LetsEncrypt, Digicert, etc. Note, that you cannot use self-signed certificates or certificates issued by an internal PKI because they are not supported. (only required for TLS connections)
Для настройки SMTP-ретранслятора сначала необходимо создать коннектор в Office 365 для приема SMTP-транзакций. Этот коннектор будет получать SMTP-транзакции от приложения или устройства.
Прежде чем приступить к созданию коннектора, убедитесь, что у вашей учетной записи есть необходимые разрешения Exchange Online. Убедитесь, что ваша учетная запись является членом группы Organization Management.
Существуют два способа создания коннектора. Вы можете использовать Exchange Admin Center или PowerShell. Оба варианта выполняют одну и ту же задачу. Вам решать, какой из них использовать. В этой статье мы рассмотрим оба варианта. Мы также рассмотрим создание как незащищенного, так и защищенного TLS-коннекторов.
Создание незащищенного коннектора с использованием Exchange Admin Center
Начнем с создания незащищенного коннектора. Сначала вы узнаете, как это сделать с помощью Exchange Admin Center. Вы можете настроить множество параметров SMTP Office 365 в Exchange Admin Center.
После входа в систему нажмите mail flow (1) –> connectors (2) –> New (3). Появится окно New Connector.

В окне New Connector выберите From: Your organization’s email server (1), выберите To: Office 365 (2), нажмите Next (3).

В следующем окне введите имя SMTP Relay (Non-TLS) или выберите свое собственное имя (1), введите описание Принимает пересылку с локального SMTP-сервера (2), снимите флажок Сохранять внутренние заголовки электронной почты Exchange (рекомендуется) (3) и нажмите кнопку Далее (4).

В следующем окне выберите Проверить, соответствует ли IP-адрес отправляющего сервера одному из IP-адресов вашей организации (1) и нажмите кнопку Добавить (2).

В новом всплывающем окне введите ваш публичный IP-адрес (1), затем нажмите кнопку OK (2). Это должно вернуть вас к предыдущему окну.

Убедитесь, что IP-адрес добавлен в список (1), затем нажмите кнопку Далее (2).

Затем вы увидите сводку изменений, которые вам нужно реализовать. Сначала выполните необходимые изменения. Если их нет, вы можете продолжить и нажать кнопку Сохранить.
Вернитесь в Центр администрирования Exchange и убедитесь, что новый коннектор создан.

Теперь у вас должен быть создан коннектор без TLS.
Создайте коннектор TLS с помощью Центра администрирования Exchange
Создание коннектора TLS аналогично созданию коннектора без TLS. Как и в случае с созданием коннектора без TLS, вернитесь к мастеру Новый коннектор и используйте ту же схему потока почты. Я воспользуюсь именем коннектора SMTP Relay (Non-TLS), но у вас может быть другое имя.
В окне для настройки Office 365 следует указать электронную почту с вашего почтового сервера, выберите:
- Проверить, соответствует ли имя субъекта на сертификате, используемом отправляющим сервером для аутентификации с Office 365, этому доменному имени (рекомендуется) (1)
- , затем введите тему SSL-сертификата (2)
- и нажмите Далее (3).

Затем вы увидите сводку необходимых изменений. Сначала работайте над ними перед продолжением. Если изменений нет, можно сразу нажать кнопку Сохранить.
Создание коннектора без TLS с помощью PowerShell
Если создание коннекторов Office 365 через графический интерфейс пользователя не является вашим способом, вы всегда можете создать их с помощью PowerShell. Для этого сначала убедитесь, что вы подключены к Exchange Online PowerShell.
Для создания коннектора вам потребуется выполнить команду New-InboundConnector
. Эта команда требует нескольких параметров, поэтому я предварительно настрою эти параметры с помощью splatting.
I’ve added some comments in the code itself below but here’s a breakdown of each parameter and what it’s used for:
- Name – это имя коннектора.
- ConnectorType – это тип коннектора. Значение может быть
OnPremises
илиPartner
. В данном сценарии подходящим типом являетсяOnPremises
. - SenderDomains – Это может быть список разрешенных доменов отправителей. Допустимыми выборами являются только проверенные домены для вашего арендатора. Звездочка (
*
) означает, что вы разрешаете всем своим проверенным доменам использовать этот коннектор для ретрансляции сообщений. Если вам нужно разрешить только определенные домены отправителей, измените это значение на массив доменов (например,'domain1.com','domain2.com'
) - SenderIPAddresses – Это ваш общедоступный IP-адрес. Не забудьте изменить его перед выполнением.
- RestrictDomainsToIPAddresses – Если это значение установлено на
$true
, это указывает, что этот коннектор будет принимать только электронные письма от отправителей, приходящих с вашего разрешенного общедоступного IP-адреса.
При выполнении вы должны увидеть нечто подобное ниже.

Создание TLS-коннектора с помощью PowerShell
Предполагая, что вы подключены, запустите приведенный ниже код для создания соединителя TLS с помощью PowerShell. Ниже вы можете видеть, что многие параметры идентичны созданию соединителя без TLS. Обязательные параметры, отличающиеся от создания соединителя без TLS, это:
- RequireTLS – это указывает, что все сообщения, полученные этим соединителем, требуют передачи TLS.
- TlsSenderCertificateName – это имя (или субъект) сертификата, используемого отправителем.
Выполните приведенный выше код, чтобы создать соединитель TLS и готовым к получению электронной почты.
Тестирование соединителя Office 365 SMTP Relay с помощью PowerShell
После создания соединителя готовьтесь протестировать его. Самый простой способ сделать это – использовать PowerShell. В этом разделе мы создадим несколько сценариев PowerShell, чтобы вы могли легко убедиться, что соединитель работает правильно.
Перед началом тестирования убедитесь, что вы знаете URL-адрес конечной точки MX для вашего домена Exchange Online. Если вы не знаете, как найти URL-адрес конечной точки MX, войдите в портал администратора Office 365. Нажмите на “Настройка”, выберите “Домены”, нажмите на имя домена и скопируйте значение адреса или MX-пункта.
Тестирование незащищенного SMTP-ретранслятора (IP-адрес)
Примечание: Это тестирование должно выполняться с компьютера, IP-адрес которого разрешен в настройках ретрансляции SMTP Office 365.
Используйте приведенный ниже код PowerShell для тестирования. Обязательно измените значения параметров From
, To
и SmtpServer
в соответствии с настройками вашей ретрансляции SMTP Office 365 перед его запуском.
To
– Должен включать одного получателя из внутреннего домена и одного получателя из внешнего домена. Не забудьте изменить эти значения на свои собственные.From
– Должно быть изменено на ваш адрес отправителя. Доменная часть адреса электронной почты должна быть одним из доменов электронной почты вашей организации.SmtpServer
– Должен быть изменен на конечную точку MX вашей организации Office 365.
Тестирование защищенного TLS SMTP-ретранслятора (Сертификат)
Примечание: Для выполнения этого теста необходимо иметь общедоступный SSL-сертификат в формате PFX.
Поскольку для ретрансляции TLS SMTP требуется сертификат, нельзя использовать командлет PowerShell Send-MailMessage
, поскольку он не позволяет выбрать конкретный сертификат. Вместо этого используйте два объекта .NET под названиями System.Net.Mail.SmtpClient для определения параметров SMTP и System.Net.Mail.MailMessage для составления сообщения.
Ниже приведен фрагмент кода PowerShell, который вы можете использовать для тестирования ретрансляции TLS SMTP. Не забудьте изменить значения pfxFile
, pfxPass
, From
, To
и SmtpServer
на свои настройки ретрансляции SMTP Office 365 перед выполнением кода.
Если настройка коннектора TLS выполнилась правильно, получатели, указанные с помощью метода Add()
, должны получить тестовое письмо.
Проверка промежуточных ретрансляций SMTP с использованием заголовка сообщения
Теперь у вас настроена функциональная ретрансляция SMTP с использованием локального сервера и ретрансляции SMTP Office 365. Все тесты прошли успешно, и ваши устройства могут отправлять сообщения как внутренним, так и внешним получателям. Хорошая работа!
Если вы все еще сомневаетесь и хотите подтвердить, проходят ли эти сообщения через ретранслятор SMTP Office 365, вы можете просмотреть заголовки сообщений в полученных электронных письмах.
Примечание: Открытие заголовков сообщения может отличаться в разных почтовых клиентах. Приведенный ниже пример специфичен для Gmail.
Откройте письмо в интерфейсе Gmail, откройте сообщение и нажмите на три вертикальные точки (1), затем выберите Показать первоначальное сообщение (2).

A new page will show the email message headers. Click on Copy to clipboard (1).

Откройте новую вкладку в браузере и перейдите по адресу https://testconnectivity.microsoft.com/.
Перейдите на вкладку Анализатор сообщений (1), вставьте скопированные данные в поле (2) и нажмите Проанализировать заголовки (3).

Результаты анализа будут отображены в таблице, как показано ниже.

Вы должны увидеть следующий ход работы в приведенных выше результатах:
- IP-адрес 192.168.0.3 указывает на источник компьютера.
- Сервер ретрансляции SMTP в предприятии получил сообщение.
- Сервер Exchange Online Protection (EOP) получил сообщение.
- Сервер Exchange Online получил сообщение и перенаправил его для исходящей доставки.
- Office 365 доставил сообщение на google.com.
Исходя из результатов анализа, вы можете подтвердить, что сообщение прошло через ретранслятор SMTP Office 365, как задумано.
Резюме
В этой статье вы узнали, как создать ретрансляцию SMTP Office 365 с использованием TLS и без него. Вы также узнали, как протестировать и подтвердить их функциональность с помощью различных методов и как проверить маршруты SMTP, по которым прошло сообщение.