La connexion NSPI à un contrôleur de domaine basé sur Windows provoque l'échec des applications client MAPI et renvoie un message d'erreur « MAPI_E_LOGON_FAILED »

S’applique à : Windows Server 2012 R2 DatacenterWindows Server 2012 R2 StandardWindows Server 2012 R2 Essentials

Important Cet article contient des informations sur la façon de modifier le registre. Assurez-vous de sauvegarder le registre avant de le modifier. Assurez-vous que vous savez comment restaurer le registre en cas de problème. Pour plus d'informations sur la façon de sauvegarder, restaurer et modifier le registre, cliquez sur le numéro d'article suivant pour afficher l'article dans la base de connaissances Microsoft:
322756 Comment sauvegarder et restaurer le Registre dans Windows

Symptômes


Une connexion D'interface de fournisseur de services nominaux (NSPI) d'un client MAPI à un contrôleur de domaine basé sur la version 2008 de Windows Server ou plus tard basée sur la version peut échouer et renvoyer le message d'erreur suivant à partir du serveur :
MAPI_E_LOGON_FAILED
Dans certains cas, une boîte de dialogue d'identification peut apparaître dans l'interface utilisateur client MAPI lorsque vous rencontrez ce problème. Les clients concernés sont Microsoft Outlook, Quest Migration Manager for Exchange et BlackBerry Enterprise Server.

Cause


Ce problème se produit parce que Windows Server 2008 et les versions ultérieures permettent un maximum par défaut de seulement 50 connexions NSPI simultanées par utilisateur. Les connexions NSPI supplémentaires sont rejetées et un message d'erreur MAPI_E_LOGON_FAILED est retourné.Remarque Windows Server 2003 et les versions antérieures des systèmes d'exploitation Microsoft Windows ne présentent pas ce comportement. Le changement de comportement dans Windows Server 2008 et les versions ultérieures est destiné à protéger les contrôleurs de domaine contre les clients qui ouvrent trop de connexions NSPI sans ensuite fermer les connexions. Trop de connexions comme celles-ci peuvent entraîner l'épuisement des ressources.

Résolution


Pour résoudre ce problème, vérifiez toutes les connexions NSPI qui traitent sur le client pour les fuites de connexion. Par exemple, un appel à la fonction NspiBind doit avoir un appel correspondant à la fonction NspiUnbind lorsqu'une connexion NSPI n'est plus requise. Cette opération peut exiger que vous déboguez tous les scripts ou applications personnalisés qui utilisent NSPI. Si ce problème affecte les applications externes, contactez les éditeurs de logiciels pour obtenir des mises à jour.Remarque Le fournisseur Outlook NSPI MAPI installé avec Microsoft Outlook est destiné à être utilisé uniquement avec Microsoft Outlook. Les scripts externes et les applications qui s'appuient sur le fournisseur Outlook NSPI MAPI ne sont pas pris en charge.

Comment modifier le registre pour permettre d'autres connexions NSPI

AvertissementDes problèmes graves peuvent se produire si vous modifiez le registre de manière incorrecte en utilisant l'éditeur de registre ou en utilisant une autre méthode. Ces problèmes peuvent nécessiter que vous réinstallez le système d'exploitation. Microsoft ne peut pas garantir que ces problèmes peuvent être résolus. Modifiez le registre à vos risques et périls.Si des connexions NSPI plus simultanées par utilisateur sont légitimement requises, vous pouvez modifier la limite par défaut. Pour ce faire, suivez les étapes suivantes :
  1. Cliquez sur Démarrer, sur Exécuter, tapez regedit, puis cliquez sur OK.
  2. Recherchez la sous-clé de Registre suivante et cliquez dessus :
    HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS
  3. Cliquez à droite sur la clé Paramètres.
  4. Dans le menu popup, sélectionnez Nouveau, puis cliquez sur DWORD Value.
  5. Tapez des sessions max NSPI par utilisateur, puis appuyez sur Entrez.
  6. Double-cliquez sur les sessions Maximales NSPI par utilisateur, tapez le nombre maximum de connexions NSPI que vous voulez avoir, puis cliquez sur OK. Remarque Bien que la limite supérieure de ce paramètre soit 0xffffffff (ou 4294967295), une configuration de serveur qui a une valeur supérieure à la valeur par défaut consommera de la mémoire supplémentaire (une nouvelle page par connexion) sur le serveur. Si cette valeur est trop élevée et que trop de connexions sont créées pour chaque instance d'application utilisateur, le serveur s'épuise en mémoire ou devient complètement insensible. La limite de connexion NSPI par défaut inférieure dans Windows Server 2008 était basée sur l'expérience client dans laquelle les systèmes d'exploitation précédents se permettraient d'être submergés par des produits tiers dans ce qui est essentiellement une attaque par déni de service. Vous devez utiliser une approche de bon sens pour augmenter le paramètre de session maximum au-delà de la valeur par défaut. Par exemple, commencez par utiliser la décimale 250 (hex 0x 0x0000FA), puis testez pour voir la mémoire au-dessus de la tête qui est créée et si les erreurs se sont arrêtées. Votre solution à long terme doit être de contacter le fournisseur de votre produit NSPI pour lui demander de changer ce comportement. Une modification de la valeur du registre n'est qu'une paraforce pour fournir un soulagement d'erreur.
  7. Fermez l'Éditeur du Registre.
  8. Redémarrez l'ordinateur ou redémarrez Active Directory Domain Services.

Vous pouvez également le faire en exécuteant la commande suivante dans une fenêtre Prompt de commande avec la permission de l'administrateur :

reg add HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\NTDS\Parameters /v "NSPI max sessions per user" /t REG_DWORD /d 250 /f

 

Informations supplémentaires


Un événement qui ressemble à ce qui suit est enregistré dans le journal des événements des services d'annuaire lorsque ce problème se produit :
Event ID: 2820NSPI max connection limit for the user has reached.You need to do NSPI unbind on old connections before making new connections.Additional DataMax NSPI connections per user: %1User: %2 

Les informations "Utilisateur:" auront le Sid de l'utilisateur. Vous pouvez utiliser "psgetsid" par exemple pour récupérer le nom de logon de l'utilisateur.

Une capture réseau de la défaillance peut contenir des paquets qui ressemblent à ce qui suit.

Source Destination Protocole Informations
ClientIP (en) ServeurIP Nspi Demande NspiBind
ServeurIP ClientIP (en) Nspi Réponse de NspiBind, Statut : MAPI_E_LOGON_FAILED

Références


Pour plus d'informations, voir les articles suivants :
314980 Comment configurer la connexion active d'événements diagnostiques d'annuaire dans Windows Server 2003 et dans Windows 2000 Server