diff --git a/Cargo.lock b/Cargo.lock index ba09fa28..a3813a9f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -964,6 +964,8 @@ dependencies = [ [[package]] name = "calcard" version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "388f40e77acf8ad26d4ac7120bd24fb08e671f38858f401887714cdc102ec9f4" dependencies = [ "ahash", "chrono", diff --git a/README.md b/README.md index a17ed11a..2f470c5b 100644 --- a/README.md +++ b/README.md @@ -53,10 +53,18 @@ Key features: * Distributed virtual queues with delayed delivery, priority delivery, quotas, routing rules and throttling support. * Envelope rewriting and message modification. - **Collaboration** server: - - Calendaring with [CalDAV](https://datatracker.ietf.org/doc/html/rfc4791), [CalDAV Scheduling](https://datatracker.ietf.org/doc/html/rfc6638) and e-mail alarms support. - - Contact management with [CardDAV](https://datatracker.ietf.org/doc/html/rfc6352) support. - - File storage with [WebDAV](https://datatracker.ietf.org/doc/html/rfc4918) support. - - Sharing with [WebDAV ACL](https://datatracker.ietf.org/doc/html/rfc3744) support for fine-grained access control. + - Calendaring and scheduling: + - [CalDAV](https://datatracker.ietf.org/doc/html/rfc4791) and [CalDAV Scheduling](https://datatracker.ietf.org/doc/html/rfc6638) support. + - [JMAP for Calendars](https://datatracker.ietf.org/doc/html/draft-ietf-jmap-calendars-24) support. + - Contact management: + - [CardDAV](https://datatracker.ietf.org/doc/html/rfc6352) support. + - [JMAP for Contacts](https://datatracker.ietf.org/doc/html/rfc9610) support. + - File storage: + - [WebDAV](https://datatracker.ietf.org/doc/html/rfc4918) support. + - [JMAP for File Storage](https://datatracker.ietf.org/doc/html/draft-ietf-jmap-filenode-02) support. + - Sharing with fine-grained access controls: + - [WebDAV ACL](https://datatracker.ietf.org/doc/html/rfc3744) support. + - [JMAP Sharing](https://datatracker.ietf.org/doc/html/rfc9670) support. - **Spam** and **Phishing** built-in filter: - Comprehensive set of filtering **rules** on par with popular solutions. - LLM-driven spam filtering and message analysis. @@ -135,22 +143,13 @@ All documentation is available at [stalw.art/docs](https://stalw.art/docs/instal If you are having problems running Stalwart, you found a bug or just have a question, do not hesitate to reach us on [GitHub Discussions](https://github.com/stalwartlabs/stalwart/discussions), [Reddit](https://www.reddit.com/r/stalwartlabs) or [Discord](https://discord.com/servers/stalwart-923615863037390889). Additionally you may purchase an [Enterprise License](https://stalw.art/enterprise) to obtain priority support from Stalwart Labs LLC. -## Sponsorship - -Your support is crucial in helping us continue to improve the project, add new features, and maintain the highest level of quality. By [becoming a sponsor](https://opencollective.com/stalwart), you help fund the development and future of Stalwart. As a thank-you, sponsors who contribute $5 per month or more will automatically receive a [Enterprise edition](https://stalw.art/enterprise/) license. And, sponsors who contribute $30 per month or more, also have access to [Premium Support](https://stalw.art/support) from Stalwart Labs. - -These are some of our open-source sponsors: - -User avatar: James BrumondUser avatar: MailRoute, Inc.User avatar: Starsong GmbHUser avatar: Ming Fu Design Ltd. 明孚設計有限公司User avatar: TaminoUser avatar: panascais - -
If you would like to support our work, please consider [becoming a sponsor](https://opencollective.com/stalwart). - ## Roadmap -- [ ] JMAP for Calendars, Contacts and File Storage support -- [ ] Webmail client +Stalwart has reached an exciting point in its journey, it’s now **feature complete**. All the core functionality and open standard email and collaboration protocols that we set out to support are in place. In other words, Stalwart already does everything you’d expect from a modern, standards-compliant mail and collaboration platform. -See the [enhancement requests](https://github.com/stalwartlabs/stalwart/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement) page for a full list of proposed features by the community. +The next major milestone is all about refinement: finalizing the database schema and focusing on performance optimizations to ensure everything runs as efficiently and reliably as possible. Once that’s done, we’ll be ready to roll out version **1.0**. + +Of course, development doesn’t stop there. The community has contributed hundreds of great ideas for improvements and new features, everything from subtle usability tweaks to entirely new integrations. You can see the full list of proposals over on our [GitHub issues](https://github.com/stalwartlabs/stalwart/issues?q=is%3Aissue+is%3Aopen+sort%3Areactions-%2B1-desc+label%3Aenhancement). If there’s something you’d like to see prioritized, just give it a thumbs up as we plan to implement enhancements based on the community’s votes. ## Funding @@ -161,6 +160,16 @@ Part of the development of this project was funded through: If you find the project useful you can help by [becoming a sponsor](https://opencollective.com/stalwart). Thank you! +## Sponsorship + +Your support is crucial in helping us continue to improve the project, add new features, and maintain the highest level of quality. By [becoming a sponsor](https://opencollective.com/stalwart), you help fund the development and future of Stalwart. As a thank-you, sponsors who contribute $5 per month or more will automatically receive a [Enterprise edition](https://stalw.art/enterprise/) license. And, sponsors who contribute $30 per month or more, also have access to [Premium Support](https://stalw.art/support) from Stalwart Labs. + +These are some of our open-source sponsors: + +User avatar: James BrumondUser avatar: MailRoute, Inc.User avatar: JAMflow CloudUser avatar: Starsong GmbHUser avatar: Ming Fu Design Ltd. 明孚設計有限公司User avatar: TaminoUser avatar: panascais + +
If you would like to support our work, please consider [becoming a sponsor](https://opencollective.com/stalwart). + ## License This project is dual-licensed under the **GNU Affero General Public License v3.0** (AGPL-3.0; as published by the Free Software Foundation) and the **Stalwart Enterprise License v1 (SELv1)**: diff --git a/crates/common/Cargo.toml b/crates/common/Cargo.toml index 5bfdb106..25fe2ac7 100644 --- a/crates/common/Cargo.toml +++ b/crates/common/Cargo.toml @@ -21,7 +21,7 @@ mail-auth = { version = "0.7.1" } mail-send = { version = "0.5", default-features = false, features = ["cram-md5", "ring", "tls12"] } smtp-proto = { version = "0.2", features = ["rkyv"] } dns-update = { version = "0.1.5" } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } ahash = { version = "0.8.2", features = ["serde"] } parking_lot = "0.12.1" regex = "1.7.0" diff --git a/crates/dav-proto/Cargo.toml b/crates/dav-proto/Cargo.toml index 85d1103e..6f8859ab 100644 --- a/crates/dav-proto/Cargo.toml +++ b/crates/dav-proto/Cargo.toml @@ -8,7 +8,7 @@ trc = { path = "../trc" } types = { path = "../types" } hashify = "0.2.6" quick-xml = { version = "0.38" } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } hyper = "1.6.0" rkyv = { version = "0.8.10", features = ["little_endian"] } @@ -16,7 +16,7 @@ chrono = { version = "0.4.40", features = ["serde"], optional = true } compact_str = "0.9.0" [dev-dependencies] -calcard = { path = "/Users/me/code/calcard", features = ["serde", "rkyv"] } +calcard = { version = "0.3.0", features = ["serde", "rkyv"] } types = { path = "../types", features = ["test_mode"] } serde = { version = "1.0.217", features = ["derive"] } serde_json = "1.0.138" diff --git a/crates/dav/Cargo.toml b/crates/dav/Cargo.toml index bbc8a91c..4a47880d 100644 --- a/crates/dav/Cargo.toml +++ b/crates/dav/Cargo.toml @@ -14,7 +14,7 @@ directory = { path = "../directory" } http_proto = { path = "../http-proto" } types = { path = "../types" } trc = { path = "../trc" } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } hashify = { version = "0.2" } hyper = { version = "1.0.1", features = ["server", "http1", "http2"] } percent-encoding = "2.3.1" diff --git a/crates/groupware/Cargo.toml b/crates/groupware/Cargo.toml index b5e658a8..cbeb5f6e 100644 --- a/crates/groupware/Cargo.toml +++ b/crates/groupware/Cargo.toml @@ -12,7 +12,7 @@ types = { path = "../types" } trc = { path = "../trc" } nlp = { path = "../nlp" } directory = { path = "../directory" } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } hashify = "0.2" tokio = { version = "1.47", features = ["net", "macros"] } rkyv = { version = "0.8.10", features = ["little_endian"] } diff --git a/crates/jmap-proto/Cargo.toml b/crates/jmap-proto/Cargo.toml index 3c60e4df..763e633e 100644 --- a/crates/jmap-proto/Cargo.toml +++ b/crates/jmap-proto/Cargo.toml @@ -10,7 +10,7 @@ utils = { path = "../utils" } types = { path = "../types" } trc = { path = "../trc" } jmap-tools = { version = "0.1" } -calcard = { path = "/Users/me/code/calcard" } +calcard = { version = "0.3.0" } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } serde = { version = "1.0", features = ["derive"]} ahash = { version = "0.8.2", features = ["serde"] } diff --git a/crates/jmap/Cargo.toml b/crates/jmap/Cargo.toml index e16ce611..861ad324 100644 --- a/crates/jmap/Cargo.toml +++ b/crates/jmap/Cargo.toml @@ -19,7 +19,7 @@ trc = { path = "../trc" } spam-filter = { path = "../spam-filter" } email = { path = "../email" } groupware = { path = "../groupware" } -calcard = { path = "/Users/me/code/calcard" } +calcard = { version = "0.3.0" } smtp-proto = { version = "0.2" } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } mail-builder = { version = "0.4" } diff --git a/crates/migration/Cargo.toml b/crates/migration/Cargo.toml index caafba0b..fd34243a 100644 --- a/crates/migration/Cargo.toml +++ b/crates/migration/Cargo.toml @@ -19,7 +19,7 @@ dav-proto = { path = "../dav-proto" } mail-parser = { version = "0.11", features = ["full_encoding"] } mail-auth = { version = "0.7.1", features = ["rkyv"] } sieve-rs = { version = "0.7", features = ["rkyv"] } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } tokio = { version = "1.47", features = ["net", "macros"] } serde = { version = "1.0", features = ["derive"]} serde_json = "1.0" diff --git a/crates/services/Cargo.toml b/crates/services/Cargo.toml index 575195f3..932f1f17 100644 --- a/crates/services/Cargo.toml +++ b/crates/services/Cargo.toml @@ -19,7 +19,7 @@ smtp-proto = { version = "0.2", features = ["rkyv", "serde"] } tokio = { version = "1.47", features = ["rt"] } mail-parser = { version = "0.11", features = ["full_encoding", "rkyv"] } mail-builder = { version = "0.4" } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } chrono = { version = "0.4", features = ["unstable-locales"] } serde = { version = "1.0", features = ["derive"]} serde_json = "1.0" diff --git a/tests/Cargo.toml b/tests/Cargo.toml index 0f2cb33a..bf13d18e 100644 --- a/tests/Cargo.toml +++ b/tests/Cargo.toml @@ -30,7 +30,7 @@ imap_proto = { path = "../crates/imap-proto" } types = { path = "../crates/types" } dav = { path = "../crates/dav", features = ["test_mode"] } dav-proto = { path = "../crates/dav-proto", features = ["test_mode"] } -calcard = { path = "/Users/me/code/calcard", features = ["rkyv"] } +calcard = { version = "0.3.0", features = ["rkyv"] } groupware = { path = "../crates/groupware", features = ["test_mode"] } http = { path = "../crates/http", features = ["test_mode", "enterprise"] } http_proto = { path = "../crates/http-proto" }