web-dev-qa-db-ja.com

Windows SMTP:スクリプトアウトバウンドセキュリティ

PowerShellで構成スクリプトを作成して、 アウトバウンドメール配信 にAWS SES(シンプルなメールサービス)を使用するようにウェブサーバーのSMTPサービスを構成します。手動で行うのは簡単ですが、負荷分散された世界に入ると、スクリプトを作成するのに非常に時間がかかります。

私の主な課題は、基本認証をオンにして認証を提供することのようです。それらがどのWMIフィールドであるかを理解できないようです... credフィールドはRouteUserNameRoutePasswordだと思いますが、適切なオプションを見つけることができないようです。 BasicAuthをオンにしてそれを証明します。 TLS暗号化ボックスをチェックすることも私を回避しています。

私は明らかな何かを見逃していますか、それとも正しい変数を使用していませんか?

イラストで苦労している分野: enter image description here

これまでに作成したサンプルスクリプト。リレー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 
3
Chris_K

多くの実験で解決しました。これが私のスクリプトの適切な部分です。 AWS SystemsManagerパラメータストアに保存されているSMTPユーザークレジットを保持していることに注意してください。

$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
3
Chris_K