PHPackages                             horde/activesync - PHPackages - PHPackages  [Skip to content](#main-content)[PHPackages](/)[Directory](/)[Categories](/categories)[Trending](/trending)[Leaderboard](/leaderboard)[Changelog](/changelog)[Analyze](/analyze)[Collections](/collections)[Log in](/login)[Sign up](/register)

1. [Directory](/)
2. /
3. [Utility &amp; Helpers](/categories/utility)
4. /
5. horde/activesync

ActiveHorde-library[Utility &amp; Helpers](/categories/utility)

horde/activesync
================

ActiveSync server library

v3.2.0(3w ago)61.7k7[5 issues](https://github.com/horde/ActiveSync/issues)[4 PRs](https://github.com/horde/ActiveSync/pulls)4GPL-2.0-onlyPHPPHP ^7.4 || ^8CI failing

Since Oct 15Pushed 2w ago6 watchersCompare

[ Source](https://github.com/horde/ActiveSync)[ Packagist](https://packagist.org/packages/horde/activesync)[ Docs](https://www.horde.org/libraries/Horde_ActiveSync)[ RSS](/packages/horde-activesync/feed)WikiDiscussions FRAMEWORK\_6\_0 Synced 1w ago

READMEChangelog (10)Dependencies (92)Versions (207)Used By (4)

Horde ActiveSync
================

[](#horde-activesync)

PHP library implementing the Microsoft Exchange ActiveSync (EAS) protocol, versions **2.5 through 16.1**. It decodes WBXML requests from mobile clients, drives synchronization through a pluggable backend driver, and encodes WBXML responses — including streamed `Sync` response delivery for clients with hard read timeouts.

In a typical Horde deployment, this package is the **protocol engine**. The **data backend** lives in `horde/core` as `Horde_Core_ActiveSync_Driver`, which talks to IMAP (mail), Kronolith (calendar), Turba (contacts), Nag (tasks), and Mnemo (notes). The library itself has no Horde application dependencies at runtime and can be embedded with a custom driver.

Documentation
-------------

[](#documentation)

The documentation is split by audience:

You are…You want to…Read**Administrator / end user**Enable ActiveSync, configure protocol versions, streaming, logging, the web server endpoint, and per-user policy[`doc/configuration.md`](doc/configuration.md)**Library user / integrator**Embed the library in your own product: server object, driver API, state backends, custom backends[`doc/integration.md`](doc/integration.md)**ActiveSync developer**Understand the internals: components, request lifecycle, Sync anatomy, state machine, tests[`doc/architecture.md`](doc/architecture.md)Cross-cutting references, useful to all three:

TopicReadSupported EAS protocol versions, negotiation, and what each version adds[`doc/protocol-versions.md`](doc/protocol-versions.md)Streamed `Sync` response delivery — design, error model, tuning[`doc/sync-streaming.md`](doc/sync-streaming.md)Heartbeat polling and export performance — batched STATUS, read-only state loads, bulk export[`doc/sync-performance.md`](doc/sync-performance.md)Open work and the Horde 6 roadmap[`doc/todo.md`](doc/todo.md)At a glance
-----------

[](#at-a-glance)

```
Mobile client (Outlook, iOS Mail, Gmail, …)
        │  HTTPS POST, WBXML body
        ▼
Web server  →  /Microsoft-Server-ActiveSync  (rewritten to Horde rpc.php)
        │
        ▼
Horde_Rpc_ActiveSync                (horde/rpc)
        │
        ▼
Horde_ActiveSync                    ← this library
  ├── Request handlers (Sync, FolderSync, Ping, …)
  ├── Message classes (Appointment, Mail, Contact, …)
  ├── WBXML encoder/decoder
  └── Horde_ActiveSync_Driver_Base  (abstract backend API)
        │
        ▼
Horde_Core_ActiveSync_Driver        (horde/core, in a Horde deployment)
  └── Horde_Core_ActiveSync_Connector → Horde apps / IMAP

```

### Protocol versions

[](#protocol-versions)

All EAS versions from 2.5 to 16.1 are implemented and production-supported. Clients negotiate down to the server's advertised ceiling; the ceiling is configurable globally, per user, and per device. Details, the version negotiation mechanics, and a per-version feature delta are in [`doc/protocol-versions.md`](doc/protocol-versions.md).

VersionNotes2.5Baseline; reduced command set (no `Settings`, `ItemOperations`, `Find`)12.0 / 12.1`AirSyncBase` bodies, provisioning 2, empty/hanging Sync, SyncCache14.0 / 14.1Conversations, reply/forward state, rights management, body parts16.0Calendar instance model, drafts sync, `Find`, `AirSyncBase:Location`16.1Meeting time proposals, account-only remote wipe### Feature highlights

[](#feature-highlights)

- **Mail:** folder &amp; message sync, flags, drafts (incl. EAS 16 draft editing/sending), send/reply/forward, attachments, meeting requests, mailbox `Find` with KQL parsing, GAL search
- **Calendar:** full recurrence + exceptions, attendees, meeting responses, EAS 16 instance model, meeting time proposals (16.1)
- **Contacts / Tasks / Notes:** full CRUD sync incl. task recurrence
- **Device management:** provisioning &amp; policies, remote wipe (full and account-only), per-device protocol ceilings, per-device logging
- **State:** SQL (default) or MongoDB backends, sync-key/modseq change tracking, `Ping` long-poll, `SyncCache`
- **Delivery:** optional streamed `Sync` responses (chunked HTTP) with deferred up-sync import and WBXML keep-alives, so clients with ~30 s read timeouts survive large batches — see [`doc/sync-streaming.md`](doc/sync-streaming.md)
- **Efficiency:** heartbeat polling batches all mailbox status checks into one IMAP round trip and reuses memoized, lock-free state reads; message export prefetches email items in batches — see [`doc/sync-performance.md`](doc/sync-performance.md)

Package layout
--------------

[](#package-layout)

```
lib/Horde/ActiveSync.php          Server class and protocol constants
lib/Horde/ActiveSync/
  Request/                        EAS command handlers
  Message/                        Item type WBXML mappings
  State/                          Sync state persistence (SQL, Mongo)
  Wbxml/                          Encoder, decoder, code pages
  Imap/                           IMAP-to-EAS message building
  Find/                           EAS 16.0 Find command helpers
  Driver/                         Base, Mock backends
migration/                        SQL schema for state tables
doc/                              Documentation (see index above)
test/unit/                        PHPUnit tests

```

License
-------

[](#license)

GPL-2.0-only. See [LICENSE](LICENSE).

References
----------

[](#references)

- [Microsoft Exchange ActiveSync protocol docs](https://learn.microsoft.com/en-us/openspecs/exchange_server_protocols/ms-ascntc30)
- [Horde ActiveSync wiki](http://wiki.horde.org/ActiveSync)

###  Health Score

59

—

FairBetter than 98% of packages

Maintenance80

Actively maintained with recent releases

Popularity28

Limited adoption so far

Community38

Small or concentrated contributor base

Maturity83

Battle-tested with a long release history

 Bus Factor1

Top contributor holds 86.8% of commits — single point of failure

How is this calculated?**Maintenance (25%)** — Last commit recency, latest release date, and issue-to-star ratio. Uses a 2-year decay window.

**Popularity (30%)** — Total and monthly downloads, GitHub stars, and forks. Logarithmic scaling prevents top-heavy scores.

**Community (15%)** — Contributors, dependents, forks, watchers, and maintainers. Measures real ecosystem engagement.

**Maturity (30%)** — Project age, version count, PHP version support, and release stability.

###  Release Activity

Cadence

Every ~31 days

Recently: every ~6 days

Total

150

Last Release

25d ago

Major Versions

2.41.5 → 3.0.0alpha22021-02-24

2.41.6 → v3.0.0alpha42022-05-18

2.41.9 → v3.0.0alpha62026-03-07

PHP version history (6 changes)2.8.5PHP &gt;=5.3.0

2.15.0PHP &gt;=5.3.0,&lt;=6.0.0alpha1

2.30.4PHP &gt;=5.3.0,&lt;=8.0.0alpha1

2.38.3PHP ^5.3 || ^7

3.0.0alpha2PHP ^7

v3.0.0alpha4PHP ^7.4 || ^8

### Community

Maintainers

![](https://www.gravatar.com/avatar/c943a083635c28520599075eaea7ede2d743b7697b76e84d6bdc37e52cc8249b?d=identicon)[yunosh](/maintainers/yunosh)

![](https://www.gravatar.com/avatar/c931cd02664859360478593450d6c473a05bb12b209dfacfc534cd13257cc7ef?d=identicon)[ralflang](/maintainers/ralflang)

![](https://www.gravatar.com/avatar/e4f6c6771993db2ed500959b42353f6cf6a2ca0406d9617f7ae680f4504faa4a?d=identicon)[horde](/maintainers/horde)

![](https://www.gravatar.com/avatar/a7767adb66b45f2f05bcd44d49bc4e67efacd9ce05b161ce2d481d5dd6af025c?d=identicon)[mrubinsk](/maintainers/mrubinsk)

![](https://www.gravatar.com/avatar/816e2b926f25f8cd2939054c7a7173011b4303d690e25ab61bf33cf8c7cf71ae?d=identicon)[tdannhauer](/maintainers/tdannhauer)

---

Top Contributors

[![mrubinsk](https://avatars.githubusercontent.com/u/66822?v=4)](https://github.com/mrubinsk "mrubinsk (3989 commits)")[![yunosh](https://avatars.githubusercontent.com/u/379318?v=4)](https://github.com/yunosh "yunosh (282 commits)")[![TDannhauer](https://avatars.githubusercontent.com/u/6716033?v=4)](https://github.com/TDannhauer "TDannhauer (165 commits)")[![ralflang](https://avatars.githubusercontent.com/u/646976?v=4)](https://github.com/ralflang "ralflang (72 commits)")[![slusarz](https://avatars.githubusercontent.com/u/381003?v=4)](https://github.com/slusarz "slusarz (41 commits)")[![amulet1](https://avatars.githubusercontent.com/u/18431541?v=4)](https://github.com/amulet1 "amulet1 (12 commits)")[![thomasjfox](https://avatars.githubusercontent.com/u/1146758?v=4)](https://github.com/thomasjfox "thomasjfox (11 commits)")[![Copilot](https://avatars.githubusercontent.com/in/1143301?v=4)](https://github.com/Copilot "Copilot (7 commits)")[![wrobel](https://avatars.githubusercontent.com/u/10232?v=4)](https://github.com/wrobel "wrobel (6 commits)")[![midahp](https://avatars.githubusercontent.com/u/19747890?v=4)](https://github.com/midahp "midahp (3 commits)")[![renan](https://avatars.githubusercontent.com/u/28046?v=4)](https://github.com/renan "renan (2 commits)")[![powercycle](https://avatars.githubusercontent.com/u/2614846?v=4)](https://github.com/powercycle "powercycle (1 commits)")[![Bullja](https://avatars.githubusercontent.com/u/3464071?v=4)](https://github.com/Bullja "Bullja (1 commits)")[![cheese1](https://avatars.githubusercontent.com/u/6437726?v=4)](https://github.com/cheese1 "cheese1 (1 commits)")[![martament](https://avatars.githubusercontent.com/u/38855494?v=4)](https://github.com/martament "martament (1 commits)")[![aluxnimm](https://avatars.githubusercontent.com/u/12834530?v=4)](https://github.com/aluxnimm "aluxnimm (1 commits)")

---

Tags

exchangesynccontactsoutlookeas

### Embed Badge

![Health badge](/badges/horde-activesync/health.svg)

```
[![Health](https://phpackages.com/badges/horde-activesync/health.svg)](https://phpackages.com/packages/horde-activesync)
```

###  Alternatives

[horde/imp

Webmail application

261.5k](/packages/horde-imp)[horde/kronolith

Calendar and scheduling application

101.9k6](/packages/horde-kronolith)[horde/horde

Horde base application

593.7k80](/packages/horde-horde)[horde/imap_client

IMAP client library

277.3k25](/packages/horde-imap-client)

PHPackages © 2026

[Directory](/)[Categories](/categories)[Trending](/trending)[Changelog](/changelog)[Analyze](/analyze)
