Exchange ActiveSync Fehlersuche

Siehe auch Mobile Information Server, Outlook Webzugriff 2003, Exchange 2003 - Outlook Mobile Access, Exchange 2003 SP2 und Pushdienste, sowie ActiveSync über Server und ActiveSync über Desktop und Windows Mobile 5 und EAS Inside

Diese Seite stammt aus Exchange 2010 Zeiten aber ist mit leichten Anpassungen auch für neuere Versionen gültig. Statt Get-ActiveSyncDevice heisst der Befehl dann Get-MobileDevice u.a.

Grundlegende Prüfpunkte

Es gibt viele Gründe, warum ActiveSync wider erwarte nicht funktioniert. Schon weiter oben habe ich ja einige Dinge aufgezählt, die so alle schief gehen können. Dann sollten Ihnen folgende Tipps weiter helfen:

  • URL Erreichbar ?
    Um ActiveSync zu nutzen, muss der Exchange Server natürlich per HTTP oder besser noch HTTPS erreichbar sein. Prüfen Sie daher die Erreichbarkeit ihres Exchange Servers aus dem Internet z.B.: über die Eingabe von https://servername.firma.de/Microsoft-Server-ActiveSync in einem Browser.
  • SSL in Ordnung =
    ActiveSync erfordert SSL. Durch den Zugriff mit einem Browser können Sie auf jeden Fall erkennen, dass SSL funktioniert (Das Schloss in der Fußzeile muss geschlossen sein). Kommen hier Fehler (z.B.: nicht vertrauenswürdig, dann müssen Sie das Zertifikat der ausstellenden CA auf dem Client installiere. Machen Sie den Test auch mit dem Pocket Internet Explorer
  • Anmeldung
    Zudem muss ihnen ein Benutzername und Kennwort abverlangt werden. Geben Sie einen gültigen Namen ein.
  • "HTTP/1.1 501 Not Implemented"
    Diese Meldung ist ausnahmsweise in Ordnung, da ihre URL-Anforderung natürlich nicht einem PocketPC entspricht und MASSYNC.DLL damit nichts anfangen kann"
  • Kontrolle im IIS
    Diese Schritte sollten Sie letztlich im IIS als Eintrag im IISLOG sehen (Protokolldatei). Interessant sind Einträge die mit ERR anfangen. So zeigt sich im Exchange ActiveSync Server genau die Fehlermeldung, wenn der Backend Server keine Integrierte Anmeldung unterstützt:
2008-08-16 15:43:22 W3SVC803421 10.0.1.180 POST /Microsoft-Server-ActiveSync/default.eas User=fcarius&DeviceId=xxxx&DeviceType=yyy&
Cmd=Ping&Log=PrxTo:backend.msxfaq.local_Error:NTLM+not+on+the+destination+CAS_ 443 msxfaq\fcarius 192.168.14.126 WinMobile/502.108 401 5 0
  • PocketPC
    Und nun das ganze noch mal mit dem PocketPC durchführen. Solange Sie keinen Zugriff im IIS-Log sehen, kommt der PocketPC noch gar nicht bei ihrem Server an
  • Virenscanner
    Sehr viele Probleme machen tatsächlich Virenscanner auf dem Exchange Server. Einige Hersteller dokumentieren dies öffentlich. Es sind aber fast alle Hersteller in der ein oder anderen Weise betroffen:

Sophos: PureMessage für Windows/Exchange: synchronization with PDAs fails when using ActiveSync
http://www.sophos.com/support/knowledgebase/article/13186.html
"When you synchronize your personal digital assistant (PDA) with your computer, you are unable to download items that you can see in your Outlook folder. This happens because synchronization with PDAs fails when 'Exchange Information Store' scanning is enabled, but no private store scanning options have been selected in the Databases page" 

Zudem sollten Sie die Bedingungen für den Betrieb eines EAS-Servers am Anfang der Seite erneut kontrollieren. Sollte es dann noch nicht gehen, dann prüfen Sie folgende Schritte erneut:

Exchange System Manager (ESM)

Prüfen Sie, ob ActiveSync wirklich aktiviert ist. (Siehe auch Exchange 2003 - Outlook Mobile Access)

  • Exchange System Manager starten
    Globale Einstellungen ganz oben anwählen
  • Eigenschaften von "Mobile Geräte"
  • Sicherstellen, dass die gewünschten Optionen aktiv sind

IIS Kontrolle

  • IIS Dienstmanager starten (Computerverwaltung)
  • öffnen Sie den Container für die Webseiten
  • öffnen Sie die "Default Webseite"
  • Bearbeiten Sie die Eigenschaften des virtuellen Verzeichnis "Microsoft-Server-ActiveSync"
  • Karteikarte: "Virtuelles Verzeichnis". Kontrollieren Sie unter Konfiguration in den Anwendungseinstellungen, dass das Mapping für alle Erweiterungen auf "C:\Program Files\Exchsrvr\bin\massync.dll" (mit den Anführungszeichen !) verweist und die Datei vorhanden ist. Fehlt dieser Link, dann fügen Sie diesen dazu und starten den Webservice neu.
  • Karteikarte: Verzeichnissicherheit - Verschlüsselung
    Kontrollieren Sie, dass SSL nicht erzwungen wird. Wenn es aktiv ist, dann bitte deaktivieren und den Webservice neu starten. Um sicher zu stellen, dass kein Zugriff von außen ohne SSL erfolgt, sollten Sie in ihrer Firewall den Zugriff blockieren.
  • Karteikarte: Verzeichnissicherheit - Autorisierung
    Stellen Sie sicher, dass die "Integrierte Autorisierung" aktiviert ist. Eventuell müssen Sie dies auch anhand des KB-Artikels 215383 HOW TO: Configure IIS to Support Both Kerberos and NTLM direkt in der Metabase kontrollieren

Eventlog Kontrolle

Server ActiveSync schreibt ebenfalls Informationen in das Eventlog, die hinweise auf Fehler liefern können. Die Meldung 3002 zeigt, dass ActiveSync geladen wurde und muss erscheinen. Ansonsten ist MASSYNC nicht korrekt im IIS eingebunden.

Die zweite Meldung zeigt ein Verbindungsversuch als "Administrator" und MASSYNC hat beim Zugriff auf "OWA" eine 409 Fehlermeldung erhalten.

 

IIS-Protokoll

Zuletzt bleibt noch die Kontrolle das IIS-Logfile zu betrachten. Auch dort sind die verschiedenen Zugriffe problemlos zu sehen.

Im IIS-Log kann man zum einen die Anfrage des Clients sehen in der Form

09:57:31 POST /Microsoft-Server-ActiveSync User=fcarius&DeviceId=40279401003030&DeviceType=PocketPC&Cmd=GetItemEstimate 443 200

Und danach die Anfrage der ISAPI-Flter DLL an OWA selbst.

09:57:38 X-MS-ENUMATTS /Exchange/fcarius/Posteingang/Betreff1.EML - 80 MSXFAQ\fcarius 207 0

Fehlt der Eintrag zu"/Microsoft-Server-ActiveSync", dann kommt der Client vermutlich nicht an den IIS. Das kann nun IP-Routing, Firewall, Proxy, IP-Restrictions etc. sein

Fehlt hingegen der zweite Eintrag, dann hat die ISAPI-Filter DLL ein Problem. Sie sind sicher, dass die formbased Authentifizierung abgeschaltet ist oder Sie die Besonderheiten dabei beachtet haben und die DLL auch den IIS erreichen kann (127.0.0.1 bei den IP-Beschränkungen vergessen, wenn genutzt ?).

Beim Einsatz eines Frontend Server können Sie auch mit NETMON die Verbindung zwischen Frontend Server und Backend Server mitschneiden und so erkennen, warum der Zugriff des Frontend Server auf "/Exchange" des Backend Servers nicht funktioniert.

Wenn auch dann noch keine Lösung zu finden ist, dann könnte ein Neuaufbau der IIS-Verzeichnisse helfen. Siehe:

  • EAS Auswertungen
  • 883380 How to reset the default virtual directories für Outlook Web Access in Exchange Server 2003

Exchange 2010 OWA

Seit Exchange 2010 können Sie auch über Outlook Web Access eine "Protokollfunktion" aktivieren

Diese Funktion kann jeder Anwender selbst aktivieren. er sieht dann eine kurze Bestätigungsmeldung

Der Knopf hat dann seine Beschriftung geändert:

Dann sollte der Anwender noch einmal mit dem Mobilgerät einen Abgleich versuchen und danach das Protokoll abrufen. Das Ergebnis findet er im Posteingang

Auch wenn der Anwender selbst mit der angehängten Textdatei nicht viel anfangen kann, so kann er diese doch an einen Support weiter leite, der dann vielleicht die Ergebnisse deuten kann. Sie sehen schon, dass auch hier vieles Richtung "Self-Service" geht, d.h. Anwender können viele Dinge selbst machen. In der angehängten Datei können Sie dann aber auch sehr gut die verschiedenen Requests und Antworten des Servers sehen. Hier ein Beispiel, bei dem eine auf dem Server gelöschte Mail auf dem PDA gelöscht wird. (Gekürzt)

-----------------
 Log Entry: 3
-----------------

RequestTime : 02/11/2011 15:38:59
ServerName : NAWEX001
AssemblyVersion : 14.01.0218.011

Identifier : 66D00BF1

RequestHeader : 
POST /Microsoft-Server-ActiveSync/default.eas?Cmd=Sync&DeviceId=945A0FE90629&DeviceType=WP HTTP/1.1
Content-Type: application/vnd.ms-sync.wbxml
Accept-Language: de
Authorization: ********
Host: owa.netatwork.de
Reverse-Via: NAWTMG
MS-ASProtocolVersion: 14.0
X-MS-PolicyKey: 924415055

RequestBody : 
<?xml version="1.0" encoding="utf-8" ?>
<Sync xmlns="AirSync:">
   <Collections>
      <Collection>
         <SyncKey>459535191</SyncKey>
         <CollectionId>13</CollectionId>
      </Collection>
   </Collections>
   <Partial/>
</Sync>

LogicalRequest : 
<?xml version="1.0" encoding="utf-8" ?>
<Sync xmlns="AirSync:">
   <Collections>
      <Collection>
         <SyncKey>459535191</SyncKey>
         <CollectionId>13</CollectionId>
         <Options>
            <FilterType>4</FilterType>
            <BodyPreference xmlns="AirSyncBase:">
               <Type>1</Type>
               <TrUNCationSize>10240</TrUNCationSize>
               <Preview bytes="2"/>
            </BodyPreference>
            <BodyPreference xmlns="AirSyncBase:">
               <Type>2</Type>
               <TrUNCationSize>20480</TrUNCationSize>
               <Preview bytes="2"/>
            </BodyPreference>
            <Conflict>1</Conflict>
            <MIMESupport>1</MIMESupport>
            <BodyPreference xmlns="AirSyncBase:">
               <Type>4</Type>
               <TrUNCationSize>15360</TrUNCationSize>
               <Preview bytes="2"/>
            </BodyPreference>
         </Options>
      </Collection>
   </Collections>
</Sync>

AccessState : Allowed
AccessStateReason : Global
ResponseHeader : HTTP/1.1 200 OK
MS-Server-ActiveSync: 14.1

ResponseBody : 
<?xml version="1.0" encoding="utf-8" ?>
<Sync xmlns="AirSync:">
   <Collections>
      <Collection>
         <SyncKey>230739665</SyncKey>
         <CollectionId>13</CollectionId>
         <Status>1</Status>
         <Commands>
            <Delete>
               <ServerId>13:10145</ServerId>
            </Delete>
            <Change>
               <ServerId>13:10143</ServerId>
               <ApplicationData>
                  <Read xmlns="Email:">1</Read>
               </ApplicationData>
            </Change>
         </Commands>
      </Collection>
   </Collections>
</Sync>

ResponseTime : 02/11/2011 15:38:59

Wer genau hinschaut, wird sogar einen XML-Defekt sehen. Da steht als öffnendes Tag ein "<3>", welches aber durch ein </Delete> geschlossen wird. Bislang musste mich noch kein solches File im Fehlerfall zur Analyse heranziehen.

ActiveSync und PowerShell

Die neueren Versionen von Exchange enthalten einige ganz nützliche PowerShell Befehle, die bei der Analyse von ActiveSync-Einstellungen genutzt werden können. Ein einfaches "Get-ActiveSyncDevice" listet alle Geräte auf, die sich mit dem Server jemals registriert haben. Hier der Auszug meiner Ausgabe:

[PS] C:> Get-ActiveSyncDevice
FriendlyName            : GT-I8000
DeviceId                : xxxxxxxxxxxxxxxxxxxxxxx
DeviceImei              : xxxxxxxxxxxxxxxxxxxxxxx
DeviceMobileOperator    : T-Mobile D
DeviceOS                : Windows CE 5.2.21876
DeviceOSLanguage        : German
DeviceTelephoneNumber   : **********xxxx
DeviceType              : PocketPC
DeviceUserAgent         : MSFT-PPC/5.2.5072
DeviceModel             : GT-I8000
FirstSyncTime           : 05.02.2010 10:16:47
UserDisplayName         : netatwork.de/Abteilung/Technik/Carius, Frank
DeviceAccessState       : Allowed
DeviceAccessStateReason : Global
DeviceAccessControlRule :
DeviceActiveSyncVersion : 14.0
AdminDisplayName        :
ExchangeVersion         : 0.10 (14.0.100.0)
Name                    : PocketPC§A0591FE6984DCFCBF6A605D
Guid                    : 56f50d2f-c736-46ec-9309-834ceea1c876
ObjectCategory          : netatwork.de/Configuration/Schema/ms-Exch-Active-Sync-Device
ObjectClass             : {top, msExchActiveSyncDevice}
WhenChanged             : 07.02.2010 00:05:32
WhenCreated             : 05.02.2010 10:16:47
WhenChangedUTC          : 06.02.2010 23:05:32
WhenCreatedUTC          : 05.02.2010 09:16:47
OrganizationId          :
OriginatingServer       : DC02.msxfaq.de
IsValid                 : True

Wenn Sie den Befehl mit "FT" verbinden, dann erhalten sie ganz schnell eine Tabelle, z.B.

[PS] C:\>Get-ActiveSyncDevice | ft User*,devicemodel,deviceos -AutoSize 

UserDisplayName                              DeviceModel        DeviceOS
---------------                              -----------        --------
netatwork.de/Abteilung/Technik/XXXXXXXXXXXX  HTC Touch HD T8282 Windows CE 5.2.xxxxxxx
netatwork.de/Abteilung/Technik/YYYYYYYYYYYYY Polaris            Windows CE 5.2.19965
netatwork.de/Abteilung/Technik/Carius, Frank GT-I8000           Windows CE 5.2.21876

ActiveSync Statistics

Etwas tiefer geht der Blick mit "Get-ActiveSyncDeviceStatistics":

[PS] C:\>Get-ActiveSyncDeviceStatistics -Mailbox fcarius

FirstSyncTime                 : 05.02.2010 09:16:47
LastPolicyUpdateTime          : 05.02.2010 09:21:49
LastSyncAttemptTime           : 07.02.2010 21:13:50
LastSuccessSync               : 07.02.2010 21:13:51
DeviceType                    : PocketPC
DeviceID                      : xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DeviceUserAgent               : MSFT-PPC/5.2.5072
DeviceWipeSentTime            :
DeviceWipeRequestTime         :
DeviceWipeAckTime             :
LastPingHeartbeat             :
RecoveryPassword              : ********
DeviceModel                   : GT-I8000
DeviceImei                    : xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
DeviceFriendlyName            : GT-I8000
DeviceOS                      : Windows CE 5.2.21876
DeviceOSLanguage              : German
DevicePhoneNumber             : **********xxxx
MailboxLogReport              :
DeviceEnableOutboundSMS       : True
DeviceMobileOperator          : T-Mobile D
Identity                      : netatwork.de/Abteilung/Technik/Carius, Frank/xxx/xxx
IsRemoteWipeSupported         : True
Status                        : DeviceOk
StatusNote                    :
DeviceAccessState             : Allowed
DeviceAccessStateReason       : Global
DeviceAccessControlRule       :
DevicePolicyApplied           : NAW ActiveSync Policy
DevicePolicyApplicationStatus : AppliedInFull
LastDeviceWipeRequestor       :
DeviceActiveSyncVersion       : 14.0
NumberOfFoldersSynced         : 7
SyncStateUpgradeTime          :

Hier sehen Sie auch, wann das Gerät das letzte Mal sich synchronisiert hat. für einen Helpdesk kann das durchaus interessant sein, diese Daten bei Rückfragen des Anwenders auch vorliegen zu haben. Denkbar wäre hier eine Webseite oder einen Mailagent, welcher diese Daten ermittelt und dem Supporter anzeigt.

Aber auch für die Geschäftsführung ist es durchaus interessant die Geräte zu finden, die schon länger nicht mehr synchronisiert wurden. Es könnte sich dabei ja um ein verlorenes Gerät handelt. Es soll Firmen geben, die z.B.: im Active Directory automatisch die Konten deaktivieren und letztlich löschen, die eine gewisse Zeit sich nicht mehr angemeldet haben. Dazu kann man in der PowerShell schön die Ausgaben auch in Tabellen umsetzen:

Get-Mailbox |%{ 
   Get-ActiveSyncDeviceStatistics -Mailbox $_.distinguishedname } | 
      ConvertTo-Html | Out-File -FilePath c:\easstats.htm

So eine Skript kann problemlos auf einem Server z.B. einmal in der Nacht laufen lassen und die Ausgabe auf einem Webserver als statische Seite bereit stellen. Alternativ könnte man die Skripte sogar "beim Zugriff" z. B. als CGI-Script oder per ASP-Seite ausführen lassen.

Export-ActiveSyncLog

Seit Exchange 2007 SP1 (?) gibt es das Commandlet Export-ActiveSync, welches aber per Kommandozeile angegebene IIS-Logs verarbeitet und mehrere CSV-Dateien mit Zusammenfassungen anlegt. Dies sind:

  • Users.csv
    Übersicht aller Benutzer (einer je Zeile) und deren Aktivität.
  • Servers.csv
    Liste der ActiveSync Server in der Auswertung. Nur relevant, wenn Sie die IISLogs mehrerer Server zusammengefasst auswerten
  • Hourly.csv
    Verteilung der ActiveSync Anfragen über die Woche stundengenau aufgeschlüsselt
  • StatusCodes.csv
    Zusammenfassung der IIS-Statuscodes nach der Menge
  • PolicyCompliance.csv
    Anzahl der Geräte die "compliant" sind und solche, die es nicht sind
  • UserAgents.csv
    Liste aller Endgerätetypen, die im Log ersichtlich waren.

Für eine schnelle Übersicht sind diese Daten sehr gut nutzbar.

Quelle der Daten

Die Daten, die durch die beiden Commandlets ausgelesen werden, kommen aus zwei Stellen. Wer mit ADSIEDIT einen Blick an ein Benutzerkonto wirft, erkennt hier, dass Exchange einige Daten direkt ins Active Directory schreibt. Hier gibt es unter dem Benutzer einen Container "ExchangeActiveSyncDevices", in dem für jede Partnerschaft ein Eintrag existiert:

Schaut man sich so einen Eintrag etwas genauer an, dann kann man durchaus aufschlussreiche Informationen über die Partnerschaft erhalten:

Microsoft Testseite

Unter der URL https://www.testexchangeconnectivity.com/ bietet Microsoft einen webbasierten Test an.

Sie müssen hier allerdings einen Benutzernamen und Kennwort des Testbenutzers ihres Active Directory hinterlegen. Das ist aber nicht schlimm, wenn Sie nach dem erfolgreichen Test das Konto einfach wieder löschen oder zumindest das Kennwort ändern.

Dieser Test ist aktuell eine sehr gute Möglichkeit, die Erreichbarkeit der verschiedenen Dienste von "extern" zu prüfen und im Fehlerfall eine sehr aussagekräftige Information über die Ursache zu erhalten

ActiveSync Tester

Die Firma "AccessMyLan" bietet in ihrem Tools-Bereich ein "ActiveSync Testtool" an, welches anscheinend ein ActiveSync Device simuliert und die verschiedenen Schritte durchgeht.

ActiveSync Tester (773kb)
https://store.accessmylan.com/main/diagnostic-tools?pos=nav
Lauffähig ohne Installation

Nach Eingabe der Anmeldedaten...

Werden eine Reihe von Tests durchgeführt und das Ergebnis angezeigt.

Allerdings kann es nicht mit Proxy-Servern umgehen, die man auf dem Mobilgerät noch einstellen könnte.

Ein anderes ähnliche Programm ist EAS – MD

Weitere Links