如何配置Exchange Server 2016 SMTP中继

如何配置Exchange Server 2016 SMTP中继

在大多数的企业应用场景中,都会遇到第三方平台或应用程序使用 Exchange 的 SMTP 服务发送邮件的情况,在我个人所遇到的客户项目中,多数都是由 ERP 或 CRM 等平台去调用 Exchange SMTP 进行邮件投递。该需求 Exchange Server 2016 可以很好地满足,但如何选择和如何配置 Exchange Server 2016 SMTP 中继则需要按客户端应用的需求场景。

Exchange Server 2016 通常会遇到两种类型的 SMTP 中继场景:

  • 内部中继:设备和第三方应用只需将电子邮件发送给 Exchange Organization 的内部收件人
  • 外部中继:设备和第三方应用需要将电子邮件投递给外部收件人

我们先来看看两种不同的场景区别,再来具体分析实际应用场景中需要考虑的一些细节。

Exchange Server 2016内部SMTP中继

当 Exchange Server 2016 首次部署完成之后,将会自动预配置一个允许接收匿名发件人的接收器用于接收来自 Internet 到内部收件的人电邮。该自动创建的默认接收连接器不仅允许接收 Internet 的入站电子邮件,也同样适用的 SMTP 内部中继场景。

该接收连接器的默认名称为”服务器名\Default Frontend 服务器名“,我们可以在 EMS 中使用如下命令查看到:

同时,我们可以使用 Telnet 进行 SMTP 连接来测试接收连接器:

具体的常用 SMTP 命令建议大家 Google 自学。

Exchange Server 2016外部SMTP中继

接着上面的演示示例,我们来看看使用 Telnet 从一个有效的内部地址发邮件给外部联系人会发生什么:

从上图中大家已经看到,此时会返回一个“550 5.7.54, Unable to relay recipient in non-accepted domain” SMTP 错误,这表示接收连接器不允许匿名将未经验证的发件人传递给外部域名,

这样的默认设置可以防止 Exchange Server 2016 被不怀好意的人作为开放中继利用。

如果你的应用场景需要使用设备或第三方应用给外部人员发送邮件,有如下两种方式可以实现:

  • 使用经身份验证的SMTP连接
  • 配置匿名SMTP中继连接器(不推荐允许IP放得太大,配置不当容易被利用)

下面我们就以上两种方式的配置分别进行一下介绍。

配置Exchange Server 2016 SMTP中继身份验证

第一种方式便是配置使用 SMTP 连接身份验证。Exchange Server 2016 用于客户端的接收链接器默认命名为”服务器名\Client Frontend 服务器名”

要让 Exchange Server 2016 SMTP 中继身份认证能够正常工作,要求至少为正确配置了 Exchange Server 2016 SSL 证书,并为使用 SMTP 的设备或第三方应用配置了正确的 DNS 别名。如果前提条件确认无误,则只需为接收连接器配置好 TLSCertificateName 即可:

1先使用 Get-ExchangeCertificate 确认要使用的 SSL 证书指纹。

由于 TLSCertificateName 字符串的语法由证书的两个不同属性组成,因此用于下列命令应用到配接收连接器:

$cert = Get-ExchangeCertificate -Thumbprint 31CDD8E30237AA41ABBD2D15D10B552DBED68436
$tlscertificatename = "$($cert.Issuer)$($cert.Subject)"
Set-ReceiveConnector "Client Frontend MAIL1" -Fqdn maiFl.sysgeek.cn -TlsCertificateName $tlscertificatename

为了测试 Client Frontend 连接器,我们可以使用 PowerShell 的 Send-MailMessage cmdlet 来替代 Telnet 进行测试:

$credential = Get-Credential
Send-MailMessage -SmtpServer mail.sysgeek.cn -Credential $credential -From 'administrator@sysgeek.cn' -To 'xxxx@test.com' -Subject 'Test email' -Port 587 -UseSsl

配置Exchange Server 2016匿名SMTP中继

如果将 SMTP 外部中继使用身份验证的方式在你的场景不适用,管理员可以考虑在 Exchange Server 2016 中创建发送邮件设备和第三方应用 IP 或 IP 范围的匿名 SMTP 中继接收接收器。创建步骤如下:

1打开Exchange 管理中心 — 邮件流 — 接收连接器

2点击 + 号按向导创建一个新的接收连接器,名称自己写,角色选择前端传输,类型选择自定义。


删除默认远程网络设置的 IP 范围(极重要),再添加上允许匿名的设备或第三方应用的 IP 地址或范围。

导向中配置完成后,打开 Exchange Management Shell 执行如下两条命令更改接收连接器权限:

Set-ReceiveConnector "ANONYMOUS RELAY MAIL1" -PermissionGroups AnonymousUsers
Get-ReceiveConnector "ANONYMOUS RELAY MAIL1" | Add-ADPermission -User 'NT AUTHORITY\Anonymous Logon' -ExtendedRights MS-Exch-SMTP-Accept-Any-Recipient

 

注意:命令可以照抄,但接收连接器名称总会改成你自己环境的吧!

配置完成之后大家便可以使用 Telnet 测试被允许的 IP 地址是否已被允许从任何(有效内部)电子邮件地址发送邮件到外部地址了。

posted on 2022-07-21 16:42  遇见阿杜  阅读(1436)  评论(0编辑  收藏  举报