Frédéric Laubel's Blog

Exchange Server Tips & Tricks

Exchange 2007 et l’OAB : principe et dépannage

Posted by Frédéric Laubel sur avril 15, 2009


INTRODUCTION

Dans cet article je vais présenter le principe de fonctionnement du carnet d’adresses en mode hors connexion, alias l’Offline Address Book, alias l’OAB, et les méthodes pour diagnostiquer et réparer ses dysfonctionnements.

En effet j’ai constaté que beaucoup de problèmes Exchange sont liés au carnet en mode hors connexion. Parmi les symptômes les plus révélateurs d’un problème avec l’OAB, nous pouvons noter :

– Absence de l’OAB pour Outlook 2007 (mais il est bien présent pour Outlook 2003 et antérieur);
– Des utilisateurs créés dans Exchange qui n’apparaissent pas dans Outlook 2007;
– Des demandes permanentes d’authentification dans Outlook 2007 (demande sans arrêt de login);
– Des erreurs 0X8004010F lors du téléchargement de l’OAB dans Outlook.

PRINCIPE DE FONCTIONNEMENT DU CARNET EN MODE HORS CONNEXION (OAB)

Le principe de fonctionnement de l’OAB n’a que peut évolué jusqu’à Exchange 2007 et Outlook 2007.

Avant Exchange 2007 et Outlook 2007

Jusqu’à Exchange 2007 et Outllook 2007 le principe de fonctionnement de l’OAB était simple : Exchange génère l’OAB dans un dossier public et Outlook récupére l’OAB depuis ce dossier public. Il n’y a pas d’autre alternatives possibles, c’est assez basique.

Depuis Exchange 2007 et Outlook 2007

Les choses ont fortement évolués avec Exchange 2007 : il est devenu possible, à condition d’utiliser Outlook 2007, de se passer complètement des dossiers publics pour la gestion de l’OAB : sa distribution se fait en mode Web via IIS. Cela va dans le sens de la « webisation » des services Exchange : la connectivité entre le poste client Outlook et l’infrastructure de messagerie se fait désormais en HTTPS pour l’ensemble des services : Outlook Anywhere, ActiveSync, Free/busy, OAB, OWA. Parmi les avantages de la mise à disposition en mode web de l’OAB, notons un contrôle beaucoup plus fin des points de distribution (de simple URL) et un gain en bande passante (téléchargement via BITS). Notez que la mise à disposition de l’OAB en mode web n’est possible que depuis Exchange 2007 et il est nécessaire de disposer d’Outlook 2007. Les versions antérieurs d’Outlook continueront à se connecter directement sur les dossiers publics.

Je vais traiter en détails du fonctionnement de l’OAB dans une architecture Exchange 2007 et Outlook 2007.

ARCHITECTURE

Commençons par comprendre l’architecture logique pour ensuite allez plus loin dans le fonctionnement.

Schéma logique

Rien de vaut un schéma pour bien comprendre🙂

Le schéma représente le processus logique de génération de l’OAB pour Outlook 2007. Dans cet exemple les postes clients Outlook 2007 appartiennent au même site Active Directory que les serveurs Exchange 2007. Cette précision est importante : En effet dans une architecture où les postes clients se trouvent à l’extérieur de l’organisation Exchange ou dans un site Active Directory différent des serveurs Exchange le processus est sensiblement différent.

oab3

J’ai distingué le processus de génération coté serveur (flux en bleu), du processus de récupération de l’OAB par Outlook 2007 (flux en vert).

Fonctionnement coté serveur

Il y a deux grandes étapes : la génération de l’OAB par le serveur Mailbox, puis la mise à disposition  aux clients de l’OAB par le serveur CAS. Et oui : le serveur responsable de la génération de l’OAB  est différent du serveur responsable de sa mise à disposition. Voyons en détails :

  1. Le service MSExchangeSA est responsable de la génération de l’OAB. Ce service est présent uniquement sur le rôle Mailbox. Il initie la génération de l’OAB, une fois par jour par défaut, via le fichier OABGEN.DLL en mettant les fichiers créés dans un dossier partagé.
  2. Le service MSExchangeFDS est reponsable de la copie de l’OAB depuis le serveur Mailbox vers le serveur CAS, par défaut toutes les 8 heures. Ce service est présent uniquement sur le rôle CAS. Une fois sur le serveur CAS l’OAB est mis dans un dossier WEB partagé. A ce moment L’OAB peut être téléchargé par Outlook 2007.

