ECS:按次計費的電子郵件傳輸服務
微軟明確表示,使用基本驗證(Basic Authentication)透過 SMTP AUTH 連接到 Exchange Online 的方式將被淘汰。SMTP AUTH 是應用程式和設備用來連接並透過 Exchange Online 發送電子郵件的協議。這是微軟長期計劃的一部分,目的是移除 Exchange Online 的基本驗證,並要求所有連接都必須使用現代驗證(Modern Authentication)。同時,微軟也宣布了一些其他變更,以限制濫用透過 Exchange Online 傳輸電子郵件的行為,包括減少個人郵箱每日可向外部收件人發送的郵件數量。
高容量電子郵件(HVE)服務(目前處於預覽階段)允許租戶每日向內部收件人發送多達 100,000 封郵件。需要向外部收件人大量發送郵件,例如行銷通訊、帳單等,這是許多組織保留內部部署 Exchange 伺服器的原因之一。微軟希望消除這些原因,並讓客戶使用雲端服務來滿足他們所有的電子郵件需求。然而,HVE 預覽版將外部通訊限制為每日 2,000 名收件人。
如果你需要一個為外部郵件傳送設計的生產就緒服務,微軟的解決方案是 Azure 通信服務(ACS),更具體地說是 ACS 的電子郵件通信服務(ECS)組件。自 2023 年 4 月起,ECS 已經全面上線,並作為按需計費的服務,透過 Azure 訂閱進行資金支援,類似於 Microsoft 365 備份和 SharePoint 翻譯等其他隨需應變的服務。
與 HVE 相似,ECS 建立在 Exchange Online 之上,但不同的是,Exchange Online 主要處理終端使用者的訊息,而 ECS 則專注於由應用程式生成的電子郵件。與 HVE 不同,ECS 需要客戶端連接使用現代驗證。ACS 支援透過基本驗證發送 SMTP 郵件。
本文將介紹如何配置 ECS,通過 PowerShell 使用與 Microsoft 365 租戶綁定的專屬網域(vanity domain)來發送電子郵件。
解決方案概述
解決方案的基本部分及其配置順序如下:
1.一個與有效信用卡綁定的 Azure 訂閱。在這個過程中使用的帳戶必須對訂閱具有管理控制權。
2.一個 ECS 資源。
3.專屬網域(Vanity Domain)
如果該網域用於 Microsoft 365,則可能已為 SPF 和 DKIM(針對 Exchange Online)設置。你還需要為網域添加 DNS 記錄,以配置 Azure 的 DKIM 和 DKIM2 選擇器。驗證網域正確配置是將該網域與 ECS 資源連結過程的一部分。
4.與 ECS 資源連結的 ACS 資源。這兩個資源必須位於同一個 Azure 數據中心區域。
5.一個已在 Entra ID 註冊的應用程式,用於驗證(使用應用程式識別碼、租戶識別碼以及應用程式密鑰)。
6.為 Entra ID 應用程式分配 ACS 角色,允許它提交訊息。
7.一個使用 Email Send API 來創建並發送訊息的 PowerShell 腳本。
準備發送電子郵件
一旦 Azure 資源配置完畢並且網域連接好後,我們就可以開始發送一些電子郵件了。在 Microsoft 365 環境中,發送大量電子郵件的程式碼很可能是用 PowerShell 編寫的,並且可能是從內部部署的 Exchange 繼承而來。雖然仍可以使用 Exchange Online 發送一些大量郵件,但微軟並不希望租戶為此使用 Exchange Online,這也是他們引入新的外部收件人速率(ERR)限制的原因,以限制郵箱每日向超過 2,000 個外部收件人發送郵件。
好消息是,使用 Exchange Online 發送電子郵件的技能和經驗,尤其是使用 Graph API,為使用 ECS 提供了良好的基礎。基本步驟如下:
1.定義變數來保存為與 ECS 通信而創建的 Entra ID 註冊應用程式的應用程式 ID、應用程式密鑰以及租戶 ID。這些變數用於從 Azure 通信服務端點獲取訪問憑證。與任何其他訪問憑證一樣,憑證會在大約一小時後過期,並且如果需要在首次獲得憑證後發送更多訊息,必須重新獲取。
2.定義要使用的發件人地址。ECS 沒有像 Exchange Online 中那樣的使用者郵箱。該地址符合提交訊息的 SMTP 要求。預設情況下,ECS 資源配置了一個 DoNotReply@domain 的電子郵件地址。可以為發件人添加其他電子郵件地址。也可以設置一個真實的電子郵件地址作為回覆地址,以便收件人可以回覆訊息。
3.定義一個變數來保存 ECS 資源端點。
4.創建消息正文的 HTML 內容。
例如將 Word 文檔另存為網頁,但 ECS 只接受簡單的 HTML(基本格式如粗體和下劃線、不同標題和超連結)。
5.構建電子郵件消息結構, 包括 TO、CC 和 BCC 收件人、消息正文、發件人地址和回覆地址等元素。這個過程類似於創建提交到 Exchange Online 的郵件結構。存在一些差異,因此需要注意 Email Send API 的文檔。
6.提交一個 POST 請求到 ECS API, 將消息有效載荷提交給 ECS 進行處理。對於批量郵件操作,腳本可能會從某個數據源中讀取收件人地址,並遍歷這些地址集來向每個地址發送消息。


Comments are closed, but trackbacks and pingbacks are open.