ISA Server 2006 或 Forefront TMG 2010 重設連接至 SMTP 用戶端 SMTP 伺服器關閉 ISA 伺服器的連線時

徵狀

請試想下列案例:

  • 在 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?

Expand your skills
Explore Training
Get new features first
Join Microsoft Insiders

Was this information helpful?

Thank you for your feedback!

Thank you for your feedback! It sounds like it might be helpful to connect you to one of our Office support agents.

×