Allons encore plus loin :
Le service MSExchangeSA (Microsoft Exchange System Attendant) se nomme dans la version française d’Exchange 2007 « Microsoft Exchange – Surveillance du système ». Le binaire (.exe) associé à ce service est MAD.EXE.

Version US :

msexchangesa

Version française :

surveillancesysteme

C’est MAD.EXE qui est responsable de la génération de l’OAB…enfin presque puisque si nous allons encore plus loin dans le détails nous voyons qu’il s’agit un fait d’une .dll gérée par MAD.EXE qui s’occupe spécifiquement de l’OAB :

oabgen

Résumons : Le service MSExchangeSA gère le binaire MAD.EXE qui lui même fait appelle à la .dll OABGEN.DLL pour créer l’OAB sur le serveur Mailbox.

Pour en avoir la certitude lançons des outils d’analyse :
creationoab1

Bingo ! Nous voyons bien que MAD.EXE créé les répertoires qui vont accueillir l’OAB. Le dossier par défaut est  [LettredeLecteur]:\Program Files\Microsoft\Exchange Server\ExchangeOAB. Notez que les fichiers ne sont pas créés directement dans le répertoire cible : ils sont d’abord créés dans un répertoire temporaire qui est C:\Windows\TEMP.

Une fois le processus de création validé dans  C:\Windows\TEMP les fichiers sont copiés dans le dossier qui devient partagé en \\[LeNomduServeur]\ExchangeOAB :

oab22

Une fois ces fichiers partagés le service MSExchangeFDS du serveur CAS peut venir les copier pour les mettre dans son partage WEB. Par défaut le service FDS va copier l’OAB depuis le serveur mailbox toutes les 8 heures. Le service MSExchangeFDS se nomme dans la version française d’Exchange 2007 « Distribution de fichiers Microsoft Exchange ». Le binaire associé est MSExchangeFDS.exe.

Version française :

msexchangefdsfr

Version US :

fdsus

Retournons dans les outils d’analyse pour observer le comportement du service MSExchangeFDS :

2009-04-13_192317

Nous voyons que le binaire MSExchangeFDS.exe va lire le contenu du dossier partagé se trouvant sur le serveur Mailbox. Ici le répertoire partagé du serveur mailbox est celui par défaut : \\[LeNomduServeur]\ExchangeOAB.

Ensuite les fichiers sont bien copiés du serveur mailbox vers le serveur CAS :

fdscopycas

Notez le même comportement que celui observé sur le serveur Mailbox : les fichiers ne sont pas mise à disposition imméditament, mais copiés préalablement dans un répertoire temporaire.

Finalement les fichiers sont copiés dans leur emplacement final, ici dans le répertoire par défaut:  [LettredeLecteur]:\Program Files\Microsoft\Exchange Server\ClientAccess\OAB\[GUID] :

fdsfinal

NB : Point important sur le délais entre une modification de l’OAB (par exemple la création d’une BAL) et le changement effectif dans l’OAB vu par l’utilisateur.

Par défaut le serveur Mailbox génére l’OAB seulement une fois par jour (très tôt le matin). Puis le service MSEXchangeFDS va copier l’OAB toutes les 8 heures. Enfin le client Outlook 2007 va mettre à jour l’OAB. Donc il est tout à fait normal que la création d’une boite aux lettres ne soit pas immédiatement visible dans Outlook ! Évidemment tout ceci est parfaitement modifiable.

Pour modifier le délais de génération de l’OAB sur le serveur Mailbox :

A partir de la console Exchange 2007, allez dans Configuration de l’Organisation / Boite aux lettres / et onglet Carnet d’adresses en mode hors connexion.

2009-04-15_122454

Là il est possible de forçer la mise à jour en choisissant « Mettre à jour », ou de modifier la fréquence de mise à jour en allant sur « Propriétés ».

Pour modifier le délais de copie de l’OAB du serveur Mailbox vers le serveur CAS :

A partir de la console Exchange 2007, allez dans Configuration du serveur / Accès au client / et onglet Distribution du carnet d’adresses en mode hors connexion.

2009-04-15_122857
En allant dans les Propriétés, il est possible de changer la valeur par défaut qui est de 8 heures (480 minutes).

Coexistance entre Outlook 2007 et les versions antérieurs

Dans Configuration de l’Organisation / Boite aux lettres / et onglet Carnet d’adresses en mode hors connexion, allez dans les propriétés de l’OAB, puis sur l’onglet « Distribution ».

