Microsoft IIS可以很好地扮演SMTP角色,但需要一些步骤来进行设置。幸运的是,我已经设置了一个IIS SMTP中继服务器,并记录了所有步骤!
在本文中,我们将介绍成功设置SMTP中继服务器以使用Office 365发送出站电子邮件的所有步骤。从技术上讲,我们将使用此SMTP中继来中继邮件到Office 365;同样,它也可以快速用于任何一般的SMTP中继邮件传递目的。
先决条件
要进行IIS设置并跟随我的步骤,请确保您有一台可用的Windows Server 2016机器。我还假设您已以管理员身份登录到服务器。
安装IIS SMTP服务器Windows功能
要设置IIS SMTP中继,首先需要安装IIS SMTP服务器。您需要安装SMTP服务器的Windows功能。
使用服务器管理器
如果您不熟悉通过服务器管理器安装Windows功能,请查看这篇名为安装或卸载角色、角色服务或功能的文章。
使用PowerShell
安装SMTP服务器功能会减少很多的点击操作。以管理员身份打开PowerShell控制台,并运行以下命令:
等待安裝完成。您應該會看到類似以下的輸出。

匯入憑證(僅用於TLS)
如果您將通過TLS(Office 365)發送電子郵件,您需要在配置IIS SMTP伺服器之前將SSL憑證匯入到伺服器的本地機器個人憑證存儲中。如果您的Office 365 SMTP轉發不使用TLS,則可以跳過此步驟。
如果您沒有憑證,可以通過內部PKI(如果有的話)或使用LetsEncrypt、Digicert等服務獲取公共憑證。
一旦您獲得了憑證,您需要將其匯入到本地機器的個人憑證存儲中。如果您不熟悉如何使用憑證MMC匯入憑證,請參考匯入和匯出憑證 – Microsoft Windows。
成功後,您應該會看到如此的確認窗口。點擊確定(1)進行確認。

回到主控制台窗口,刷新個人 > 憑證文件夾,您應該能夠看到已匯入的憑證。
驗證憑證
導入後,請確保驗證證書鏈完整且無錯誤。如果一切正常,您應該能夠打開證書並查看有效期限字段是當前的,並且有與證書關聯的私鑰。以下是一個示例:

在認證路徑標籤上,您還應該看到證書狀態顯示為正常。如下所示:

配置IIS SMTP服務器
此時您已成功安裝SMTP服務器。但在使用之前,必須先配置服務器設置。
SMTP服務器正在運行在IIS6相容模式,並且不帶有內建的PowerShell支援。這意味著您將使用IIS6管理控制台手動配置設置。
前往開始 -> 執行,輸入inetmgr6,然後按Enter。這將打開IIS 6控制台。
控制台打開後,右鍵點擊[SMTP虛擬伺服器 #1] (1),然後選擇內容 (2)

在屬性窗口中,勾選啟用日誌記錄 (1),然後點擊內容 (2)

前往進階標籤,並勾選列表中的所有方塊 (1),然後點擊確定 (2)

回到屬性窗口,切換到遞送標籤,然後點擊進階 (1)

在進階交貨窗口中,輸入您想要用於目標SMTP郵件服務器的完全限定域名(1)。它不一定與計算機本身的FQDN相同。如果您正在配置此SMTP服務器以與Office 365一起使用,在智能主機(2) 字段中,定義您的 Office 365 MX終點,然後點擊確定(3)

在IIS SMTP服務器中添加允許的IP
現在,如果您有一個要測試的設備,您必須首先將其IP地址添加到中繼限制中。對於此示例,將將IP地址192.168.0.3添加到中繼限制中。此IP地址屬於與服務器在同一網絡中的計算機。
要在中繼限制中添加允許的IP,請轉到訪問選項卡,然後點擊中繼(1)

在中繼限制窗口中,點擊添加(1)

然後輸入您想要允許的IP地址(1),然後點擊確定(2)

在中繼限制窗口中,確認IP地址已添加到列表中,然後點擊確定(1)並從屬性窗口中確定

確認SMTP服務器檢測到證書並啟用TLS加密
如果您的中繼服務器將通過TLS發送出站郵件,您需要確認IIS SMTP服務器檢測到證書並啟用TLS加密。
在SMTP服务器属性的访问选项卡上,您应该会看到一条消息,上面写着“发现了一个过期日期为XXXXXX的TLS证书”。如果是这样,您可以继续。

接下来,点击投递选项卡,点击出站安全性(1),勾选TLS加密(2)框,点击确定(3)。

至此,完成了IIS SMTP服务器的配置步骤。
测试IIS SMTP邮件中继服务器
此时,您的SMTP服务器应该已经配置完成,准备开始中继邮件。下一步是进行测试。您现在应该测试通过SMTP中继发送电子邮件,以确认接收SMTP服务器是否收到了该消息。
使用Pickup目录进行测试
当安装了IIS SMTP服务器后,它会在服务器上创建一个文件夹,位于C:\inetpub\mailroot\Pickup。这个目录是SMTP服务在将新提交的电子邮件移动到队列目录之前,先从中获取进行处理的地方。
要使用此方法进行测试,请创建一个纯文本文件,内容类似于:
不要忘记将发件人和收件人的值更改为您自己的。
现在将此文件另存为非pickup目录下的mail.txt。
保存文件后,将文件复制并粘贴到C:\inetpub\mailroot\Pickup文件夹中。如果成功,文件应该会很快消失。这意味着SMTP服务已经将其获取并开始处理消息。
幾秒鐘到一分鐘後,您應該會收到發送到mail.txt中指定的收件人電子郵件地址的郵件。
使用 PowerShell 進行測試
在此測試中,您將在在 IIS SMTP 伺服器中新增允許的 IP部分中添加了其 IP 地址的電腦中使用 PowerShell。
打開 PowerShell 控制台,然後複製/貼上下面的代碼。請確保編輯 From
、To
和 SmtpServer
參數的值。根據您上面配置的轉寄伺服器,您可以使用以下任一範例來測試非 TLS 或 TLS 設置。
摘要
在本文中,您已經學會了如何設定 IIS SMTP 轉寄伺服器,以便從 Office 365 傳送收件人電子郵件。我們介紹了使用 GUI 和 PowerShell 組合設置非 TLS 和 TLS SMTP 伺服器的方法。然後,我們使用 PowerShell 進行測試以確認一切正常。