Import upstream v0.16.22, stripped

Upstream commit: 474dd0229cb20cf513036619781ed97bd8073c3f
Enterprise-only files removed or emptied: 63
Enterprise-only snippets removed: 117 in 50 files
Dangling module declarations removed: 5
Cargo edits turning enterprise off: 14
Verification: clean
Enterprise feature gates left for rebuilt features: 19 in 18 files

Produced by tools/fork/strip.py. The full report is in docs/fork/strip-reports/ on main.
This commit is contained in:
2026-09-18 10:21:56 -07:00
commit 7dae9b29fd
1650 changed files with 485521 additions and 0 deletions
@@ -0,0 +1,44 @@
/*
* SPDX-FileCopyrightText: 2020 Stalwart Labs LLC <[email protected]>
*
* SPDX-License-Identifier: AGPL-3.0-only OR LicenseRef-SEL
*/
use crate::task_manager::TaskResult;
use common::Server;
use smtp::reporting::{dmarc::DmarcReporting, tls::TlsReporting};
pub enum ReportId {
Dmarc(u64),
Tls(u64),
}
pub(crate) trait SubmitReportTask: Sync + Send {
fn submit_report(&self, report_id: ReportId) -> impl Future<Output = TaskResult> + Send;
}
impl SubmitReportTask for Server {
async fn submit_report(&self, report_id: ReportId) -> TaskResult {
match submit_report(self, report_id).await {
Ok(result) => result,
Err(err) => {
let result = TaskResult::temporary(err.to_string());
trc::error!(err.details("Failed to submit report"));
result
}
}
}
}
async fn submit_report(server: &Server, report_id: ReportId) -> trc::Result<TaskResult> {
match report_id {
ReportId::Dmarc(item_id) => server
.send_dmarc_aggregate_report(item_id)
.await
.map(|_| TaskResult::Success(vec![])),
ReportId::Tls(item_id) => server
.send_tls_aggregate_report(item_id)
.await
.map(|_| TaskResult::Success(vec![])),
}
}