PI Services

Le blog des collaborateurs de PI Services

Exchange 2010 SP1 - Problème de synchronisation ActiveSync sur un iPhone4S

Symptômes

L'iPhone ne peut pas se connecter au serveur de messagerie et l’erreur suivante se produit sur le terminal mobile.

photo

De plus dans les logs IIS sur le serveur CAS Exchange 2010 on peut voir que la requête HTTP arrive bien sur le serveur et que son code de retour est bon (code HTTP 200). Néanmoins l’erreur suivante est visible dans la colonne cs-uri-query du log IIS :

Error:DeviceNotProvisioned”.

Cause

Dans notre exemple le problème de synchronisation n’était pas dû à une configuration Exchange 2010 mais à l’héritage des autorisations dans l’annuaire Active Directory qui était désactivée sur le compte utilisateur.

Cette désactivation était engendrée dans notre cas à cause de l’appartenance du compte utilisateur au groupe “Account Operators” qui est l’un des groupes protégé par le mécanisme AdminSDHolder.

Pour mémoire ce mécanisme a pour but de contrôler les ACL appliquées sur les objets (comptes utilisateurs, comptes ordinateurs…) membres des groupes protégés.

La liste des groupes protégés par le mécanisme AdminSDHolder dans les différentes version de Windows (de Windows 2000 Server à Windows Server 2008 R2) est disponible sur le site de Microsoft à l’adresse suivante :

http://technet.microsoft.com/en-us/query/ee361593

Remarque : Dans notre cas le téléphone touché était un iPhone 4S. Cependant ce problème étant dû à une configuration au niveau du compte Active Directory tout autre téléphone pourrait en être victime.

Résolution

Pour résoudre ce problème il faut se connecter à l’ADUC (Console “Utilisateurs et ordinateurs Active Directory”), puis dans les propriétés de l’utilisateur concerné choisir “Security”, “Advanced” puis cocher la case “Include inheritable permissions from this object’s parent”.

 s-mail-01p - Connexion Bureau à distance

Suite à cette manipulation la synchronisation initiale de l’iPhone fonctionnera ainsi que toutes les synchronisations ultérieures.

Il est intéressant de noter que le mécanisme AdminSDHolder re-modifiera automatiquement les ACL (et donc re-désactivera l’héritage des autorisations) dans un délai d’une heure maximum (en effet le processus s’exécute toutes les 60 minutes par défaut).

Exchange 2003 - Obtenir des statistiques ActiveSync à l’aide des cmdlets PowerShell d’Exchange 2010

Contexte et problématique

Exchange Server 2007 et Exchange 2010 intègrent des commandes PowerShell permettant d’obtenir rapidement des statistiques d’utilisation autour d’ActiveSync.

Ca n’est malheureusement pas le cas d’Exchange Server 2003 qui n’apporte que peu d’outils pour répondre à ce besoin (l’outil MobileAdmin permet de visualiser les périphériques ActiveSync associés à un utilisateur mais il n’est pas conçu pour effectuer des extractions en masse).

Avec Exchange 2007 / 2010, les commandes suivantes sont disponibles :

  • Get-ActiveSyncDevice
  • Get-ActiveSyncDeviceStatistics
  • Export-ActiveSyncLog

Les deux premières commandes récupèrent de manière dynamique les informations sur les partenariats ActiveSync à partir de l’annuaire ActiveDirectory alors que la commande Export-ActiveSyncLog récupère des résultats sur les accès en analysant les logs IIS.

Remarque : La suite de billet est axée sur l’usage de la commande Export-ActiveSyncLog. Pour obtenir plus d’informations sur l’usage de la commande Get-ActiveSyncDeviceStatistics, vous pouvez consulter les deux liens suivants :

Méthode proposée

