Known ActiveSync Issues Most entries here describe client bugs, protocol limitations, or deployment misconfiguration -- not Horde application defects. When in doubt, enable per-device ActiveSync logging and check the web server access log before assuming a server bug. See also ActiveSync (setup, Autodiscover, troubleshooting) and ActiveSync Feature Grid (what Horde supports by EAS version). Deployment and Autodiscover These are the most common operator issues mistaken for Horde bugs. Autodiscover fails despite Horde working on the mail host Autodiscover is keyed off the email domain (user@example.com -> example.com), not necessarily the hostname where Horde lives (mail.example.com). If autodiscover.example.com or example.com points at a vhost without rpc.php routing, the client receives 404 and setup fails. Other frequent causes: - Rewrite rules are case-sensitive -- iOS sends /Autodiscover/Autodiscover.xml (lowercase d in the middle). Rules must use [NC] or equivalent. - A non-Horde vhost includes ActiveSync rewrites to /horde/rpc.php that does not exist in that docroot, which blocks RedirectMatch rules that should send traffic to the real Horde host. - Missing routing for Autodiscover v2 JSON (GET .../autodiscover.json/...) -- a 404 here is normal; clients fall back to v1 XML. v1 must return 401 without credentials when routing is correct. See the Autodiscover section on ActiveSync and verify with curl (401 on POST .../autodiscover.xml = routing OK). Autodiscover not supported or implemented incorrectly on the client Not all devices support Autodiscover; some send broken requests (e.g. older Android builds passing the full email address as the HTTP Basic username without XML body). Horde works around several of these where possible. If Autodiscover still fails, configure the account manually -- usually only the server hostname and credentials beyond the email address. General synchronization NOTICE: «Previous request processing for synckey ... failed to be accepted by the client» This appears in the Horde log when a client re-sends a request with a SyncKey the server has already advanced. The client either never received the prior response or rejected it. The library removes the stale state and retries. If this is occasional and sync works, it is normal. Frequent repetition usually means network problems, proxy timeouts, or a buggy client stuck in a loop -- check reverse-proxy Ping timeouts and per-device logs. Outlook 2013: «This folder hasn't yet been updated» Outlook 2013 over EAS may show This folder hasn't yet been updated, connection attempt even when sync is fine. Often caused by the Outlook Mail Notifier add-in (OutlookChangeNotifierAddIn.dll from Apple Mobile Device Support). Disabling that add-in resolves it. Provisioning loops Some clients enter a loop when provisioning is required but mishandle policy key updates (historically certain iOS 4.3 builds). If a device cannot complete setup when provisioning is Force, try Allow or None for testing, or use per-user permissions to exempt the account. Client throttle after repeated KEYMISMATCH / state resets Broken clients that ignore server state resets may loop until the server escalates to KEYMISMATCH or errors. Horde 6 includes guards for some loop types (e.g. FOLDERSYNC_REQUIRED spam); persistent loops are still ultimately a client or provisioning issue -- remove device state in admin UI and re-pair after fixing the underlying cause. Improved in Horde 6 (may no longer apply) If you are on an older Horde release, these may still bite you; on Horde 6 / ActiveSync 3.x they are largely addressed:
$servers['advanced']['capability_ignore'] = ['BINARY'];
Calendar
Yearly recurrence by day-of-year
EAS does not support «every X years on day N of the year» (1-365/366). Only same calendar date yearly, or nth-weekday-of-month patterns, are defined. Horde maps unsupported patterns to «once every X years» without correct day-of-year placement.
Recurring event exceptions on iOS
Historically iOS 6.x-7.x mishandled exceptions (using internal GUIDs, corrupting series). Modern iOS negotiating EAS 16.0+ with Horde 6 uses the instance model and is greatly improved, but edge cases remain -- especially on series with many exceptions or cross-timezone all-day events. See Apple and Microsoft discussions: Apple thread, MS KB 2563324.
Truncated event descriptions on iOS
iOS may sync a truncated calendar body and later send that truncated text back on edit, overwriting the full description on the server. EAS 16.0 defines ItemOperations fetches for calendar bodies, but clients must request them -- iOS has not reliably done so as of recent testing. Avoid editing long descriptions on device when truncation is suspected.
Meeting invitations and COUNTER proposals
EAS 16.1 propose-new-time (METHOD=COUNTER) requires clients that negotiate >= 16.1. Older clients only support accept/decline/tentative without counter proposals.
Contacts
Contact photo removed after edit on iOS
Some iOS versions send an empty Picture element when a contact is edited, clearing the photo in Turba. Reported around iOS 6-9; behaviour has regressed in some later versions. Workaround: re-add photo from the web UI or avoid editing photo-bearing contacts on device.
Horde skips picture updates when iOS sends no Picture tag and the client does not advertise incremental contact updates (ghosted support).
Birthdays offset by one or more days
ActiveSync does not standardise the time-of-day for birthday fields. Clients send midnight UTC, local midnight, or other variants. Horde adjusts by detected client where possible (Horde_ActiveSync_Device birthday handling); mismatches can still appear on uncommon clients or after iOS/Android updates.
Tasks
Outlook Regenerate=1 not supported
Outlook may send Regenerate=1 on recurring tasks (regenerate next instance after completion). Horde/Nag use completions[] and fixed RRULE semantics -- regenerated due dates are not implemented. Completed instances sync; regenerated series behaviour on Outlook may diverge.
Protocol / server limitations (not client bugs)