在 PowerShell 中构建配置脚本以配置 Web 服务器的 SMTP 服务以使用 AWS SES(简单电子邮件服务)进行出站邮件传递。手动操作很容易,但是当我们进入一个负载平衡的世界时,我正在为它编写脚本而苦恼。
我的主要挑战似乎是打开基本身份验证并提供信用。我似乎无法弄清楚那些可能是什么 WMI 字段...我认为 cred 字段是RouteUserName
and 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 参数存储中。