Simple and complete declarative NixOS Mailserver setups
  • Nix 88.3%
  • Python 11.4%
  • Sieve 0.3%
Find a file
Martin Weinelt e33fbde199 Merge branch 'push-pxvmorlwmyns' into 'main'
{rspamd,borgbackup}: use package from upstream NixOS service

See merge request simple-nixos-mailserver/nixos-mailserver!519
2026-04-27 10:58:13 +00:00
.hydra hydra: use nixpkgs-unstable instead of nixos-unstable-small 2026-04-21 15:00:29 +02:00
docs docs/release-notes: add tls changes 2026-04-26 01:47:39 +02:00
mail-server borgbackup: use package from upstream NixOS service 2026-04-27 12:43:59 +02:00
migrations treewide: fix typos 2026-03-23 01:35:59 +01:00
scripts quota: expose global quota settings 2026-04-13 01:19:14 +02:00
tests Only prepend {CRYPT} scheme if there is no scheme present 2026-04-23 14:45:22 +02:00
.editorconfig Remove makefile section from editorconfig 2017-11-11 09:47:25 +00:00
.envrc Provide direnv integration for flake devshell 2025-05-15 16:29:03 +02:00
.git-blame-ignore-revs git-blame-ignore-revs: init 2026-03-12 13:43:09 +01:00
.gitignore Provide direnv integration for flake devshell 2025-05-15 16:29:03 +02:00
.gitlab-ci.yml ci: run on main branch 2026-04-12 03:59:39 +02:00
.readthedocs.yaml docs: fail build on warnings 2026-03-11 17:01:39 +01:00
.typos.toml Check for obvious typos in pre-commit 2026-03-23 01:35:27 +01:00
default.nix fts: update docs and defaults 2026-04-21 00:58:58 +02:00
flake.lock flake.lock: Update 2026-04-18 16:22:38 +02:00
flake.nix Check for obvious typos in pre-commit 2026-03-23 01:35:27 +01:00
LICENSE Initial commit 2016-07-21 18:09:04 +02:00
pyproject.toml ruff: reject implicit string concat 2025-07-09 03:59:54 +02:00
README.md Switch default branch to main 2026-04-12 03:54:39 +02:00
shell.nix treewide: reformat with nixfmt-rfc-style 2025-06-15 03:39:44 +02:00

Simple Nixos MailServer

license pipeline status

Release branches

For each NixOS release, we publish a branch. You then have to use the SNM branch corresponding to your NixOS version.

Features

  • Continuous Integration Testing
  • Multiple Domains
  • Postfix
    • SMTP on port 25
    • Submission TLS on port 465
    • Submission StartTLS on port 587
    • LMTP with Dovecot
    • DANE and MTA-STS validation
    • SMTP TLS Reports (RFC 8460)
  • Dovecot
    • Maildir folders
    • IMAP with TLS on port 993
    • POP3 with TLS on port 995
    • IMAP with StartTLS on port 143
    • POP3 with StartTLS on port 110
  • Certificates
    • ACME
    • Custom certificates
  • Spam Filtering
    • Via Rspamd
  • Virus Scanning
    • Via ClamAV
  • DKIM Signing
    • Via Rspamd
    • Automatic key generation
    • Multiple selectors per Domain
  • User Management
    • Declarative user management
    • Declarative password management
    • LDAP users
  • Sieve
    • Allow user defined sieve scripts
    • Moving mails from/to junk trains the Bayes filter
    • ManageSieve support
  • User Aliases
    • Regular aliases
    • Catch all aliases
  • Improve the Forwarding Experience

In the future

Get in touch

How to Set Up a 10/10 Mail Server Guide

Check out the Setup Guide in the project's documentation.

For a complete list of options, see in readthedocs.

Development

See the How to Develop SNM documentation page.

Contributors

See the contributor tab

Alternative Implementations

Credits