ISA Server 2006 o Forefront TMG 2010 restablece la conexión al cliente SMTP cuando el servidor SMTP cierra la conexión al servidor ISA

Se aplica a: Forefront Threat Management Gateway 2010 EnterpriseForefront Threat Management Gateway 2010 Standard

Síntomas


Imagine la siguiente situación:
  • En Microsoft Internet Security and Acceleration (ISA) Server 2006 o Forefront TMG 2010, se habilita el filtrado SMTP.
  • Un cliente SMTP se comunica con un servidor SMTP a través de ISA Server 2006 o Forefront TMG 2010.
  • El cliente SMTP utiliza uno de los siguientes verbos en su conversación con el servidor SMTP:
    • TLS
    • STARTTLS
    • X-AnonymousTLS
En este escenario, ISA Server 2006 o Forefront TMG 2010 restablece la conexión al cliente SMTP cuando el servidor SMTP cierra la conexión al servidor ISA o Forefront TMG 2010 con un paquete TCP FIN. Este comportamiento puede producir a algún cliente SMTP específico de aplicaciones informar que no se pudo entregar mensaje aunque los mensajes se envían correctamente. En el registro de ISA, verá el siguiente código de resultado para esta conexión:
0x80074e24 FWX_E_CONNECTION_KILLED

Causa


Por su diseño, se restablece la conexión con el cliente SMTP cuando el servidor SMTP cierra la conexión al servidor ISA o Forefront TMG 2010. Esto es porque el servidor ISA o Forefront TMG 2010 no puede inspeccionar el tráfico SMTP para el comando SMTP QUIT cuando el tráfico está cifrado. Sin embargo, este comportamiento puede producir aplicaciones específicas de cliente SMTP para informar de errores.

Solución


Ahora hay una revisión evitar que los informes de error incorrecto. Esta revisión permite que el comportamiento predeterminado para cambiarse para que ISA Server devuelve un paquete TCP FIN al cliente SMTP en lugar de un paquete de restablecimiento cuando el servidor SMTP cierra la conexión TCP con un paquete TCP FIN. Para cambiar el comportamiento predeterminado después de instalar este hotfix, deberá ejecutar una secuencia de comandos en el equipo servidor ISA. Para aplicar este hotfix, siga estos pasos:
  1. Descargue e instale el paquete de hotfix que se menciona en el siguiente artículo de Microsoft Knowledge Base:
    959357 descripción del paquete de revisiones de ISA Server 2006: 29 de octubre de 2008
    Nota: Si ejecuta Forefront TMG 2010, copie la secuencia de comandos del paso 2 en un archivo de Bloc de notas y guárdelo. Abra el símbolo del sistema con privilegios elevados y, a continuación, ejecute la secuencia de comandos (ie: cscript smtp.vbs).
  2. Inicie el Bloc de notas y, a continuación, copie la siguiente secuencia de comandos en un archivo de Bloc de notas.
    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. Guarde el archivo como un archivo de secuencia de comandos de Microsoft Visual Basic utilizando la extensión de nombre de archivo .vbs.
  4. Haga doble clic en el archivo .vbs para ejecutar la secuencia de comandos.
Nota: Si desea volver al comportamiento predeterminado, cambie la línea siguiente de la secuencia de comandos:
Const SE_VPS_VALUE = true
Cambie esta línea por la siguiente:
Const SE_VPS_VALUE = false
A continuación, vuelva a ejecutar la secuencia de comandos en el equipo servidor ISA o Forefront TMG.

Estado


Microsoft ha confirmado que se trata de un problema de los productos de Microsoft recogidos en la sección "Se aplica a".

Referencias


Para obtener más información acerca de la terminología relativa a las actualizaciones de software de Microsoft, haga clic en el número de artículo siguiente para verlo en Microsoft Knowledge Base:
824684 Descripción de la terminología estándar utilizada para describir las actualizaciones de software de Microsoft