Windows Azure 的運算個體 (Compute Instance) 的虛擬機器內,包含了完整的作業系統與應用程式的執行環境,像 Windows Server 2008 64 位元作業系統,以及 IIS 7 (Web Role) 或工作代理行程 (Worker Agent Process) 等,可以確保 Windows Azure Computes 上的雲端應用程式 (Cloud Application) 正常執行,不過以往都會隨著 IIS 7 安裝的 SMTP Service 這個重要的寄信服務,在 Compute Instance VM 內並沒有提供,也無法由用戶客制新增 (至少下筆時還沒有),所以目前並沒有能直接從 Windows Azure 平台上發送 Email 的作法,這個問題也是經常被評估 Windows Azure 平台時很常被提出的問題。
Windows Azure 的運算個體 (Compute Instance) 的虛擬機器內,包含了完整的作業系統與應用程式的執行環境,像 Windows Server 2008 64 位元作業系統,以及 IIS 7 (Web Role) 或工作代理行程 (Worker Agent Process) 等,可以確保 Windows Azure Computes 上的雲端應用程式 (Cloud Application) 正常執行,不過以往都會隨著 IIS 7 安裝的 SMTP Service 這個重要的寄信服務,在 Compute Instance VM 內並沒有提供,也無法由用戶客制新增 (至少下筆時還沒有),所以目前並沒有能直接從 Windows Azure 平台上發送 Email 的作法,這個問題也是經常被評估 Windows Azure 平台時很常被提出的問題,其實微軟大可把 SMTP Services 放到 VM 中,但是這樣會有幾個大問題:
- 只有 Web Role 可以安裝 SMTP Services,但這樣可能會吃到應用程式執行的資源。
- 如果某台 VM 被用來濫發廣告信被檢舉的話,對微軟自己的商譽會有很大的傷害。
- SMTP Services 如果組態不當被人家用來做轉信站,對資料中心的頻寬也有很大的影響。
因此,如果要在 Windows Azure Computes 上發送 Email,目前只有三種方法:
- 透過第三方 Email 供應商寄信,如 EmailTheInternet.com,SendGrid.com,AuthSMTP.com 這些供應商,Gmail 或許也可以,但不適用於商業用 SMTP,若是要用在商業運轉的話,建議還是選用商業用的 Email 服務,如此至少可以確保寄信的品質。這個方法的優點是成本低,不需特別安排管理人員等,但缺點就是無法完全控制伺服器的環境。
- 在企業內建置 Email 伺服器 (例如 Microsoft Exchange),並且由雲端呼叫 Email 伺服器的服務,優點是可以完全控制伺服器,並應企業需求來建置,可確保像安全需求或是擴充需求等,但缺點是成本較高且要有專業的管理人員來管理 Email 伺服器。
- 在企業內建置 Email 伺服器,但是由 Email 伺服器本身 (或另外撰寫程式) 向 Windows Azure 要求資料,應用程式可以將送信要求保存在 Queue (指令) 和 BLOB (內容與附件),而 Email 伺服器會像 Windows Azure Queue 和 BLOB 查詢是否有待送資料,如果有的話就將資料抓取下來交由本地的 SMTP Server 寄送,優缺點同由雲端呼叫 Email 伺服器的服務。
參考資料:
- Adoption Program Insights: Sending Emails from Windows Azure (Part 1 of 2)
- Adoption Program Insights: Sending Emails from Windows Azure (Part 2 of 2)