WikiSuite will add support for JMAP via a combination of contributions to Cyrus, Cypht and the IETF standardization process.
On July 14 and 15, 2018, WikiSuite team members were at the July 2018 JMAP IETF Hackathon in Montréal , which was a follow-up to the March 17 and 18, 2018 event, where WikiSuite team members joined Fastmail at the IETF 101 Hackathon to work on JMAP. -> 2018 XMPP, WebRTC and JMAP Hackathons in London
As of 2019, the reference implementation is on ClearOS, but the future production implementation will be using containers.
ClearOS's 7.x's mail server is Cyrus IMAP 2.x This page is to coordinate testing of upcoming Cyrus IMAP 3.x , which brings new features such as CalDAV, CardDAV and JMAP support.
Status
A lot of work is happening on the JMAP spec and associated code. We'll update cyrus.suite.wiki in November or December 2017 January February 2018 before the event to the latest developer snapshot.
Keep informed of JMAP-related work on Cyrus
- issues related to JMAP on Github
- Weekly updates on the Cyrus-devel Mailing list
Code
- https://github.com/cyrusimap/cyrus-imapd (Cyrus)
- https://gitlab.com/clearos/upstream/centos/cyrus-imapd/tree/clear7 (Cyrus 2.x app for ClearOS)
- https://gitlab.com/clearos/clearfoundation/app-smtp (Postfix app for ClearOS)
Commits
JMAP spec
What is new in Cyrus 3.x
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.0.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.1.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.2.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.3.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.4.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.5.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.6.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.7.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.8.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.9.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.10.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.11.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.12.html
- https://www.cyrusimap.org/imap/download/release-notes/3.0/x/3.0.13.html
cyrus.suite.wiki
cyrus.suite.wiki is a shared development and testing server. Once the testing period is over, the server will be deleted so don't store any real data on this server. If you would like server access, please contact Marc Laporte
Urls
You can replace test with your login and follow the pattern below
User management
https://cyrus.suite.wiki:81/app/users (you need root access). And users need to login via IMAP for their account to be properly set up.
CalDAV
https://cyrus.suite.wiki/dav/calendars/user/test
CardDAV
https://cyrus.suite.wiki/dav/addressbooks/user/test/
RSS
https://cyrus.suite.wiki/rss/user/test
IMAP and SMTP
IMAP
port 143
server: cyrus.suite.wiki
username: login (not full email)
SMTP
port: 25?
server: cyrus.suite.wiki
username: login (not full email)
not working for me
IMAPS
SSL
port 993
server: cyrus.suite.wiki
username: login (not full email)
not working for me
SMTPS
SSL
port: 587
server: cyrus.suite.wiki
username: login (not full email)
not working for me
JMAP webmail
Test URLS, automatically logged in, as a different user:
- http://cyrus.suite.wiki:8080/ (test inbox provided by upstream)
- http://cyrus.suite.wiki:8080/user-nikola.html
- http://cyrus.suite.wiki:8080/user-test.html
Old non-working attempt
[+]Confirmation that JMAP is working
[root@cyrus ~]# curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" --user test:wikisuite -d '[["getCalendars", {}, "#1"]]' http://localhost/jmap/ [["calendars",{"accountId":"test","state":"15","list":[{"id":"Default","x-href":"/dav/calendars/user/test/Default","name":"personal","mayReadFreeBusy":true,"mayReadItems":true,"mayAddItems":true,"mayModifyItems":true,"mayRemoveItems":true,"mayRename":true,"mayDelete":true}],"notFound":null},"#1"]] [root@cyrus ~]#
[root@cyrus ~]# curl -X POST -H "Content-Type: application/json" -H "Accept: application/json" --user test:wikisuite -d '[[ "getMailboxes", {}, "#0" ]]' http://localhost/jmap/ [["mailboxes",{"accountId":"test","state":"23","notFound":null,"list":[{"id":"23b8b283-54b2-4953-83b1-dddfdf50d1ab","name":"Inbox","mustBeOnlyMailbox":false,"mayReadItems":true,"mayAddItems":true,"mayRemoveItems":true,"mayCreateChild":true,"totalMessages":1,"unreadMessages":0,"totalThreads":1,"unreadThreads":0,"parentId":null,"mayRename":false,"mayDelete":false,"role":"inbox","sortOrder":1},{"id":"5e8d9e35-76a6-4a54-9bb4-e8625f908670","name":"Drafts","mustBeOnlyMailbox":false,"mayReadItems":true,"mayAddItems":true,"mayRemoveItems":true,"mayCreateChild":true,"totalMessages":1,"unreadMessages":1,"totalThreads":1,"unreadThreads":0,"parentId":null,"mayRename":true,"mayDelete":true,"role":null,"sortOrder":10},{"id":"3334d6fb-f621-4b7b-9634-93eb193023d2","name":"Trash","mustBeOnlyMailbox":false,"mayReadItems":true,"mayAddItems":true,"mayRemoveItems":true,"mayCreateChild":true,"totalMessages":0,"unreadMessages":0,"totalThreads":0,"unreadThreads":0,"parentId":null,"mayRename":true,"mayDelete":true,"role":null,"sortOrder":10}]},"#0"]] [root@cyrus ~]#
Notes for future documentation page
How to install
- Set up MX records
- install the eGloo release package: rpm -Uvh http://mirrors.egloo.ca/egloo/clearos/7.3/stable/x86_64/egloo-release-7-2.noarch.rpm
- This will be simpler in the future
- Then install the IMAP and SMTP apps:
yum --enablerepo=egloo-clearos-devel install app-imap app-smtp
- You will also need to do the following:
- Create the default SSL certificate via the “System - Settings - Certificate Manager” app.
- Create a user with IMAP and SMTP enabled.
- Login via an IMAP client in order to create a mailbox for the user.
Optional: How to install Mail Forwarding on ClearOS
How to use
- The extra features (CalDAV, CardDAV and JMAP) run on port 80 and/or 443, so Cyrus IMAP interferes with web server. On this dev server, we use port 8080 for the JMAP client
- See URLs patterns above
Clients tested
DAVdroid
Automatic detection from email doesn't work but entering username, password and base URL works
Questions
- Is it possible to have a logout feature? (which would make it easier to test with different accounts)
Known bugs / limitations
Accounts created in ClearOS are not reliably setup for CalDAV and CardDAV.
For developers
- https://github.com/cyrusimap/cyrus-imapd/blob/master/docsrc/imap/developer/jmap.rst
- https://www.cyrusimap.org/imap/developer/jmap.html
- https://medium.com/linagora-engineering/you-cant-do-imap-in-the-browser-can-you-208838b0ba17
- http://jmap.io/server.html
- Cyrus release process - switching to odd-even release cycle: "3.1.x releases will only ever be snapshots of the master branch, and should be considered for testing purposes and bleeding-edge features only. We will try to release these snapshots at coherent development points, but there will generally be large breaking changes occurring between releases in this series. At some point in the distant future, the next stable release series will be 3.2, which will aim to include the stabilised versions of the features developed/tested in the 3.1 releases."
- https://github.com/r00tat/cyrup