#1109537 ITP: stalwart, All-in-one Mail & Collaboration server.

#1109537#5
Date:
2025-07-19 14:30:48 UTC
From:
To:
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

#1109537#12
Date:
2025-07-27 22:06:32 UTC
From:
To:
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

#1109537#17
Date:
2025-08-29 19:38:42 UTC
From:
To:
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.

#1109537#22
Date:
2025-09-13 11:42:36 UTC
From:
To:
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

#1109537#27
Date:
2025-09-13 14:32:57 UTC
From:
To:
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/

#1109537#32
Date:
2025-09-13 13:05:57 UTC
From:
To:
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

#1109537#37
Date:
2025-10-04 07:46:32 UTC
From:
To:
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.

#1109537#42
Date:
2025-10-04 18:41:13 UTC
From:
To:
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

#1109537#47
Date:
2025-10-04 18:35:48 UTC
From:
To:
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

#1109537#52
Date:
2025-10-05 19:56:00 UTC
From:
To:
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

#1109537#57
Date:
2025-10-05 20:18:33 UTC
From:
To:
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 !