徵狀
請試想下列案例:
-
在 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,請依照下列步驟執行:
-
下載並安裝 hotfix 套件所提及下列 「 Microsoft 知識庫 」 文件:
ISA Server 2006 的 hotfix 套件959357描述: 2008 年 10 月 29 日附註: 如果您執行 Forefront TMG 2010,複製到 [記事本] 檔案的步驟 2 中的指令碼,並儲存它。以較高的權限開啟命令提示字元,然後再執行 [指令碼 (ie: cscript smtp.vbs)。
-
啟動 [記事本],然後將下列指令碼複製到 [記事本] 檔案。
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
-
儲存成 Microsoft Visual Basic 指令碼檔案的檔案,使用.vbs 副檔名。
-
連按兩下 [執行指令碼的.vbs 檔案。
注意如果您想要回復預設行為,請變更以下這一行指令碼:
Const SE_VPS_VALUE = true
變更下列這一行:
Const SE_VPS_VALUE = false
然後,重新執行 ISA Server 或 Forefront TMG 電腦上的指令碼。
狀態
Microsoft 已確認本篇文章<適用於>一節所列之 Microsoft 產品確實有上述問題。
參考
如需有關軟體更新術語的詳細資訊,請按一下下面的文件編號,檢視「Microsoft 知識庫」中的文件:
用來描述 Microsoft 軟體更新標準術語的編號 824684描述