ISA Server 2006 ou Forefront TMG 2010 réinitialise la connexion sur le client SMTP lorsque le serveur SMTP ferme sa connexion au serveur ISA Server

S’applique à : Forefront Threat Management Gateway 2010 EnterpriseForefront Threat Management Gateway 2010 Standard

Symptômes


Prenons l’exemple du scénario suivant :
  • Dans Microsoft Internet Security et Acceleration (ISA) Server 2006 ou de Forefront TMG 2010, vous activez le filtrage SMTP.
  • Un client SMTP communique avec un serveur SMTP via ISA Server 2006 ou de Forefront TMG 2010.
  • Le client SMTP utilise l’un des verbes suivants dans sa conversation avec le serveur SMTP :
    • TLS
    • STARTTLS
    • X-AnonymousTLS
Dans ce scénario, ISA Server 2006 ou Forefront TMG 2010 réinitialise la connexion sur le client SMTP lorsque le serveur SMTP ferme sa connexion à ISA Server ou Forefront TMG 2010 avec un paquet TCP FIN. Ce comportement peut entraîner certains clients SMTP spécifiques applications signaler l’échec de la remise des messages même si les messages sont correctement envoyés. Dans la journalisation de ISA, vous consultez le code de résultat suivant pour cette connexion :
0x80074e24 FWX_E_CONNECTION_KILLED

Cause


Par conception, la connexion avec le client SMTP est réinitialisée lorsque le serveur SMTP ferme sa connexion à ISA Server ou Forefront TMG 2010. C’est parce que ISA Server ou Forefront TMG 2010 ne peuvent pas inspecter le trafic SMTP pour la commande SMTP QUIT lorsque le trafic est crypté. Toutefois, ce comportement peut entraîner des applications de client SMTP spécifiques pour signaler des erreurs.

Résolution


Un correctif est désormais disponible pour éviter des rapports d’erreur incorrecte. Ce correctif permet le comportement par défaut être modifié afin que le serveur ISA renvoie un paquet TCP FIN au client SMTP au lieu d’un paquet de réinitialisation lorsque le serveur SMTP ferme la connexion TCP avec un paquet TCP FIN. Pour modifier le comportement par défaut après l’installation de ce correctif, vous devez exécuter un script sur l’ordinateur ISA Server. Pour appliquer ce correctif, procédez comme suit :
  1. Téléchargez et puis installer le package de correctif logiciel qui est mentionné dans l’article suivant de la Base de connaissances Microsoft :
    Description de 959357 du package de correctifs ISA Server 2006 : 29 octobre 2008
    Remarque : Si vous exécutez Forefront TMG 2010, copiez le script de l’étape 2, dans un fichier Bloc-notes et enregistrez-le. Ouvrez l’invite de commandes avec privilèges élevés et puis exécuter le script (c'est-à-dire: cscript vient).
  2. Démarrez le bloc-notes, puis copiez le script suivant dans un fichier Bloc-notes.
    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. Enregistrez le fichier sous la forme d’un fichier de script Microsoft Visual Basic à l’aide de l’extension de nom de fichier .vbs.
  4. Double-cliquez sur le fichier .vbs pour exécuter le script.
Remarque Si vous souhaitez rétablir le comportement par défaut, modifiez la ligne suivante du script :
Const SE_VPS_VALUE = true
Remplacez cette ligne par la suivante :
Const SE_VPS_VALUE = false
Ensuite, réexécutez le script sur l’ordinateur ISA Server ou Forefront TMG.

Statut


Microsoft a confirmé l’existence de ce problème dans les produits Microsoft figurant dans la liste des produits concernés par cet article.

Références


Pour plus d’informations sur la terminologie de mise à jour logicielle, cliquez sur le numéro ci-dessous pour afficher l’article correspondant dans la Base de connaissances Microsoft :
824684 Terminologie standard utilisée pour décrire les mises à jour logicielles Microsoft