It is a feature for a project to be written in Go, rust, C++, etc. as opposed to python, as least for me. It means, in my experience, that it’ll work and upgrade more easily; it might even come as a single binary. Being in Go or rust also means it’ll probably be fast, concurrent, and not too prone to crashing.
That’s subjective but it’s definitely been my experience.
While it’s well known that I’m no fan of Rust evangelism, in this particular case from an ops standpoint knowing that it’s a Rust project–and hence likely to be a lot simpler operationally as a binary–is helpful.
While this is a neat project, the copy on their homepage rubs me wrong.
Self-hosting your mail server has been notoriously difficult. Not anymore! Stalwart is a scalable, secure and robust open-source mail server software designed for the 21st century.
I ran my own mailserver for about a year, using Mail-in-a-Box, and the issues and difficulties I ran into while running the server had basically zero association with scaling and security (at least of the server itself). All of my difficulty stemmed from keeping my IP(s) off of blacklists. I had a roughly three-month stint where I had to keep requesting my IP be removed from Microsoft’s blacklist because my IP was apparently close enough to other IPs used by spammers, and that convinced me to relegate my email to a provider (FastMail) instead of self-hosting.
But, I’m also betting this software isn’t really intended for users like me wanting to host email for a handful of users.
It looks like it has an HTTP management interface for the SMTP server. I wonder what that looks like. I Stalwartly refuse to run my own mail server, but I might just try this out to tinker with it. Looking through the docs it all looks very straightforward.
The spam filtering is a little buried in the SMTP docs, content filters on the DATA stage. Maybe this is the normal place to find docs about spam filtering, I don’t really configure email servers.
Tangent: is spamassassin still the best in class for open source spam filters? I’ve heard of rspamd but I have no sense of which is considered “better” by the community.
You can also hook in Sieve scripts to different parts of the inbound mail pipeline (global vs per-user), and they provide examples:
I like that they use Sieve hooks everywhere, with SQLite support, rather than having a zillion different approaches to each stage of the mail pipeline. But again, I don’t configure mail servers, so I also don’t know if this is normal.
Chasquid is another one I enjoy working with. One reason I picked it is the very approachable Go codebase. I wanted a modern SMTP server that I can fully understand. Rather than a kitchen-sink approach it really is just an smtpd but with enough flexibility to do everything I needed. It uses an external local delivery agent and hooks for spam filtering and DKIM/DMARC validation.
Is this the kind of thing that one could run on a home server to replace Postfix and Dovecot, or is it aimed at enterprise-scale “give us a Docker image to automatically horizontally scale with Kubernetes” deployments?
Himalaya is an email client to browse a remote or local mailbox, Stalwart is an email server that facilitates operating such a mailbox.
I don’t believe being funded by NLNet implicitly forms any relations between projects (in part due to the sheer number of funded projects) but I’d be curious to know if that wasn’t the case.
Oh wow, I recently had to unfuck my email server and was lamenting the lack of something exactly like this. “Where’s the Prosody of email, dammit?” Maybe I’ll try it out…
a full rust email server? cool :D
Some people seem to hate it so I avoided mentioning it, but yes, it is written in Rust.
Because being written in Rust is not a feature.
It is a feature for a project to be written in Go, rust, C++, etc. as opposed to python, as least for me. It means, in my experience, that it’ll work and upgrade more easily; it might even come as a single binary. Being in Go or rust also means it’ll probably be fast, concurrent, and not too prone to crashing.
That’s subjective but it’s definitely been my experience.
While it’s well known that I’m no fan of Rust evangelism, in this particular case from an ops standpoint knowing that it’s a Rust project–and hence likely to be a lot simpler operationally as a binary–is helpful.
IMHO, the relevant problem with running your own mail server is not that there are several libraries on which it depends.
Taking untrusted input data from the network isn’t something that gives you pause in C?
Why does there have to be only one relevant problem?
Even in that case, the feature is “simple deployment”, not “written in Rust”.
While this is a neat project, the copy on their homepage rubs me wrong.
I ran my own mailserver for about a year, using Mail-in-a-Box, and the issues and difficulties I ran into while running the server had basically zero association with scaling and security (at least of the server itself). All of my difficulty stemmed from keeping my IP(s) off of blacklists. I had a roughly three-month stint where I had to keep requesting my IP be removed from Microsoft’s blacklist because my IP was apparently close enough to other IPs used by spammers, and that convinced me to relegate my email to a provider (FastMail) instead of self-hosting.
But, I’m also betting this software isn’t really intended for users like me wanting to host email for a handful of users.
It looks like it has an HTTP management interface for the SMTP server. I wonder what that looks like. I Stalwartly refuse to run my own mail server, but I might just try this out to tinker with it. Looking through the docs it all looks very straightforward.
It can also log traces to OpenTelemetry. Marvelous!
The spam filtering is a little buried in the SMTP docs, content filters on the DATA stage. Maybe this is the normal place to find docs about spam filtering, I don’t really configure email servers.
Tangent: is spamassassin still the best in class for open source spam filters? I’ve heard of rspamd but I have no sense of which is considered “better” by the community.
You can also hook in Sieve scripts to different parts of the inbound mail pipeline (global vs per-user), and they provide examples:
I like that they use Sieve hooks everywhere, with SQLite support, rather than having a zillion different approaches to each stage of the mail pipeline. But again, I don’t configure mail servers, so I also don’t know if this is normal.
rspamd is unreasonably effective spamfiltering.
It outperforms spamassassin by a wide margin in my experience & the default setup in Debian “just works”. It’s great.
That seems to be the intended setup. They list sieve + dns blacklisting here under “Inbound Filtering and Throttling”.
This might also give me the kick to start with some mail inbound selfhosting..
Comment just updated, it’s a configuration option on the DATA stage of inbound SMTP.
Chasquid is another one I enjoy working with. One reason I picked it is the very approachable Go codebase. I wanted a modern SMTP server that I can fully understand. Rather than a kitchen-sink approach it really is just an smtpd but with enough flexibility to do everything I needed. It uses an external local delivery agent and hooks for spam filtering and DKIM/DMARC validation.
So many nice servers. Now we just need good mail clients that also support JMAP.
(Sorry for the self promotion)
My client supports JMAP since the first RFCs were published: https://git.meli.delivery/meli/meli
I asked for it! :D
I like meli. Sadly it’s not for every user. I think more competition would be great! :)
On Android there’s Ltt.rs but I’m not sure about the desktop client.
Is this the kind of thing that one could run on a home server to replace Postfix and Dovecot, or is it aimed at enterprise-scale “give us a Docker image to automatically horizontally scale with Kubernetes” deployments?
Based on the introduction here and the project names, yes it is a replacement for that.
Just sent in a PR for some issues I ran into…. PR#1 … hope they pick it up :)
How does this relate to himalaya? Also since you are both funded by nlnet?
Himalaya is an email client to browse a remote or local mailbox, Stalwart is an email server that facilitates operating such a mailbox.
I don’t believe being funded by NLNet implicitly forms any relations between projects (in part due to the sheer number of funded projects) but I’d be curious to know if that wasn’t the case.
Himalaya seems to be a mail client? This is a mail server.
Oh wow, I recently had to unfuck my email server and was lamenting the lack of something exactly like this. “Where’s the Prosody of email, dammit?” Maybe I’ll try it out…
Is this meant to live in the same space as maddy and mox ?