Stalwart
Stalwart is an open-source, all-in-one mail server solution that supports JMAP, IMAP4, and SMTP protocols. It's designed to be secure, fast, robust, and scalable, with features like built-in DMARC, DKIM, SPF, and ARC support for message authentication. It also provides strong transport security through DANE, MTA-STS, and SMTP TLS reporting. Stalwart is written in Rust, ensuring high performance and memory safety.
Setup
The following minimal configuration example is unsecure and for testing purpose only. It will run the Stalwart mail server on localhost
, listening on port 143
(IMAP) and 587
(Submission). Users alice
and bob
are configured with the password foobar
.
/etc/nixos/configuration.nix
services.stalwart-mail = {
enable = true;
# Use newer, latest version in NixOS 24.05
package = pkgs.stalwart-mail;
settings = {
server = {
hostname = "localhost";
tls.enable = false;
listener = {
"smtp-submission" = {
bind = [ "[::]:587" ];
protocol = "smtp";
};
"imap" = {
bind = [ "[::]:143" ];
protocol = "imap";
};
};
};
imap.auth.allow-plain-text = true;
session.auth = {
mechanisms = "[plain, auth]";
directory = "'in-memory'";
};
storage.directory = "in-memory";
session.rcpt.directory = "'in-memory'";
queue.outbound.next-hop = "'local'";
directory."in-memory" = {
type = "memory";
principals = [
{
class = "individual";
name = "alice";
secret = "foobar";
email = [ "alice@localhost" ];
}
{
class = "individual";
name = "bob";
secret = "foobar";
email = [ "bob@$localhost" ];
}
];
};
};
};
Configuration
Administrative web frontend
Add following listener to enable the administrative web frontend.
/etc/nixos/configuration.nix
services.stalwart-mail = {
enable = true;
settings.server.listener = {
"management" = {
bind = [ "[::]:8080" ];
protocol = "http";
};
};
};
It will be accessible on http://localhost:8080 and authentication is done with the one of the credentials specified above (normal inbox user or administrative role).
Please note that this example snippet is for testing purpose and without further configuration the management web interface will run unencrypted on all interfaces which is unsecure.
See also
- Maddy, a composable, modern mail server written in Go.
- Simple NixOS Mailserver