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

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:

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

Sophos: PureMessage for 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)

IIS Kontrolle

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 NETATWORK\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:

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>
				<3>
					<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       : NAWDC002.netatwork.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

ActivesSync 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.

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.

Weitere Links

Keywords:OMA ActiveSync PDA PocketPC PocketOutlook MASSync EAS