恨它还是爱它;电子邮件无处不在。将该电子邮件传送到各个地方的协议是SMTP,而SMTP“路由器”是SMTP中继。
Not a reader? Check out this tutorial’s related video.
设置SMTP中继在不同系统间有所差异,但如果你的邮件服务提供商是Office 365,你的选择就有限。设置可能会复杂且容易出错,特别是对于不支持TLS的设备。
请注意,通过Office 365发送电子邮件不需要SMTP中继。你可以让客户端直接将电子邮件发送到Office 365,而无需添加不需要任何配置更改的SMTP中继。要了解详情,请阅读如何发送Office 365直接发送/SMTP客户端提交电子邮件(PowerShell)。
先决条件
在继续之前,需要满足以下要求。
- Office 365订阅。如果你还没有,可以注册Office 365 E5试用订阅。
- A Windows 10 computer with PowerShell v5.1
- A public static IP address. You can still create an SMTP relay in Office 365 even without this, but you might not test.
- 从客户端到Office MX端点的TCP端口25访问。
- A valid SSL certificate. This certificate could be a wildcard certificate (eg. *.yourdomain.com) issued by third-party certificate authorities like LetsEncrypt, Digicert, etc. Note, that you cannot use self-signed certificates or certificates issued by an internal PKI because they are not supported. (only required for TLS connections)
要设置SMTP中继,您首先必须在Office 365中创建一个连接器以接受SMTP事务。该连接器将从应用程序或设备接收SMTP中继事务。
在尝试创建连接器之前,请确保您的帐户具有适当的Exchange Online权限。确保您的帐户是Organization Management组的成员。
有两种创建连接器的方法。您可以使用Exchange管理中心或PowerShell。这两个选项将执行相同的任务。由您决定使用哪一个。在本文中,我们将涵盖两者。我们还将介绍创建非TLS和TLS连接器。
使用Exchange管理中心创建非TLS连接器
首先,让我们创建一个非TLS连接器。您将首先学习如何通过Exchange管理中心执行此操作。您可以在Exchange管理中心中配置许多Office 365 SMTP设置。
登录后,单击邮件流(1) –> 连接器(2) –> 新建(3)。将弹出新建连接器窗口。

在新建连接器窗口中,选择From: Your organization’s email server(1),选择To: Office 365(2),然后点击下一步(3)。

在下一个窗口中,输入名称SMTP中继(非TLS)或选择您自己的名称(1),键入描述接受来自本地SMTP服务器的中继(2),取消选中保留内部Exchange电子邮件标头(推荐)(3),然后点击下一步(4)。

在下一个窗口中,选择通过验证发送服务器的IP地址是否与您组织的这些IP地址之一匹配(1),然后点击添加(2)。

在新弹出的窗口中,输入您的公共IP地址(1),然后点击确定(2)。这应该会将您带回到先前的窗口。

确认IP地址已添加到列表中(1),然后点击下一步(2)。

然后您将看到需要实施的更改摘要。首先处理必要的更改。如果没有更改,您可以直接点击保存。
回到Exchange管理中心,您现在可以确认已创建新连接器。

现在应该已经创建了一个非TLS连接器。
使用Exchange管理中心创建TLS连接器
创建TLS连接器类似于创建非TLS连接器。就像您创建非TLS连接器一样,回到新连接器向导并使用相同的邮件流程方案。我将使用一个连接器名称SMTP中继(非TLS),但您的可能会有所不同。
在定义 Office 365 的窗口中应该识别来自您的电子邮件服务器的电子邮件,选择:
- 通过验证发送服务器用于与 Office 365 进行身份验证的证书上的主题名称与此域名匹配(推荐) (1)
- 然后键入 SSL 证书的主题 (2)
- 并单击下一步 (3)。

然后,您将看到所需更改的摘要。在处理之前先完成它们。如果没有,您可以立即单击保存按钮。
使用 PowerShell 创建非 TLS 连接器
如果通过 GUI 创建 Office 365 连接器不是您的菜,您始终可以通过 PowerShell创建。为此,首先确保您已连接到 Exchange Online PowerShell。
要创建连接器,您需要运行New-InboundConnector
命令。该命令需要一些不同的参数,因此我将使用 PowerShell 批处理提前设置这些参数。
I’ve added some comments in the code itself below but here’s a breakdown of each parameter and what it’s used for:
- Name – 这是连接器的名称。
- ConnectorType – 这是连接器的类型。此值可以是
OnPremises
或Partner
。在这种情况下,适当的类型是OnPremises
。 - SenderDomains – 这可以是允许的发件人域名列表。仅您租户的已验证域名是有效选择。星号(
*
)表示您允许所有已验证域名使用此连接器中继消息。如果您只需要允许某些发件人域名,请将此值更改为域名数组。(例如:'domain1.com','domain2.com'
) - SenderIPAddresses – 这是您的公共IP地址。执行前不要忘记更改此项。
- RestrictDomainsToIPAddresses – 当此值设置为
$true
时,表示此连接器将仅接受来自您允许的公共IP地址的发件人地址的电子邮件。
执行后,您应该看到类似下面的内容。