Pour les versions d’Outlook antérieur à Outlook 2007 cocher uniquement les cases correspondants à vos versions d’Outlook. Pour permettre la distribution WEB de l’OAB avec Outlook 2007 il faut cocher dans « Points de distribution », « Activer la distribution Web », puis ajouter le serveur CAS qui sera responsable de la mise à disposition de l’OAB :

pointdedistrib

Fonctionnement coté client

Pour avoir connaissance des serveurs Exchange 2007 et connaitres les URL des services WEB, Outlook 2007 se sert d’un nouveau service présent dans Exchange : l’Autodiscover. Sachez seulement que ce service est responsable de la gestion des Services Web dans Exchange 2007, à savoir : la disponibilité, l’autodiscover, ActiveSync, et l’OAB. Ce service est présent uniquement sur le rôle CAS. Voyons comment Outlook 2007 procède pour récupérer l’OAB :

  1. Outlook envoi une requête LDAP sur un contrôleur de domaine pour connaitre les points de connexions du service Autodiscover (SCP). Il existe un SCP par serveur CAS. Le SCP contient des attributs permettant de localiser le service Autodiscover.
  2. Outlook se connecte à l’URL du service Autodiscover donné par l’Active Directory. Si cela ne fonctionne pas il va alors se connecter sur des adresses préconfigurées par défaut (Ex : https://autodiscover.modomaine.com/autodiscover/autodiscover.xml)
  3. Le service Autodiscover renvoi un fichier .xml contenant les URL pour se connecter sur les différents services web : URL de l’OAB, URL du service de disponibilité, etc…
  4. Outlook se connecte en HTTP(s) au partage IIS du serveur CAS pour récupérer l’OAB

Allez allons dans le détails🙂

Outlook 2007 se connecte à l’Active Directory pour récupérer les ponts de connexions (SCP). Le SCP est créé lors de l’installation du rôle CAS. Le rôle du SCP est d’indiquer l’adresse du service Autodiscover pour les clients du domaine Active Directory. Si le poste n’est pas dans l’Active Directory, Outlook utilisera le DNS pour se connecter aux adresses prédéfinies du service Autodiscover (typiquement pour une connexion Outlook Anywhere).

Voyons à quoi ressemble un SCP :

scp23

Notez l’adresse du service Autodiscover qui est une URL en HTTPS qui pointe sur le serveur CAS -> https://%5BNomFQDNduServeurCAS/Autodiscover/Autodiscover.xml.

Une fois les SCP récupérés (dans le cas où il ya plusieurs serveurs CAS et plusieurs sites Active Directory), Outlook à connaissance de l’emplacement du service Autodiscover et il essai de se connecter en HTTP(s). La connexion établie avec le service Autodiscover et celui-ci renvoi à Outlook 2007 un fichier .xml contenant les adresses des différents services WEB. Ce fichier se nomme Autodiscover.xml.

Extrait d’un fichier Autodiscover.xml :

<Protocol>
<ASUrl>https://w2k3ori.xchangeall.local/EWS/Exchange.asmx</ASUrl&gt;
<EwsUrl>https://w2k3ori.xchangeall.local/EWS/Exchange.asmx</EwsUrl&gt;
<OOFUrl>https://w2k3ori.xchangeall.local/EWS/Exchange.asmx</OOFUrl&gt;
<UMUrl>https://w2k3ori.xchangeall.local/UnifiedMessaging/Service.asmx</UMUrl&gt;
<OABUrl>http://w2k3ori.xchangeall.local/OAB/176554e4-8aeb-4a1b-909b-b15525c237e7/</OABUrl&gt;
</Protocol>

Les adresses des différents services WEB sont bien présent : ASUrl pour le service de disponibilté, EWSUrl pour le service Web, OOFUrl pour le service Out Of Office, UMurl pour le service Unified Messaging, et enfin OABUrl pour le service de l’OAB.

Donc pour récupérer l’OAB Outlook 2007 sait maintenant qu’ il doit  se connecter sur http://w2k3ori.xchangeall.local/OAB/176554e4-8aeb-4a1b-909b-b15525c237e7.

Notez que contrairement aux autres adresses, l’URL de l’OAB est en HTTP et non pas en HTTPS. Par défaut Exchange 2007 utilise des certificats auto-signés valables un an. Seulement BITS qui est utilisé pour le téléchargement de l’OAB ne sait pas géré ce type de certificat. Donc par défaut l’URL de l’OAB n’est pas en HTTPS. Il est cependant possible, et même conseillé, d’utiliser le HTTPS à condition de disposer d’un certificat valide (soit par une PKI interne, soit par l’achat d’un certificat public).

Maintenant que vous connaissez le principe de génération de l’OAB et sa mise à disposition des postes Outlook 2007 nous allons voir comment résoudre les problèmes qui peuvent se poser. De part l’architecture il n’est pas difficile de déviner quels sont les problèmes que l’on peut rencontrer : problème de génération sur le serveur mailbox, problème de copie ou de mise à disposition depuis le serveur CAS et enfin problème d’authentification ou de certificats depuis les postes clients.

TROUBLESHOOTING

Je vais vous montrer quelle est la méthodologie à utiliser pour résoudre un problème lié à l’OAB : tout d’abord analyse coté serveur Mailbox, puis du coté du serveur CAS, et enfin depuis le poste client.

Dépannage depuis le serveur Mailbox

Il faut tout d’abord vérifier à la source, donc directement depuis le serveur Mailbox qui est à l’origine de la génération de l’OAB.

Vérification des services

Le premier point à vérifier est de s’assurer que l’ensemble des services Exchange requis sont démarrés. Bien des problèmes sont  simplement du à des services qui ne démarrent pas ! (typiquement suite à l’installation d’un Rollup).

Pour vérifier l’état des services lancer le Shell Exchange et taper : Test-ServiceHealth

tshmbx

La première colonne indique le rôle du serveur, ici un serveur Mailbox, la deuxième colonne indique si les services sont requis, et les deux dernières colonnes indiquent l’état des services. Il ne doit pas y avoir de service dans la colonne « ServiceNorRunning ». Si c’est le cas démarrez le service manuellement : démarrer / éxécuter et taper services.msc.

Vérifier que l’OAB soit correctement généré

Pour s’assurer que le serveur Mailbox arrive à générer correctement l’OAB il faut augmenter le niveau de logging. L’augmentation du niveau de logging permet d’enregistrer dans le journal Application de Windows tout le processus de génération de l’OAB. Ainsi en cas de problème vous n’aurez plus qu’à aller dans le journal Application pour voir d’où vient le problème.

Nous avons vu précédement que le service responsable de la génération est le service MSExchangeSA. C’est donc le niveau de logging de ce service que nous allons augmenter. Ceci se fait soit en mode graphique, soit en ligne de commande.

Je vous conseille fortement d’utiliser le programme Exchange 2007 Diagnostic Logging Tool :

oalgenlog

Le service à cibler est MSExchangeSA\OAL Generator en mettent un niveau de diagnostique à High.

Pour obtenir le même comportement en ligne de commande :

Set-EventLogLevel -Identity « MSExchangeSA\OAL Generator » -Level High

Maintenant en allant dans le journal Application nous voyons le détails des opérations de génération de l’OAB. En cas de problème des évenements en erreurs seront signalés, et dans le détails vous pourrez voir ce qui pose problème.

2009-04-12_153214

Dans le cas présent tout est bon : il n’y pas d’événements en erreurs ou en avertissement.

Vérifier la présence du dossier partagé et des autorisations

Par défaut le serveur Mailbox doit partager le dossier se trouvant dans [LettredeLecteur]:\Program Files\Microsoft\Exchange Server\ExchangeOAB en \\[LeNomduServeur]\ExchangeOAB. Il peut arriver que le partage ne se fasse pas. Dans ce cas il faut créer le partage manuellement et positionner les autorisations.

Les autorisations de partage sont :

  • Exchange Servers : Lecture
  • System : Contrôle Total
  • Administrateurs : Contrôle Total

2009-04-15_1006231

Les autorisations fichiers (ACL) sont :

  • Exchange Servers : Lecture et Exécution
  • System : Contrôle Total
  • Administrateurs : Contrôle Total

2009-04-15_100656

Nous avons fait le tour des actions à mettre en place coté serveur Mailbox. Maintenant il faut s’assurer que tout se déroule correctement sur le serveur CAS.

Dépannage depuis le serveur CAS

Vérification des services

Comme sur le serveur Mailbox le premier point à vérifier est de s’assurer que l’ensemble des services Exchange requis sont démarrés..Il faut donc lancer un Test-ServiceHealth :

servicescas

Dans la cas présent le serveur est à la fois CAS et HUB. Le service à vérifier un particulier est le MSExchangeFDS qui doit être absolument demarré pour pouvoir copier l’OAB du serveur Mailbox. Nous allons d’ailleurs augmenter le niveau de logging de ce service.

Vérifier que le service MSExchangeFDS arrive à copier l’OAB

L’augmentation du niveau de logging permet de s’assurer que rien n’empêche le service MSExchange de copier l’OAB.

fdslog2

Le service à cibler est MSExchangeFDS\FileReplication en mettent un niveau de diagnostique à High.Vous pouvez aussi cibler le service MSExchangeFDS\General.

Pour obtenir le même comportement en ligne de commande :

Set-EventLogLevel -Identity « MSExchangeFDS\FileReplication » -Level High

Set-EventLogLevel -Identity « MSExchangeFDS\General » -Level High

Le résultat :

fdslog

Nous voyons bien que le service MSExchangeFDS est arrivé à copier l’OAB.

Vérifier le partage WEB et les ACL

Une fois copié sur le serveur CAS dans le répertoire [LettredeLecteur]:\Program Files\Microsoft\Exchange Server\ClientAccess\OAB\[GUID], le dossier est partagé par le serveur Web IIS. Il faut s’assurer que ce partage est bien présent.

oabiis1

Le nom du partage est « OAB ». Il est INUTILE de changer les droits ACL du dossier [LettredeLecteur]:\Program Files\Microsoft\Exchange Server\ClientAccess\OAB\[GUID] !! En effet les droits sont positionnés au niveau de l’Active Directory et mis sur le répertoire par le service MSExchangeFDS à chaque recopie. Donc si vous changer les ACL, à la prochaine copie (par défaut toutes les 8 heures) les droits seront redescendus de l’AD. Les Utilisateurs Authentifiés doivent pouvoir télécharger l’OAB.

Vérifions cela en allant dans l’Active Directory :

oabadrights1

Nous avons bien notre groupe Utlisateurs Authentifiés qui à le droit de télécharger l’OAB, ouf !🙂

Il est possible de connaitre la configuration des droits dans l’Active Directory directement depuis une console Shell Exchange. Le script permet de s’assurer que le groupe Utilisateurs Authentifiés possède bien le droit sur l’attribut ‘ms-Exch-Download-OAB » et ‘ListChildren ».

adoaball1

Si vous souhaitre modifier les permissions il faut utiliser la commande Add-Adpermission.

Dépannage depuis Outlook 2007

Le dépannage depuis Outlook 2007 est le plus simple : en effet il existe un test des services intégré dans le produit.

Lancer Outook 2007, puis allez dans la barre des tâches. Effectuer un clic droit sur l’icône Outlook tout en appuyant sur la touche « Ctrl ». La choisir « Tester la configuration automatique de la messagerie… »

2009-04-15_133549

Renseigner le mot de passe et choisir « tester ». L’interêt de ce test est de valider que Outlook 2007 arrive à se connecter au service Autodiscover.

Une fois la connexion au service établie, il est possible de forçer le téléchargement de l’OAB directement depuis Outlook 2007 :

2009-04-15_134205

Voilà ! Vous connaisez les actions à mettre en place pour résoudre 99% des problèmes posés par l’OAB. Cet article ne serait pas complet sans mentionner l’outil d’analyse de l’OAB « OABInteg »  dont vous trouverez le guide d’utilisation sur le site de l’auteur : http://blogs.msdn.com/dgoldman/archive/2005/08/28/oabinteg-and-how-to-use-it-to-troubleshoot-oab-generation-issues.aspx


5 Réponses to “Exchange 2007 et l’OAB : principe et dépannage”

  1. AMghar said

    Bonjour,

    Dans la partie Fonctionnement coté serveur, j’aimerai savoir quel sont les outils utilisés « Pour en avoir la certitude lançons des outils d’analyse » je vous remercie d’avance

    CDT

  2. AMghar said

    Je trouve votre article excellent et merci beaucoup

  3. Merci pour cet article très clair, nous avions un problème de demande de mot de passe sur outlook 2007 après une mise à jour de SBS2008 et j’ai pu résoudre le problème en suivant vos explications.

    Cordialement

    Sylvain GIROD

  4. […] Si vous rencontrez des soucis de mise à dispositions je vous conseille l’excellent article de Frederic Laubel disponible sur le lien suivant : https://laubel.wordpress.com/2009/04/15/exchange-2007-et-loab-principe-et-depannage/ […]

Sorry, the comment form is closed at this time.

 
%d blogueurs aiment cette page :