JMAP and IMAP server designed to be secure, fast, robust and scalable.
Deploy this app to Linode with a free $100 credit!
Stalwart JMAP is an open-source JSON Meta Application Protocol server designed to be secure, fast, robust and scalable. JMAP is a modern protocol for synchronising data such as mail, calendars, or contacts that makes much more efficient use of network resources.
Key features:
Install Stalwart JMAP on your server by following the instructions for your platform:
You may also compile Stalwart JMAP from the source.
If you are having problems running Stalwart JMAP, you found a bug or just have a question, do not hesitate to reach us on Github Discussions, Reddit or Discord. Additionally you may become a sponsor to obtain priority support from Stalwart Labs Ltd.
Table of Contents
The following major features and enhancements are planned for Stalwart JMAP:
The base tests perform basic testing on different functions across the Stalwart JMAP code base. To run the base test suite execute:
cargo test --all
The database test suite performs a range of tests on the embedded key-value store such as:
To run the database test suite execute:
cargo test store_tests -- --ignored
The core test suite performs authorization, authentication and JMAP protocol compliance tests such as:
To run the core test suite execute:
cargo test jmap_core_tests -- --ignored
The mail test suite performs e-mail and JMAP Mail protocol compliance tests such as:
Email/*
functionality and compliance.Mailbox/*
functionality and compliance.Thread/*
functionality and compliance.EmailSubmission/*
functionality and compliance.SearchSnippet/get
functionality and compliance.VacationResponse/*
functionality and compliance.To run the mail test suite execute:
cargo test jmap_mail_tests -- --ignored
The stress test suite generates concurrent random insert, get, query, update and delete operations on different JMAP datatypes to ensure data integrity. To run the stress test suite execute:
cargo test jmap_stress_tests -- --ignored
Another way of stress testing Stalwart JMAP is by using the IMAP stress test tool.
The cluster test suite starts a Stalwart JMAP cluster consisting of five nodes and performs the following tests:
To run the cluster test suite execute:
cargo test cluster_tests -- --ignored
The cluster fuzz test suite starts a Stalwart JMAP cluster consisting of five nodes and attempts to corrupt the cluster state and/or its data by randomly performing the following operations:
Please note that this test runs on a loop and does not stop unless a leader fails to be elected or a data corruption problem is found. If something goes wrong while running the tests, all the actions that were executed up to that point will be printed to screen as a JSON structure. This JSON dump can be later used to reproduce and eventually debug the problem.
To run the cluster fuzz test suite execute:
cargo test cluster_fuzz -- --ignored
Support for Jepsen testing is planned and in the roadmap. Until then, the clustering module will remain in beta.
Compliance with the JMAP protocol may also be tested using Fastmail's JMAP-TestSuite:
git clone https://github.com/stalwartlabs/jmap-test-suite.git
cd jmap-test-suite/
cpanm --installdeps .
JMAP_SERVER_ADAPTER_FILE=eg/stalwart.json perl -I<PATH_TO_PERL_LIB> -I lib t/basic.t
To fuzz Stalwart JMAP server with cargo-fuzz
execute:
$ cargo +nightly fuzz run jmap_server
Licensed under the terms of the GNU Affero General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. See LICENSE for more details.
You can be released from the requirements of the AGPLv3 license by purchasing a commercial license. Please contact licensing@stalw.art for more details.
Copyright (C) 2020-2022, Stalwart Labs Ltd.
Please login to review this project.
No reviews for this project yet.
Comments (0)
Please login to join the discussion on this project.