Applies ToForefront Threat Management Gateway 2010 Enterprise Forefront Threat Management Gateway 2010 Standard

徵狀

請試想下列案例:

  • 在 Microsoft 網際網路安全性與加速 (ISA) 伺服器 2006年或 Forefront TMG 2010,您可以啟用 SMTP 篩選。

  • SMTP 用戶端會與透過 ISA Server 2006 或 Forefront TMG 2010 SMTP 伺服器通訊。

  • SMTP 用戶端會使用其中一個下列的動詞命令與 SMTP 伺服器其對話:

    • TLS

    • STARTTLS

    • X AnonymousTLS

在這個案例中,ISA Server 2006 或 Forefront TMG 2010 重設連接至 SMTP 用戶端 SMTP 伺服器關閉其連線到 ISA 伺服器或 Forefront TMG 2010 與 FIN TCP 封包時。這個行為可能造成一些特定的 SMTP 用戶端應用程式報告郵件傳遞失敗即使正確地傳送訊息。在 ISA 記錄,您會看到下列的結果程式碼,此連線:

0x80074e24 FWX_E_CONNECTION_KILLED

原因

根據設計,SMTP 伺服器關閉其連線到 ISA 伺服器或 Forefront TMG 2010 時,會重設 SMTP 用戶端的連線。這是因為 ISA Server 或 Forefront TMG 2010 無法檢查 SMTP結束命令的 SMTP 流量時已加密的流量。不過,這種行為可能會造成特定的 SMTP 用戶端應用程式報告錯誤。

解決方案

Hotfix 就可以避免不正確的錯誤報告。此 hotfix 會允許變更以便 ISA Server 會返回至 SMTP 用戶端,而不是 [重設封包 FIN TCP 封包的 SMTP 伺服器關閉 TCP 連線與 FIN TCP 封包時的預設行為。若要安裝此 hotfix 之後,請變更預設行為,您必須執行 ISA Server 電腦上的指令碼。若要套用此 hotfix,請依照下列步驟執行:

  1. 下載並安裝 hotfix 套件所提及下列 「 Microsoft 知識庫 」 文件:

    ISA Server 2006 的 hotfix 套件959357描述: 2008 年 10 月 29 日附註: 如果您執行 Forefront TMG 2010,複製到 [記事本] 檔案的步驟 2 中的指令碼,並儲存它。以較高的權限開啟命令提示字元,然後再執行 [指令碼 (ie: cscript smtp.vbs)。

  2. 啟動 [記事本],然後將下列指令碼複製到 [記事本] 檔案。

    Const SE_VPS_GUID = "{143F5698-103B-12D4-FF34-1F34767DEabc}"Const SE_VPS_NAME = "GracefulPassthroughServerShutdown"Const SE_VPS_VALUE = trueSub SetValue()    ' Create the root obect.    Dim root  ' The FPCLib.FPC root object    Set root = CreateObject("FPC.Root")    'Declare the other objects needed.    Dim array       ' An FPCArray object    Dim VendorSets  ' An FPCVendorParametersSets collection    Dim VendorSet   ' An FPCVendorParametersSet object    ' Get references to the array object    ' and the network rules collection.    Set array = root.GetContainingArray    Set VendorSets = array.VendorParametersSets    On Error Resume Next    Set VendorSet = VendorSets.Item( SE_VPS_GUID )    If Err.Number <> 0 Then        Err.Clear        ' Add the item        Set VendorSet = VendorSets.Add( SE_VPS_GUID )        CheckError        WScript.Echo "New VendorSet added... " & VendorSet.Name    Else        WScript.Echo "Existing VendorSet found... value- " &  VendorSet.Value(SE_VPS_NAME)    End If    if VendorSet.Value(SE_VPS_NAME) <> SE_VPS_VALUE Then        Err.Clear        VendorSet.Value(SE_VPS_NAME) = SE_VPS_VALUE        If Err.Number <> 0 Then            CheckError        Else            VendorSets.Save false, true            CheckError            If Err.Number = 0 Then                WScript.Echo "Done with " & SE_VPS_NAME & ", saved!"            End If        End If    Else        WScript.Echo "Done with " & SE_VPS_NAME & ", no change!"    End IfEnd SubSub CheckError()    If Err.Number <> 0 Then        WScript.Echo "An error occurred: 0x" & Hex(Err.Number) & " " & Err.Description        Err.Clear    End IfEnd SubSetValue
  3. 儲存成 Microsoft Visual Basic 指令碼檔案的檔案,使用.vbs 副檔名。

  4. 連按兩下 [執行指令碼的.vbs 檔案。

注意如果您想要回復預設行為,請變更以下這一行指令碼:

Const SE_VPS_VALUE = true

變更下列這一行:

Const SE_VPS_VALUE = false

然後,重新執行 ISA Server 或 Forefront TMG 電腦上的指令碼。

狀態

Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。

參考

如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:

用來描述 Microsoft 軟體更新標準術語的編號 824684描述

Need more help?

Want more options?

探索訂閱權益、瀏覽訓練課程、瞭解如何保護您的裝置等等。

社群可協助您詢問並回答問題、提供意見反應,以及聆聽來自具有豐富知識的專家意見。