Package: wnpp Severity: wishlist * Package name : stalwart Upstream Author : Stalwart Labs * URL : https://github.com/stalwartlabs/stalwart * License : LICENSES/AGPL-3.0-only.txt LICENSES/LicenseRef-SEL.txt Programming Lang: rust Description : stalwart, All-in-one Mail & Collaboration server. Short term plan is to **avoid** `curl URL | sudo bash -` by making `cargo deb` possible. Long term plan is a proper Debian package. Regards Geert Stappers Debian Developer
Hi, Git repository https://salsa.debian.org/debian/stalwart has a branch named "mvp". In that branch you get with `cargo deb` a debian package. Groeten Geert Stappers
The mvp depends on package stalwart-webadmin At https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1111205 is documented how to build that package.
Hi, I tried to "cargo deb" it, here are a few notes: - cargo-deb isn't in Debian (?), so `cargo install cargo-deb` was needed - the sources target rust 1.88 (2024). However Debian has rust 1.86 (and 1.87 in experimental). See attached trivial patch - which is done *after* dependencies are downloaded, so one has to run `cargo deb` once before applying it. Jérémy
Another small fix:
--- a/resources/systemd/postrm
+++ b/resources/systemd/postrm
@@ -1,11 +1,8 @@
#!/bin/sh
set -e
-# TODO Check for "update" and avoid the `rm -rf /var/log/stalwart` when updating
-# So try to keep the log directory when NOT "remove" or "purge"
-if [ "$1" == "$1" ] ; then
+if [ "$1" = "purge" ] ; then
rm -rf /var/log/stalwart
- # FIXME see the TODO
fi
#DEBHELPER#
BTW I've setup a reprepro for those wanting to test it without
the burden of rebuilding it:
https://people.debian.org/~kapouer/apt/
There's a small fix to be done on stalwart-ignite, line 59:
to avoid this error when called without parameter:
stalwart-ignite: 56: 1: parameter not set
--- a/stalwart-ignite
+++ b/stalwart-ignite
@@ -53,7 +53,7 @@
ensure systemd-sysusers
fi
- if [ -z "$1" ] ; then
+ if [ -z "${1-}" ] ; then
# Run init
ignore stalwart --init "$_dir"
else
Hi there, Saturday 13 September where three patches proposed. Two patches are applied: - Remove log directory upon "purge" https://salsa.debian.org/debian/stalwart/-/commit/20a53169c955793a7de1180aa9ccd109a5293dbb - stalwart-ignite: 56: 1: parameter not set https://salsa.debian.org/debian/stalwart/-/commit/ecfbddff9fef36ffb4cd009e3ad737f5dc7132c3 The third one, the one dealing with variantions in Rust versions, not. Thanks for the "the sources target rust 1.88 (2024). However Debian has rust 1.86 (and 1.87 in experimental)." warning. Regards Geert Stappers Who used stalwart to send this email.
Le sam. 4 oct. 2025 à 20:35, Geert Stappers <stappers@stappers.nl> a écrit : That makes sense, hopefully that will be the case. I didn't setup stalwart for my own toy MX, yet; did you encounter any difficulties ? Jérémy
Hello Jérémy, Thanks for the patch you provide to stalwart in https://bugs.debian.org/cgi-bin/bugreport.cgi?bug=1109537#22 That patch is safed / secured in branch upstream_1_86 ( https://salsa.debian.org/debian/stalwart/-/tree/upstream_1_86?ref_type=heads ) My hope is that stalwart stays at Rust edition 2024 and that Rust build tooling in Debian catches up with it. Regards Geert Stappers Gratefull for being made aware of the challenge of Rust versions
On Sat, Oct 04, 2025 at 08:41:13PM +0200, Jérémy Lal wrote under 'Subject: Re: Stalwart and Rust version': - Several Postfix servers - Not any Dovecot servers - SPF records for the Postfix servers - 1 Stalwart server - No DKIM / No DMARC - "installer", solved with `stalwart-ignite` - "download of stalwart-webadmin", solved by https://salsa.debian.org/debian/stalwart/-/commit/ed309ab5f300dae9d6ca9b42640f62f9777f3b98 plus "Depends: stalwart-webadmin" Thing I'm not happy with: Stalwart claims by default the HTTPS port ( 443 ) Luckly has upstream documented how to have Stalwart behind a reverse proxy. Implementing that will imply to deal manually with SSL certificates. I haven't yet faced that challenge. And another challenge I have to face is DKIM / DMARC. It is my fear that I will faulty configure DKIM / DMARC, so giving recieving mailservers a valid reason to drop email I want to transmit. But that will be my learning experience, not something to blame stalwart. It is even the reason why I want to shift from Postfix to Stalwart: Build-in DKIM / DMARC. (and build-in IMAP) Groeten Geert Stappers
Le dim. 5 oct. 2025 à 21:56, Geert Stappers <stappers@stappers.nl> a écrit : That is somewhat easy with the use of acmev2. I find the pattern of acmev2 dns-01 challenge with acme.sh --install and a crontab very easy to maintain in the long term. And built-in JMAP !