Настройка IIS SMTP Relay для доставки электронной почты Office 365

Майкрософт IIS может отлично выполнять роль SMTP, но для настройки требуется несколько шагов. К счастью для вас, я настроил сервер ретрансляции IIS SMTP и задокументировал все шаги!

В этой статье мы рассмотрим все шаги, необходимые для успешной настройки сервера ретрансляции SMTP для отправки исходящего электронного сообщения с Office 365. Технически мы будем использовать этот сервер ретрансляции SMTP для отправки электронной почты в Office 365; он также может быстро работать для любых общих целей доставки почты через ретрансляцию SMTP.

Предварительные требования

Чтобы настроить IIS и следовать за мной, убедитесь, что у вас есть машина с Windows Server 2016. Я также предполагаю, что вы вошли на сервер в качестве администратора.

Установите службу SMTP сервера IIS

Первое, что вам нужно сделать для настройки ретрансляции SMTP в IIS – установить службу SMTP сервера IIS. Вам нужно установить функцию Сервер SMTP Windows.

Используя Менеджер сервера

Если вы не знакомы с установкой функций Windows через Менеджер сервера, ознакомьтесь с этой статьей с заголовком Установка или удаление ролей, служб ролей или функций.

Используя PowerShell

Установка функции SMTP сервера устраняет множество манипуляций с указанием и кликами. Откройте консоль PowerShell от имени администратора и выполните следующую команду:

PS51> Install-WindowsFeature -Name SMTP-Server -IncludeAllSubFeature -IncludeManagementTools -Restart

Ждите завершения установки. Вы должны увидеть вывод, аналогичный этому.

Installing the SMTP-Server Windows feature with PowerShell

Импортируйте сертификат (только для TLS)

Если вы собираетесь отправлять электронную почту через TLS (Office 365), вам нужно импортировать SSL-сертификат в личное хранилище сертификатов на сервере перед настройкой SMTP-сервера IIS. Вы можете пропустить этот шаг, если ваш ретранслятор SMTP Office 365 не поддерживает TLS.

Если у вас нет сертификата, вы можете получить его через внутреннюю инфраструктуру PKI (если у вас есть таковая) или общедоступный сертификат, используя услуги, такие как LetsEncrypt, Digicert и др.

После получения сертификата вам нужно его импортировать в личное хранилище сертификатов на сервере. Если вы не знаете, как импортировать сертификаты с помощью MMC “Сертификаты”, посмотрите руководство Импорт и экспорт сертификата – Microsoft Windows.

При успешном выполнении вы должны увидеть окно подтверждения, подобное этому. Щелкните OK (1) для подтверждения.

Successful certificate import

Вернитесь в основное окно консоли, обновите папку Личное > Сертификаты, и вы должны увидеть импортированный сертификат.

Проверьте сертификат

После импорта обязательно проверьте, что цепочка сертификатов полна и нет ошибок. Если всё в порядке, вы должны иметь возможность открыть сертификат и увидеть, что поле Действительно с актуально, и существует личный ключ, связанный с сертификатом. Пример показан ниже.

Validating certificate

На вкладке Путь сертификации также должно быть видно Статус сертификата, указывающий, что сертификат в порядке, как показано ниже.

Certificate status stating that the certificate is OK

Настройте сервер SMTP IIS

На этом этапе сервер SMTP успешно установлен. Но прежде чем его можно будет использовать, необходимо настроить параметры сервера.

Сервер SMTP работает в режиме совместимости с IIS6 и не имеет встроенной поддержки PowerShell. Это означает, что вы будете настраивать параметры вручную с использованием консоли управления IIS6.

Перейдите в Пуск –> Выполнить и введите inetmgr6, затем нажмите Enter. Это откроет консоль IIS 6.

