喜歡或討厭,電子郵件無所不在。將郵件傳送到各個地方的協議是SMTP,而SMTP的「路由器」是SMTP中繼。
Not a reader? Check out this tutorial’s related video.
設置SMTP中繼在不同系統上有所不同,但如果您的郵件服務提供商是Office 365,您的選擇有限。設置可能很複雜且容易出錯,尤其是對於不支援TLS的設備。
請注意,通過Office 365發送電子郵件不需要使用SMTP中繼。您可以讓客戶端直接將郵件發送到Office 365,而無需添加任何不需要進行任何配置更改的SMTP中繼。要了解詳情,請閱讀《如何使用PowerShell發送Office 365直接發送/SMTP客戶端提交郵件》。
先決條件
在繼續之前,需要滿足以下要求:
- 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权限。确保您的帐户是组织管理组的成员。
有两种方法可以创建连接器。您可以使用Exchange管理中心或PowerShell。这两个选项都可以执行相同的任务。由您来决定使用哪个选项。在本文中,我们将涵盖这两种方法。我们还将介绍如何创建非TLS和TLS连接器。
使用Exchange管理中心创建非TLS连接器
首先,让我们创建一个非TLS连接器。您将首先学习如何使用Exchange管理中心来完成此操作。您可以在Exchange管理中心中配置许多Office 365的SMTP设置。
登录后,点击邮件流(1) -> 连接器(2) -> 新建(3)。将弹出新连接器窗口。

在新连接器窗口中,选择从:您的组织的电子邮件服务器(1),选择到:Office 365(2),点击下一步(3)。

在下一个窗口中,输入名称SMTP Relay(非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 Relay(非TLS),但您的可能有所不同。
在定義Office 365的窗口中,應該從您的郵件服務器識別電子郵件,選擇:
- 通過驗證發送服務器用於與Office 365進行身份驗證的證書的主題名稱與此域名匹配(推薦)(1)
- 然後輸入SSL證書的主題(2)
- 並點擊下一步(3)。

同樣,在處理之前,您將看到必要更改的摘要。如果沒有,您可以立即點擊保存按鈕。
使用PowerShell創建非TLS連接器
如果通過圖形用戶界面創建Office 365連接器不是您的菜,您也可以通過PowerShell創建。為此,首先確保您已連接到Exchange Online PowerShell。
要創建連接器,您需要運行New-InboundConnector
命令。該命令需要幾個不同的參數,因此我將使用PowerShell splatting提前設置這些參數。
I’ve added some comments in the code itself below but here’s a breakdown of each parameter and what it’s used for:
- 名稱 – 這是連接器的名稱。
- 連接器類型 – 這是連接器的類型。此值可以是
OnPremises
或Partner
。在此情境中,適當的類型是OnPremises
。 - 寄件者域名 – 這可以是允許的寄件者域名清單。只有您的租戶已驗證的域名才是有效的選擇。星號(
*
)表示您允許所有已驗證的域名使用此連接器轉發郵件。如果您只需要允許某些寄件者域名,將此值更改為域名的數組(例如:'domain1.com','domain2.com'
) - 寄件者IP地址 – 這是您的公共IP地址。在執行之前請務必更改此值。
- 限制域名為IP地址 – 當此值設置為
$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点的地址或值。
测试非TLS的SMTP中继(IP地址)
注意:此测试必须从允许在Office 365 SMTP中继设置中使用的计算机的公共IP地址上进行。
使用下面的PowerShell代码进行测试。在运行之前,请确保更改From
、To
和SmtpServer
参数的值以使用您自己的Office 365 SMTP中继设置。
To
– 必须包括一个内部域收件人和一个外部域收件人。不要忘记将这些值更改为您自己的值。From
– 必须更改为您指定的发件人地址。电子邮件地址的域部分必须是您租户的电子邮件域之一。SmtpServer
– 必须更改为您的Office 365租户的MX端点。
测试TLS SMTP中继(证书)
注意:在进行此测试之前,您必须拥有以PFX格式的公共SSL证书。
由於TLS SMTP中繼需要憑證,因此無法使用Send-MailMessage
PowerShell cmdlet,因為它不允許您選擇特定的憑證。取而代之,請使用兩個名為System.Net.Mail.SmtpClient的.NET物件來定義SMTP參數,並使用System.Net.Mail.MailMessage來撰寫郵件內容。
以下是一段PowerShell程式碼片段,您可以在運行之前更改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路由。