When a user syncs a mailbox by using an iOS 6.1 or 6.1.1-based device, Microsoft Exchange Server 2010 Client Access server (CAS) and Mailbox (MBX) server resources are consumed, log growth becomes excessive, excessive growth in Recoverable Items may occur, and memory and CPU use may increase significantly. Server performance is affected.
Additionally, Office 365 Exchange Online users receive an error message that resembles the following on an iOS 6.1 or 6.1.1-based device:
Cannot Get Mail
The connection to the server failed.
The only option available to users is OK.
Additional Symptoms The following additional symptoms can occur.
EAS Mailbox logging When you review an Exchange ActiveSync (EAS) Mailbox log, you may see the following:
RequestHeader : POST /Microsoft-Server-ActiveSync/default.eas?Useremail@example.com&DeviceId=ApplDMPFXZABDFHW&DeviceType=iPad&Cmd=MeetingResponse HTTP/1.1Connection: keep-aliveContent-Length: 55Content-Type: application/vnd.ms-sync.wbxmlAccept: */*Accept-Encoding: gzip, deflateAccept-Language: en-usAuthorization: ********Host: mail.contoso.comUser-Agent: Apple-iPad2C1/1002.141X-MS-PolicyKey: 2429156470MS-ASProtocolVersion: 14.1 RequestBody :<?xml version="1.0" encoding="utf-8" ?><MeetingResponse xmlns="MeetingResponse:"> <Request> <UserResponse>1</UserResponse> <CollectionId>5</CollectionId> <RequestId>5:5</RequestId> <InstanceId>2013-02-06T22:00:00.000Z</InstanceId> </Request></MeetingResponse>MeetingResponseCommand_OnExecute_Exception : Microsoft.Exchange.Data.Storage.WrongObjectTypeException: The object was bound to a wrong object type. ObjectClass = IPM.Schedule.Meeting.Request, Intended Type =Microsoft.Exchange.Data.Storage.CalendarItem. at Microsoft.Exchange.Data.Storage.StoreObject.DownCastStoreObject[T]() at Microsoft.Exchange.Data.Storage.ItemBuilder.ItemBind[T](StoreSession session, StoreIdstoreId, Schema expectedSchema, MapiMessageCreator mapiMessageCreator, ItemBindOptionitemBindOption, ICollection`1 propertiesToLoad) at Microsoft.Exchange.Data.Storage.ItemBuilder.ItemBind[T](StoreSession session, StoreId id,Schema expectedSchema, ICollection`1 propertiesToLoad) at Microsoft.Exchange.Data.Storage.CalendarItem.Bind(StoreSession session, StoreId id) at Microsoft.Exchange.AirSync.MeetingResponseCommand.GetOccurenceId(StoreObjectIdmailboxRequestId, ExDateTime instanceId) at Microsoft.Exchange.AirSync.MeetingResponseCommand.ProcessCommand() at Microsoft.Exchange.AirSync.MeetingResponseCommand.OnExecute()AccessState : AllowedAccessStateReason : GlobalResponseHeader : HTTP/1.1 200 OKMS-Server-ActiveSync: 14.2ResponseBody : <?xml version="1.0" encoding="utf-8" ?><MeetingResponse xmlns="MeetingResponse:"> <Result> <RequestId></RequestId> <Status>4</Status> </Result></MeetingResponse>
IIS Logs In Exchange Server on-premises installations only, the following text is continually repeated in the Internet Information Services (IIS) log files on the CAS.
Apple has also announced the availability of iOS 6.1.2 to address this issue.
To work around this issue for devices that are not updated, do not process Calendar items such as meeting requests on iOS 6.1 or 6.1.1-devices. Also, immediately restart the device.
If the problem continues, use one of the following methods to work around the issue.
Note: The workarounds below have been modified from the original recommendations. Specifically, the recreation of the partnership and the suggested throttling settings for Exchange ActiveSync have been removed. Analysis found they were insufficient to preserve server performance. The current methods reflect the best options.
Method 1: Use URL Rewrite to block Cmd=MeetingResponse
A workaround has been identified that will allow administrators to block the repeating MeetingResponse attempt using either a perimeter device rule or the URL Rewrite Module 2.0 for Internet Information Server 7 and 7.5, for Windows Server 2008 and Windows Server 2008 R2. See the following article from the TechNet Wiki online.
Warning: This solution may not work in some scenarios where a perimeter device, such as some network load balancers, are in use. You should contact the vendor to verify that the solution cannot be implemented on the perimeter device prior to modifying IIS.
Once the URL rewrite is implemented, iOS6.1 and 6.1.1-based devices can sync and receive updates. However, responses to meeting items from the device are rejected by the server. We recommend that users respond to meetings via Outlook Web App (OWA), Microsoft Outlook, or a non-iOS 6.1 or 6.1.1-device.
Method 2: Block iOS 6.1 or 6.1.1 users
You can block iOS 6.1 and 6.1.1 users by using the Exchange Server 2010 Allow/Block/Quarantine feature. For more information about this feature, see the following Exchange Team blog post:
To identify this issue in your organization, you can also use one of the methods in this section. Office365 Exchange Online users can use only the EAS Mailbox logging option and look for repeated instances of the Status 4 response that is noted in the "Symptoms" section.
Method 1: Obtain EAS Mailbox logging for a user
To obtain EAS Mailbox logs, follow the steps in the following article in the Microsoft Knowledge Base:
2461792 How to collect ActiveSync device logs to troubleshoot sync issues between mobile devices and Exchange Online
Method 2: Collect and parse IIS logs
Check for the recurrence pattern of Cmd=Sync and Cmd=MeetingResponse, possibly paired with Error:WrongObjectTypeException, for the iOS 6.1 or 6.1.1 devices. A continuous pattern will indicate that the device user is processing Meeting Requests from the device and encountering the device bug.
SELECT COUNT(*),MyDeviceId AS DeviceId,TheUserId AS UserId,MajAgent,MinAgentUSING EXTRACT_VALUE(cs-uri-query,'DeviceId') AS MyDeviceId,EXTRACT_VALUE(cs-uri-query,'User') AS TheUserId,TO_INT(SUBSTR(SUBSTR(cs(User-Agent),INDEX_OF (cs(User-Agent), '.'),4),1,3)) AS MinAgent,TO_INT(SUBSTR(SUBSTR(cs(User-Agent),INDEX_OF (cs(User-Agent), '/'),5),1,4)) AS MajAgentFROM '[LOGFILEPATH]' WHERE cs-uri-query LIKE '%MeetingResponse%' AND (MajAgent=1002 AND MinAgent<146)GROUP BY DeviceId,UserId,MajAgent,MinAgentORDER BY COUNT(*) DESC