Как только консоль открыта, щёлкните правой кнопкой мыши на [SMTP Virtual Server #1] (1), затем выберите Свойства (2).

Checking SMTP Virtual Server properties

В окне Свойства отметьте Включить регистрацию (1), затем щёлкните Свойства (2).

Enabling logging

Перейдите на вкладку Дополнительно и отметьте все поля в списке (1), затем щёлкните OK (2).

Checking advanced options

Вернитесь в окно Свойства, перейдите на вкладку Доставка и щёлкните Дополнительно (1).

Clicking Advanced button on Delivery tab

В окне Расширенная доставка введите полное доменное имя (Fully-qualified domain name) (1), которое вы хотели бы использовать для почтового сервера SMTP назначения. Оно не обязательно должно совпадать с FQDN самого компьютера. Если вы настраиваете этот SMTP-сервер для использования с Office 365, в поле Умный хост (Smart host) (2) укажите ваш Office 365 MX-адрес и нажмите ОК (3).

Setting smart host

Добавьте разрешенные IP-адреса в SMTP-сервере IIS

Теперь, если у вас есть устройство, которое вы хотите протестировать, сначала добавьте его IP-адрес в ограничения ретрансляции. Например, IP-адрес 192.168.0.3 будет добавлен в ограничения ретрансляции. Этот IP-адрес принадлежит компьютеру, находящемуся в той же сети, что и сервер.

Чтобы добавить разрешенный IP в ограничения ретрансляции, перейдите на вкладку Доступ и нажмите Ретрансляция (1).

Relay button on Access tab

В окне Ограничения ретрансляции нажмите Добавить (1).

Adding a relay restriction

Затем введите IP-адрес (1), который вы хотите разрешить, и нажмите ОК (2).

Restricting relay to only a single IP

Вернитесь в окно Ограничения ретрансляции, убедитесь, что IP-адрес добавлен в список, затем нажмите ОК (1) и ОК в свойствах окна.

Confirming new relay restriction

Подтвердите обнаружение сертификата SMTP-сервером и включите шифрование TLS

Если ваш ретрансляционный сервер будет отправлять исходящие электронные письма через TLS, вам нужно подтвердить, что сертификат виден сервером SMTP IIS, и включить шифрование TLS.

На вкладке Доступ свойств SMTP-сервера вы должны увидеть сообщение о том, что “Обнаружен сертификат TLS с датой истечения срока действия: XXXXXX”. Если да, значит, вы все настроили правильно.

Inspecting TLS certification expiration date

Затем перейдите на вкладку Доставка, нажмите Исходная безопасность (1), убедитесь в том, что установлен флажок Шифрование TLS (2), затем нажмите ОК (3).

Setting TLS encryption on outbound email

Это завершает настройку сервера SMTP IIS.

Протестируйте сервер ретрансляции почты SMTP IIS

На этом этапе ваш SMTP-сервер должен быть настроен и готов к началу пересылки почты. Следующим шагом будет его тестирование. Теперь вы можете протестировать отправку электронной почты через ретранслятор SMTP, чтобы убедиться, что получающий сервер SMTP получает сообщение.

Тестирование с использованием каталога PickUp

После установки SMTP-сервера IIS на сервере будет создана папка по адресу C:\inetpub\mailroot\Pickup. Этот каталог – место, где служба SMTP забирает вновь отправленные электронные письма для обработки перед перемещением их в каталог Очередь.

Для тестирования с использованием этого метода создайте файл обычного текста с содержимым, подобным следующему:

From: myname@yourdomain.com
To: someone@somedomain.com,someone@NotYourDomain.com
Subject: testing Pickup directory
This is the test message body.

Не забудьте изменить значения “От” и “Кому” на свои собственные.

Теперь сохраните этот файл в каком-нибудь другом месте, а не в каталоге Pickup под именем mail.txt.

После сохранения файла скопируйте и вставьте его в папку C:\inetpub\mailroot\Pickup. Если операция выполнена успешно, файл должен исчезнуть. Это означает, что служба SMTP его забрала и начала обрабатывать сообщение.

После нескольких секунд до минуты вы должны получить электронное письмо, отправленное на указанный адрес электронной почты получателя, определенный в файле mail.txt.

Тест с использованием PowerShell

В этом тесте вы будете использовать PowerShell с компьютера, IP-адрес которого вы добавили в раздел Добавление разрешенных IP-адресов в SMTP-сервер IIS.

Откройте консоль PowerShell и скопируйте/вставьте следующий код. Обязательно отредактируйте значения параметров From, To и SmtpServer. В зависимости от того, как вы настроили ретрансляцию сервера выше, вы можете использовать любой из приведенных ниже примеров для тестирования настройки без использования TLS или с использованием TLS.

## Построение параметров сообщения
$mailParams = @{
    SmtpServer                 = 'smtp.server.here'
    Port                       = 25
    #UseSSL = $true   
    From                       = '[email protected]'
    To                         = '[email protected]', '[email protected]'
    Subject                    = ('ON-PREM SMTP Relay - ' + (Get-Date -Format g))
    Body                       = 'This is a test email using ON-PREM SMTP Relay'
    DeliveryNotificationOption = 'OnFailure', 'OnSuccess'
}
<# Отправка сообщения #>
Send-MailMessage @mailParams

Резюме

В этой статье вы узнали, как настроить ретрансляцию сервера IIS SMTP для доставки электронной почты получателя из Office 365. Мы рассмотрели настройку как без использования TLS, так и с использованием TLS SMTP-сервера с использованием комбинации графического интерфейса и PowerShell. Затем мы протестировали нашу настройку с использованием PowerShell, чтобы подтвердить, что все в порядке.

Дополнительное чтение

Source:
https://adamtheautomator.com/iis-smtp-relay/