Simple and complete declarative NixOS Mailserver setups
Find a file
Martin Weinelt 1cedddf425 flake.lock: Update
Flake lock file updates:

• Updated input 'git-hooks':
    'github:cachix/git-hooks.nix/ca5b894d3e3e151ffc1db040b6ce4dcc75d31c37' (2025-10-17)
  → 'github:cachix/git-hooks.nix/8e7576e79b88c16d7ee3bbd112c8d90070832885' (2025-11-06)
• Updated input 'nixpkgs':
    'github:NixOS/nixpkgs/b3d51a0365f6695e7dd5cdf3e180604530ed33b4' (2025-11-02)
  → 'github:NixOS/nixpkgs/ae814fd3904b621d8ab97418f1d0f2eb0d3716f4' (2025-11-05)
2025-11-08 17:55:51 +01:00
.hydra ci: disable command execution in jobset generation 2025-09-22 15:23:26 +02:00
docs Disable submission with explicit STARTTLS by default 2025-11-08 12:50:50 +01:00
mail-server Check release version compat 2025-11-08 13:39:33 +01:00
migrations migrations: add missing comma in list 2025-07-09 01:39:51 +00:00
scripts tests: also test client submission over smtps:// 2025-08-24 02:29:30 +02:00
tests Disable submission with explicit STARTTLS by default 2025-11-08 12:50:50 +01: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
.gitignore Provide direnv integration for flake devshell 2025-05-15 16:29:03 +02:00
.gitlab-ci.yml ci: use hydra-cli from pinned nixpkgs 2025-05-10 21:18:17 +02:00
.readthedocs.yaml docs: fix Read the Docs by using portable-nix 2025-11-05 01:10:52 +01:00
default.nix Check release version compat 2025-11-08 13:39:33 +01:00
flake.lock flake.lock: Update 2025-11-08 17:55:51 +01:00
flake.nix Stop testing stable nixos 2025-11-08 13:40:56 +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 Release 25.11 2025-05-22 01:31:46 +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

  • Continous Integration Testing
  • Multiple Domains
  • Postfix
    • SMTP on port 25
    • Submission TLS on port 465
    • Submission StartTLS on port 587
    • LMTP with Dovecot
  • 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
  • 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

In the future

  • Automatic client configuration
  • DKIM Signing
    • Allow per domain selectors
    • Allow passing DKIM signing keys
  • Improve the Forwarding Experience
  • User management
    • Allow local and LDAP user to coexist
  • OpenID Connect
    • Depends on relevant clients adding support, e.g. Thunderbird

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