Même si la commande Export-ActiveSyncLog intégrée à Exchange Server 2010 a été conçue pour fonctionner avec des logs IIS version 7.0 (Windows Server 2008 SP2) et version 7.5 (Windows Server 2008 R2), celle-ci fonctionne également avec les logs de IIS 6.0 (Windows Server 2003).

En effet, par défaut le format de log utilisé est le format W3C qui est un format standard et identiques entre IIS 6.0 et 7.0 / 7.5 (à une colonne près !).

L’avantage de cette méthode est qu’elle ne nécessite pas le déploiement de serveurs Exchange 2010 sur l’environnement de production pour fonctionner !

En effet il est tout à fait possible d’extraire les fichiers de logs présents sur les serveurs Exchange 2003 de production pour aller ensuite les analyser avec la commande PowerShell sur un serveur Exchange 2010 de test / maquettage ou bien sur un environnement de pré-production.

Sur un environnement comportant des serveurs frontaux et dorsaux la méthodologie à suivre est la suivante :

1-) Récupération de l’ensemble des fichiers de logs IIS présent dans les répertoires “C:\Windows\System32\LogFiles” de chacun des serveurs frontaux
2-) Copie de ces fichiers dans un partage réseau ou sur un clé USB
3-) Analyse de ces fichiers avec la commande Export-ActiveSyncLog sur un serveur Exchange 2010 de test

Fonctionnement de la commande Export-ActiveSyncLog

La commande Export-ActiveSyncLog prend en entrée un ou plusieurs fichiers de logs et génère automatiquement un ensemble de fichiers CSV contenant des statistiques sur les utilisateurs connectés à ActiveSync, le type de Pocket PC, le volume de connexion sur chaque tranche horaire de la semaine, etc.

Voici la liste des fichiers CSV générés en sortie par la commande :

image

Les deux tableaux ci-dessous sont des exemples de fichiers CSV générés sur un environnement de maquette à partir de logs IIS Exchange 2003 :

image

Dans le CSV « Users », nous obtenons la liste des utilisateurs ayant utilisé un ou plusieurs périphériques ActiveSync ainsi que le type de périphérique et le nombre de connexions reçues.

image

Dans le CSV « UserAgent », nous obtenons des détails sur les versions de téléphones utilisées (iPhone3C1 par exemple) ainsi que le nombre d’unités référencé pour chaque version.

Afin d’analyser en une seule fois l’ensemble des logs présent dans un répertoire, une commande proche de celle-ci doit être saisie :

Dir C:\TEMP\PROD\*.log | Export-ActiveSyncLog –OutputPath C:\TEMP\CSV –StartDate:”2011/05/01” –EndDate:”2011/05/31

Les paramètres “StartDate” et “EndDate” permettent de limiter les résultats sur une période de temps données.

Cela est très pratique car l’objectif est ici d’obtenir des statistiques “terrain” pour savoir quels types de périphériques sont actuellement en usage dans la société. Dans la majorité des cas la génération de statistiques sur une période de 15 jours à 2 mois sera largement suffisante (on peut en effet considérer qu’un périphérique disposant d’un partenariat ActiveSync et qui ne s’est pas connecté depuis plus de 2 mois n’est plus en cours d’utilisation).

Exchange 2010 sp1 – Statistiques ActiveSync avec IPhone

Dans le système de messagerie Microsoft Exchange (depuis Exchange 2007 SP1 jusqu’à aujourd’hui), il est possible de lancer des commandes Powershell permettant d’obtenir des statistiques sur les synchronisations avec des appareils mobiles (Windows Mobiles, Iphone, Etc. …), avec la commande “Get-ActiveSyncDeviceStatistics”.

Aujourd’hui, la liste de téléphones, PDAs Phone, Smartphones, Tablettes graphiques, et autres permettant de synchroniser sa ou ses boite(s) aux lettres ne cesse d’augmenter.

