Forked repo to test stuff on
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 ~~~ |
||
---|---|---|
.hydra | ||
docs | ||
mail-server | ||
migrations | ||
scripts | ||
tests | ||
.editorconfig | ||
.envrc | ||
.gitignore | ||
.gitlab-ci.yml | ||
.readthedocs.yaml | ||
default.nix | ||
flake.lock | ||
flake.nix | ||
LICENSE | ||
README.md | ||
shell.nix |
Release branches
For each NixOS release, we publish a branch. You then have to use the SNM branch corresponding to your NixOS version.
- For NixOS 25.05
- For NixOS 24.11
- For NixOS unstable
- Use the SNM branch
master
- Documentation
- Use the SNM branch
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
- Matrix: #nixos-mailserver:nixos.org
- IRC:
#nixos-mailserver
on Libera Chat
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
- send mail graphic by tnp_dreamingmao from TheNounProject is licensed under CC BY 3.0
- Logo made with Logomakr.com