使用PowerShell创建TLS连接器
假设您已经连接,请运行以下代码以使用PowerShell创建TLS连接器。您可以看到下面许多参数与创建非TLS连接器相同。与创建非TLS连接器不同的必需参数包括:
- RequireTLS – 这指定此连接器接收到的所有消息都需要TLS传输
- TlsSenderCertificateName – 这是发件人使用的证书的名称(或主题)。
执行以上代码,即可创建TLS连接器并准备好接收电子邮件。
使用PowerShell测试Office 365 SMTP中继连接器
创建连接器后,准备进行测试。最简单的方法是使用PowerShell。在本节中,我们将创建一些PowerShell脚本,以便您轻松确保连接器正常工作。
在开始测试之前,请确保您知道您的Exchange Online域的MX终结点URL是什么。如果您不知道如何找到MX终结点URL,请登录到Office 365管理门户。点击设置,选择域,点击域名 并 复制MX Points到地址或值。
测试非TLS SMTP中继(IP地址)
注意:此测试必须在允许在Office 365 SMTP中继设置中使用的计算机上进行。
使用以下PowerShell代码进行测试。在运行之前,请务必更改From
,To
和SmtpServer
参数值以使用您自己的Office 365 SMTP中继设置。
To
– 必须包括一个内部域收件人和一个外部域收件人。不要忘记更改这些值为您自己的值。From
– 必须更改为您指定的发件人地址。电子邮件地址的域部分必须是您租户的电子邮件域之一。SmtpServer
– 必须更改为您Office 365租户的MX终结点。
测试TLS SMTP中继(证书)
注意:在进行此测试之前,您必须具有以PFX格式保存的公共SSL证书。
由于 TLS SMTP 中继需要证书,所以您不能使用 Send-MailMessage
PowerShell 命令,因为它不允许您选择特定的证书。相反,使用两个名为 System.Net.Mail.SmtpClient 的 .NET 对象来定义 SMTP 参数,以及 System.Net.Mail.MailMessage 来组成消息。
以下是一个 PowerShell 代码片段,您可以使用它来测试 TLS SMTP 中继。在运行之前,请不要忘记更改 pfxFile
、pfxPass
、From
、To
和 SmtpServer
的值,以使用您的 Office 365 SMTP 中继设置。
如果设置了正确的 TLS 连接器,通过 Add()
方法定义的收件人应该会收到测试邮件。
使用消息标题验证 SMTP 中继跳跃
现在,您已经设置了一个使用本地服务器和 Office 365 SMTP 中继的功能性 SMTP 中继。所有测试都成功了,您的设备可以将消息发送到内部和外部收件人。干得好!
如果您仍然怀疑并需要确认这些消息是否通过 Office 365 SMTP 中继发送,您可以查看接收到的电子邮件的消息头。
注意:打开消息头的方法因不同的邮件客户端而异。以下示例特定于 Gmail。
在 Gmail 界面中打开电子邮件,打开消息,并单击三个垂直点 (1),然后单击 显示原始 (2)。

A new page will show the email message headers. Click on Copy to clipboard (1).

在新的浏览器选项卡中导航到 https://testconnectivity.microsoft.com/。
转到 消息分析器 (1) 选项卡,将复制的数据粘贴到框中 (2),然后单击 分析头部 (3)。

分析结果将显示在下面的表格中。

您应该在上述结果中看到以下工作流程:
- IP 地址 192.168.0.3 表示计算机的源。
- 本地 SMTP 中继服务器收到消息。
- Exchange Online 保护 (EOP) 收到消息。
- Exchange Online 服务器收到消息并将其重新路由以进行出站传送。
- Office 365 传递消息至 google.com。
根据分析结果,您可以确认消息确实按照预期通过了 Office 365 SMTP 中继。
摘要
在本文中,您已经学会了如何创建TLS和非TLS Office 365 SMTP中继。您还学会了如何使用不同的技术测试和确认它们的功能,以及如何验证消息通过的SMTP路由。