Forked repo to test stuff on
Find a file
emilylange 6ef1eb9ce1
assertions: fix eval error when mailserver.stateVersion is unset (null)
Eval does not stop on the first assertion failure it encouters.
Instead, it tries to evaluate all assertions and returns with a list of
those that failed.

This means our very top `config.mailserver.stateVersion != null`
assertion does not gate against any other assertions trying to compare
null against an integer.

The error prior to this commit can be reproduced by removing
`mailserver.stateVersion = 999;` in tests/lib/config.nix and then trying
to evaluate any of the tests:

~~~bash
# nix eval --raw .#checks.x86_64-linux.internal-unstable
error:
       … while evaluating the attribute 'outPath'
         at /nix/store/syvnmj3hhckkbncm94kfkbl76qsdqqj3-source/lib/customisation.nix:421:7:
          420|         drv.drvPath;
          421|       outPath =
             |       ^
          422|         assert condition;

       … while calling the 'getAttr' builtin
         at «internal»:1:500:
       (stack trace truncated; use '--show-trace' to show the full trace)

       error: cannot compare null with an integer
~~~
2025-06-21 20:15:46 +02:00
.hydra treewide: reformat with nixfmt-rfc-style 2025-06-15 03:39:44 +02:00
docs assertions: fix eval error when mailserver.stateVersion is unset (null) 2025-06-21 20:15:46 +02:00
mail-server assertions: fix eval error when mailserver.stateVersion is unset (null) 2025-06-21 20:15:46 +02:00
migrations dovecot: migrate to dedicated homedir and separate maildir paths 2025-06-21 09:46:32 +02:00
scripts scripts/generate-options: refactor 2025-05-15 16:29:04 +02:00
tests tests: test for the expected maildir and index dir locations 2025-06-21 10:28:43 +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
.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: drop options.md from the repository 2022-12-22 20:45:03 +01:00
default.nix Create per service debug logging toggles 2025-06-17 22:02:31 +02:00
flake.lock flake.lock: Update 2025-06-13 04:00:52 +02:00
flake.nix treewide: reformat with nixfmt-rfc-style 2025-06-15 03:39:44 +02:00
LICENSE Initial commit 2016-07-21 18:09:04 +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