Calendar and contacts apps (CalDAV and CardDAV)
Mailocity calendars and contacts sync with the apps already on your phone and computer: Apple Calendar and Contacts (iPhone, iPad, Mac), Thunderbird, DAVx⁵ on Android, GNOME Calendar and Evolution, and others that speak CalDAV (RFC 4791) and CardDAV (RFC 6352). You see the same calendars and contacts as in webmail, and a change in one shows in the other.
Setting up an app
In webmail open Settings; the Mail apps card lists the Calendars (CalDAV) and Contacts (CardDAV) settings, with your username filled in and a Copy button for each value.
- Server: the mail server name shown in the card. Most apps need only this: they find your calendars and contacts from
/.well-known/caldavand/.well-known/carddav, or from the_caldavs._tcpand_carddavs._tcpDNS records of your domain. - Username: your full email address.
- Password: your Mailocity password, or an app password when two-step sign-in is on (the card says which).
- If an app asks for a full address, use Calendars URL or Contacts URL from the card.
On an iPhone: Settings → Calendar → Accounts → Add Account → Other → Add CalDAV Account (and Add CardDAV Account under Contacts), then enter the server, your address and your password.
In Thunderbird: New Calendar → On the Network, enter your address and the server; it finds every calendar. For contacts, New Address Book → Add CardDAV Address Book.
On Android, install DAVx⁵ and choose Login with URL and user name, with the server URL from the card.
What you see
Calendars
- Your own calendars. New ones made in the app are yours and appear in webmail too.
- Your team's calendars, marked "(team)". Members can change events unless a team admin made the calendar read-only. Team owners and admins can also delete them.
- Calendars shared with you, and calendars of mailboxes shared with you, marked with the owner's address. You can change them only when they were shared with you to change. Calendars shared for free and busy only are not listed, because an app would show their events.
Task lists
- Your task lists, as lists of reminders or to-dos (see Tasks). Lists made in the app are task lists in webmail too.
Contacts
- Your address books (Contacts, Collected and any you make).
- The address books of mailboxes shared with you.
- Team directory: everyone on your team, with their name and address. It is read-only and kept up to date automatically.
An event or card saved from an app is kept exactly as the app sent it, so fields Mailocity does not use (such as an app's own notes) come back unchanged. Once it is changed in webmail or over JMAP, apps get the updated version.
Staying in sync
Calendars, task lists and address books support collection synchronization (RFC 6578, sync-collection), with a sync-token and getctag on each: apps fetch only what changed since they last looked, including what was deleted. A token is good for 30 days; an app away longer reads the collection whole again. The team directory has no token and is read whole.
Limits
- Events up to 256 KB and cards up to 64 KB; requests up to 1 MB.
- Up to 100 calendars, 100,000 events, 50 address books and 50,000 contacts for each account.
- One event (with its changed occurrences) for each calendar object, as CalDAV expects.
- Default calendars and the default address book cannot be deleted from an app.
Security
Apps sign in with HTTP Basic over HTTPS, the same way mail apps do, and failed sign-ins count towards the same lockout. Webmail's cookie is not accepted on these addresses, so another website cannot change your calendars through your browser. Each person sees only their own calendar and contacts home, at /dav/<account id>/; shared calendars and books are listed inside it.
For developers
- Principal:
/dav/<account id>/(PROPFIND givescalendar-home-setandaddressbook-home-set). - Calendars:
/dav/<account id>/calendars/<calendar>/, where a calendar is named as it was made over CalDAV (MKCALENDAR or extended MKCOL), or by its JMAP id (K12). Events are<name>.ics, as put, orV<id>.ics. - Address books:
/dav/<account id>/contacts/<book>/(A3, or the name given), cards<name>.vcforC<id>.vcf, and the read-onlydirectory. - Supported: PROPFIND, REPORT (
calendar-query,calendar-multiget,addressbook-query,addressbook-multiget), GET, PUT withIf-MatchandIf-None-Match, DELETE and MKCALENDAR. ETags change whenever an object does. - The same data is in JMAP: see Calendars, Contacts and JMAP.
Invitations from calendar apps
The server sends the invitations for events saved from a calendar app (CalDAV scheduling, RFC 6638), as it does for webmail: add guests in the app and save, and they get an invitation by email; changes send updates, deleting the event sends a cancellation, and answering an invitation in the app sends your reply to the organizer. Apps learn this from the server (calendar-auto-schedule) and stop sending their own copies. An app that marks an event SCHEDULE-AGENT=CLIENT keeps sending its own, and the server sends nothing for that event. Invitations you receive by mail appear in your calendar in every app.
Not yet
- The scheduling inbox and outbox collections (apps see invitations in the calendar itself, and free/busy queries go through JMAP).
- Contact groups.