Назад | Перейти на главную страницу

Windows SMTP: безопасность исходящих сценариев

Создание сценария конфигурации в PowerShell для настройки службы SMTP веб-серверов для использования AWS SES (простая служба электронной почты) для доставка исходящей почты. Легко сделать вручную, но когда мы входим в мир с балансировкой нагрузки, у меня чертовски много времени, чтобы написать сценарий.

Моя главная проблема, похоже, заключается в том, чтобы включить базовую аутентификацию и предоставить кредиты. Кажется, я не могу понять, какие это могут быть поля WMI ... Я думаю, что поля cred RouteUserName и RoutePassword, но не могу найти подходящий вариант для включения BasicAuth, чтобы доказать это. Установка флажка TLS-шифрования тоже ускользает от меня.

Я упускаю что-то очевидное или просто не использую правильные переменные?

Поля, с которыми я борюсь, проиллюстрированы:

Пример сценария, который я уже создал. Ретранслятор IP работает, и поля RouteUserName и RoutePassword подтверждены установленными. Но что остальное?

$smtpuser = Get-SSMParameter -Name SMTP_User
$smtppass = Get-SSMParameter -Name SMTP_Password -WithDecryption $true
$smtpfqdn = "$env:computername.$env:userdnsdomain"

$SmtpConfig = Get-WMIObject -Namespace root/MicrosoftIISv2 -ComputerName localhost -Query "Select * From IisSmtpServerSetting"
$RelayIpList = @( 24, 0, 0, 128, 32, 0, 0, 128, 60, 0, 0, 128, 68, 0, 0, 128, 1, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 127, 0, 0, 1 )
$SmtpConfig.RelayIPList = $RelayIPList
$SmtpConfig.AllowAnonymous = $false
$SmtpConfig.AuthBasic = $true
$SmtpConfig.RouteUserName = $smtpuser.Value
$SmtpConfig.RoutePassword = $smtppass.Value
$SmtpConfig.AlwaysUseSsl = $true
$SmtpConfig.DefaultDomain = $smtpfqdn
$SmtpConfig.SmartHost = "email-smtp.us-west-2.amazonaws.com"

$SmtpConfig.Put()

Restart-Service "SMTPSVC" -ErrorAction 

Решено после долгих экспериментов. Вот подходящие фрагменты моего сценария. Обратите внимание, что я храню кредиты пользователей SMTP в хранилище параметров AWS Systems Manager.

$smtpuser = Get-SSMParameter -Name SMTP_User
$smtppass = Get-SSMParameter -Name SMTP_Password -WithDecryption $true
$smtpfqdn = "$env:computername.$env:userdnsdomain"

Set-Service "SMTPSVC" -StartupType Automatic -ErrorAction SilentlyContinue
Start-Service "SMTPSVC" -ErrorAction SilentlyContinue

$SmtpConfig = Get-WMIObject -Namespace root/MicrosoftIISv2 -ComputerName localhost -Query "Select * From IisSmtpServerSetting"
$RelayIpList = @( 24, 0, 0, 128, 32, 0, 0, 128, 60, 0, 0, 128, 68, 0, 0, 128, 1, 0, 0, 0, 76, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 1, 0, 0, 0, 1, 0, 0, 0, 2, 0, 0, 0, 2, 0, 0, 0, 4, 0, 0, 0, 0, 0, 0, 0, 76, 0, 0, 128, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 255, 255, 255, 255, 127, 0, 0, 1 )
$SmtpConfig.RelayIPList = $RelayIPList
$SmtpConfig.AuthFlags = "1"
$SmtpConfig.AuthBasic = $false
$SmtpConfig.RouteAction = "268"
$SmtpConfig.RouteUserName = $smtpuser.Value
$SmtpConfig.RoutePassword = $smtppass.Value
$SmtpConfig.AlwaysUseSsl = $true
$SmtpConfig.SmartHostType = "2"
$SmtpConfig.DefaultDomain = $smtpfqdn
$SmtpConfig.SmartHost = "email-smtp.us-west-2.amazonaws.com"
$SmtpConfig.RemoteSmtpPort = "587"

$SmtpConfig.Put()

Restart-Service "SMTPSVC" -ErrorAction SilentlyContinue