This commit is contained in:
mdecimus
2026-02-14 18:55:56 +00:00
parent 9595d86ca8
commit b2a808911f
34 changed files with 454 additions and 303 deletions

View File

@@ -1,28 +0,0 @@
name: Generate Sponsors README
on:
workflow_dispatch:
schedule:
- cron: 30 15 * * 0-6
permissions:
contents: write
jobs:
deploy:
if: github.event_name != 'schedule' || !github.event.repository.fork
runs-on: ubuntu-latest
steps:
- name: Checkout 🛎️
uses: actions/checkout@v6.0.1
- name: Generate Sponsors 💖
uses: JamesIves/github-sponsors-readme-action@v1
with:
token: ${{ secrets.SPONSORS_PAT }}
file: 'README.md'
minimum: 2500
organization: true
- name: Deploy to GitHub Pages 🚀
uses: JamesIves/github-pages-deploy-action@v4
with:
branch: main
folder: '.'

View File

@@ -2,6 +2,24 @@
All notable changes to this project will be documented in this file. This project adheres to [Semantic Versioning](http://semver.org/).
## [0.15.5] - 2026-02-14
If you are upgrading from v0.14.x and below, this version includes **multiple breaking changes**. Please read the [upgrading documentation](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_15.md) for more information on how to upgrade from previous versions.
If you are upgrading from v0.15.x, replace the binary and update the webadmin.
## Added
## Changed
## Fixed
- IMAP/JMAP: OOM when `mail-parser` returns cyclical MIME structures.
- Tracing: Fix tracing indexing when using separate stores.
- JMAP: Fix `upToId` computation in `*/queryChanges`.
- JMAP: Include createdIds when the property is present.
- JMAP: Respect query arguments in `Email/queryChanges`.
- JMAP: Return the correct container/item change id when there are no changes.
## [0.15.4] - 2026-01-19
If you are upgrading from v0.14.x and below, this version includes **multiple breaking changes**. Please read the [upgrading documentation](https://github.com/stalwartlabs/stalwart/blob/main/UPGRADING/v0_15.md) for more information on how to upgrade from previous versions.

633
Cargo.lock generated

File diff suppressed because it is too large Load Diff

View File

@@ -155,11 +155,7 @@ Of course, development doesnt stop there. The community has contributed hundr
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:
<!-- sponsors --><a href="https://github.com/kbjr"><img src="https:&#x2F;&#x2F;github.com&#x2F;kbjr.png" width="60px" alt="User avatar: James Brumond" /></a><a href="https://github.com/MailRoute"><img src="https:&#x2F;&#x2F;github.com&#x2F;MailRoute.png" width="60px" alt="User avatar: MailRoute, Inc." /></a><a href="https://github.com/starsong-consulting"><img src="https:&#x2F;&#x2F;github.com&#x2F;starsong-consulting.png" width="60px" alt="User avatar: Starsong GmbH" /></a><a href="https://github.com/mingfu-design"><img src="https:&#x2F;&#x2F;github.com&#x2F;mingfu-design.png" width="60px" alt="User avatar: Ming Fu Design Ltd. 明孚設計有限公司" /></a><a href="https://github.com/tamwuff"><img src="https:&#x2F;&#x2F;github.com&#x2F;tamwuff.png" width="60px" alt="User avatar: Tamino" /></a><a href="https://github.com/panascais"><img src="https:&#x2F;&#x2F;github.com&#x2F;panascais.png" width="60px" alt="User avatar: panascais" /></a><a href="https://github.com/JanAxelJonsson"><img src="https:&#x2F;&#x2F;github.com&#x2F;JanAxelJonsson.png" width="60px" alt="User avatar: Jan Jonsson" /></a><!-- sponsors -->
<br/>If you would like to support our work, please consider [becoming a sponsor](https://opencollective.com/stalwart).
<br/>If you would like to support our open source work, please consider [becoming a sponsor](https://opencollective.com/stalwart).
## Funding

View File

@@ -5,7 +5,7 @@ authors = ["Stalwart Labs LLC <hello@stalw.art>"]
license = "AGPL-3.0-only OR LicenseRef-SEL"
repository = "https://github.com/stalwartlabs/cli"
homepage = "https://github.com/stalwartlabs/cli"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
readme = "README.md"

View File

@@ -1,6 +1,6 @@
[package]
name = "common"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
build = "build.rs"

View File

@@ -1,6 +1,6 @@
[package]
name = "dav-proto"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "dav"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "directory"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "email"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "groupware"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "http_proto"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "http"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "imap_proto"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "imap"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -865,6 +865,10 @@ impl AsImapDataItem for ArchivedMessageMetadata {
let nested_message = self.message_id(*nested_message_id);
part.set_envelope(nested_message.envelope());
if let Some(root_part) = root_part {
if stack.len() == 10_000 {
debug_assert!(false, "Too much nesting in message metadata");
return root_part;
}
stack.push((root_part, parts, (message, message_id).into()));
}
root_part = part.into();
@@ -875,6 +879,10 @@ impl AsImapDataItem for ArchivedMessageMetadata {
}
ArchivedMetadataPartType::Multipart(subparts) => {
if let Some(root_part) = root_part {
if stack.len() == 10_000 {
debug_assert!(false, "Too much nesting in message metadata");
return root_part;
}
stack.push((root_part, parts, None));
}
root_part = part.into();

View File

@@ -1,6 +1,6 @@
[package]
name = "jmap_proto"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "jmap"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -128,6 +128,10 @@ impl ToBodyPart for Vec<MessagePart<'_>> {
subparts.push(values);
if let Some(multipart) = multipart {
if parts_stack.len() == 10_000 {
debug_assert!(false, "Too much nesting in message metadata");
return Value::Null;
}
let multipart = multipart.clone();
parts_stack.push((
parts,
@@ -258,6 +262,10 @@ impl ToBodyPart for ArchivedMessageMetadataContents {
subparts.push(values);
if let Some(multipart) = multipart {
if parts_stack.len() == 10_000 {
debug_assert!(false, "Too much nesting in message metadata");
return Value::Null;
}
let multipart = multipart
.iter()
.map(|id| u16::from(id) as u32)

View File

@@ -7,7 +7,7 @@ homepage = "https://stalw.art"
keywords = ["imap", "jmap", "smtp", "email", "mail", "webdav", "server"]
categories = ["email"]
license = "AGPL-3.0-only OR LicenseRef-SEL"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[[bin]]

View File

@@ -1,6 +1,6 @@
[package]
name = "managesieve"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "migration"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "nlp"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "pop3"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "services"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -7,7 +7,7 @@ homepage = "https://stalw.art/smtp"
keywords = ["smtp", "email", "mail", "server"]
categories = ["email"]
license = "AGPL-3.0-only OR LicenseRef-SEL"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "spam-filter"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "store"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "trc"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "event_macro"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "types"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "utils"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[dependencies]

View File

@@ -1,6 +1,6 @@
[package]
name = "proc_macros"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[lib]

View File

@@ -1,6 +1,6 @@
[package]
name = "tests"
version = "0.15.4"
version = "0.15.5"
edition = "2024"
[features]