Une des particularités des appareils apple-logo_thumb3 concerne les différents modèles et le fameux IOS avec ses mises à jour successives. Du coup, lors de l’exécution de cette fameuse commande, les résultats peuvent apparaitre avec une liste non exhaustive d’appareils alors que l’utilisateur final n’en possède qu’un seul, le tout lié à ses différentes mises à jour successives.

image_thumb8

Dans cet exemple, on peut voir que cet utilisateur possède :

  • 1 IPhone 3GS
  • 3 IPhones de base, donc version 2
  • 1 HTC

 Triste Alors qu’il utilise un IPhone 3GS….. Triste 

Il est alors possible coder un script Powershell avec un tableau de comparaison prenant en compte les modèles d’appareils ainsi que les différentes versions de Firmwares.

Exemple :

image

Dans ce script, la commande “$devices = Get-ActiveSyncDeviceStatistics -Mailbox $mailbox.samaccountname | Select-Object DeviceType,DevicePolicyApplied, LastSuccessSync,DeviceUserAgent” va être complémentée par le tableau suivant :

switch ($device.DeviceUserAgent)
    {
    "Apple-iPhone/701.341" {$DeviceUserAgent = "iPhone"}
    "Apple-iPhone/703.144" {$DeviceUserAgent = "iPhone"}
    "Apple-iPad/702.367" {$DeviceUserAgent = "iPad"}
    "Apple-iPod2C1/801.293" {$DeviceUserAgent = "iPod"}
    "Apple-iPod3C1/801.293" {$DeviceUserAgent = "iPod"}
    "Apple-iPhone1C2/801.293" {$DeviceUserAgent = "iPhone 3G"}
    "Apple-iPhone2C1/801.293" {$DeviceUserAgent = "iPhone 3GS"}
    "Apple-iPhone3C1/801.293" {$DeviceUserAgent = "iPhone 4"}
    "Apple-iPhone/508.11" {$DeviceUserAgent = "iPhone"}
    "Apple-iPhone/701.400" {$DeviceUserAgent = "iPhone"}
    "Apple-iPhone/704.11" {$DeviceUserAgent = "iPhone"}
    "Apple-iPhone/705.18" {$DeviceUserAgent = "iPhone"}
    "Apple-iPod2C1/801.306" {$DeviceUserAgent = "iPod"}
    "Apple-iPod3C1/801.306" {$DeviceUserAgent = "iPod"}
    "Apple-iPhone1C2/801.306" {$DeviceUserAgent = "iPhone 3G"}
    "Apple-iPhone2C1/801.306" {$DeviceUserAgent = "iPhone 3GS"}
    "Apple-iPhone2C1/801.400" {$DeviceUserAgent = "iPhone 3GS"}
    "Apple-iPhone3C1/801.306" {$DeviceUserAgent = "iPhone 4"}
    default {$DeviceUserAgent = $device.DeviceUserAgent}
    }

où les différents modèles sont accompagnés des différentes versions d’IOS. En parallèle, ce tableau sert aussi d’extracteur de modèle en fonction des différentes versions d’agent qui ne sont pas vraiment lisibles. Par contre, ce tableau demandera d’être complémenté au fil de l’eau selon les différentes évolutions publiées par Apple.

De même, un IPhone “Jailbreaké” (la signification littérale vient de l'anglais et veut dire "Sortir de Prison", cela consiste simplement à modifier le système de l'iPhone afin de le rendre plus accessible et d'en retirer certaines limitations...) vous remontera de fausse informations… ici un IPhone 3G “ouvert” interprété comme un IPhone2… Triste

image_thumb7

Du coup, on peut rapidement s’y perdre !!!

Dans le script en exemple, des restrictions dans les dates de synchronisation ont été implémentées afin de ne prendre en compte que le dernier mois ou les 30 derniers jours. Ce qui permettra de filtrer les retours et d’être un peu plus pertinent sur ces statistiques ! Sourire

 

N'hésitez pas à laisser un commentaire si ce tips vous a été utile ou bien si vous avez des éléments à ajouter !…