2017-09-13 17:03:04 +05:00
|
|
|
# ![Simple Nixos MailServer][logo]
|
2016-07-21 21:55:01 +05:00
|
|
|
![license](https://img.shields.io/badge/license-GPL3-brightgreen.svg)
|
2018-11-10 17:37:38 +05:00
|
|
|
[![pipeline status](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/badges/master/pipeline.svg)](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/commits/master)
|
2016-07-21 21:11:43 +05:00
|
|
|
|
2017-09-13 17:03:04 +05:00
|
|
|
|
2020-05-08 23:18:55 +05:00
|
|
|
## Release branches
|
2016-07-21 21:55:59 +05:00
|
|
|
|
2020-05-08 23:18:55 +05:00
|
|
|
For each NixOS release, we publish a branch. You then have to use the
|
|
|
|
SNM branch corresponding to your NixOS version.
|
|
|
|
|
2021-12-02 03:08:29 +05:00
|
|
|
* For NixOS 21.11
|
|
|
|
- Use the [SNM branch `nixos-21.11`](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/tree/nixos-21.11)
|
|
|
|
- [Documentation](https://nixos-mailserver.readthedocs.io/en/nixos-21.11/)
|
|
|
|
- [Release notes](https://nixos-mailserver.readthedocs.io/en/nixos-21.11/release-notes.html#nixos-21-11)
|
2021-05-31 01:07:53 +05:00
|
|
|
* For NixOS 21.05
|
|
|
|
- Use the [SNM branch `nixos-21.05`](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/tree/nixos-21.05)
|
|
|
|
- [Documentation](https://nixos-mailserver.readthedocs.io/en/nixos-21.05/)
|
|
|
|
- [Release notes](https://nixos-mailserver.readthedocs.io/en/nixos-21.05/release-notes.html#nixos-21-05)
|
2020-05-22 17:52:45 +05:00
|
|
|
* For NixOS unstable
|
|
|
|
- Use the [SNM branch `master`](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/tree/master)
|
2020-11-30 12:55:26 +05:00
|
|
|
- [Documentation](https://nixos-mailserver.readthedocs.io/en/latest/)
|
2017-09-20 19:27:52 +05:00
|
|
|
|
2017-12-14 21:12:30 +05:00
|
|
|
[Subscribe to SNM Announcement List](https://www.freelists.org/list/snm)
|
|
|
|
This is a very low volume list where new releases of SNM are announced, so you
|
|
|
|
can stay up to date with bug fixes and updates. All announcements are signed by
|
|
|
|
the gpg key with fingerprint
|
|
|
|
|
|
|
|
```
|
|
|
|
D9FE 4119 F082 6F15 93BD BD36 6162 DBA5 635E A16A
|
|
|
|
```
|
|
|
|
|
2017-12-22 22:51:57 +05:00
|
|
|
|
2017-09-13 16:16:17 +05:00
|
|
|
## Features
|
2017-11-11 20:15:30 +05:00
|
|
|
### v2.0
|
2017-11-21 12:52:54 +05:00
|
|
|
* [x] Continous Integration Testing
|
2017-11-11 20:15:30 +05:00
|
|
|
* [x] Multiple Domains
|
2017-09-13 16:16:17 +05:00
|
|
|
* Postfix MTA
|
|
|
|
- [x] smtp on port 25
|
2020-07-06 13:38:12 +05:00
|
|
|
- [x] submission tls on port 465
|
|
|
|
- [x] submission starttls on port 587
|
2017-08-13 15:58:00 +05:00
|
|
|
- [x] lmtp with dovecot
|
|
|
|
* Dovecot
|
2017-09-13 16:16:17 +05:00
|
|
|
- [x] maildir folders
|
2020-07-06 13:38:12 +05:00
|
|
|
- [x] imap with tls on port 993
|
|
|
|
- [x] pop3 with tls on port 995
|
|
|
|
- [x] imap with starttls on port 143
|
|
|
|
- [x] pop3 with starttls on port 110
|
2017-08-13 15:58:00 +05:00
|
|
|
* Certificates
|
|
|
|
- [x] manual certificates
|
|
|
|
- [x] on the fly creation
|
2017-11-11 20:15:30 +05:00
|
|
|
- [x] Let's Encrypt
|
2017-08-13 15:58:00 +05:00
|
|
|
* Spam Filtering
|
2017-09-13 16:16:17 +05:00
|
|
|
- [x] via rspamd
|
2017-08-13 15:58:00 +05:00
|
|
|
* Virus Scanning
|
2017-09-13 16:16:17 +05:00
|
|
|
- [x] via clamav
|
2017-08-13 15:58:00 +05:00
|
|
|
* DKIM Signing
|
2017-09-13 16:16:17 +05:00
|
|
|
- [x] via opendkim
|
2017-08-13 15:58:00 +05:00
|
|
|
* User Management
|
2017-09-13 16:16:17 +05:00
|
|
|
- [x] declarative user management
|
|
|
|
- [x] declarative password management
|
2017-11-20 11:16:08 +05:00
|
|
|
* Sieves
|
|
|
|
- [x] A simple standard script that moves spam
|
|
|
|
- [x] Allow user defined sieve scripts
|
2018-01-07 17:15:36 +05:00
|
|
|
- [x] ManageSieve support
|
2017-12-20 12:40:58 +05:00
|
|
|
* User Aliases
|
|
|
|
- [x] Regular aliases
|
|
|
|
- [x] Catch all aliases
|
2017-09-13 16:16:17 +05:00
|
|
|
|
2017-11-11 20:15:30 +05:00
|
|
|
### In the future
|
2017-11-20 11:16:08 +05:00
|
|
|
|
2017-11-11 20:15:30 +05:00
|
|
|
* DKIM Signing
|
|
|
|
- [ ] Allow a per domain selector
|
2017-09-13 13:17:04 +05:00
|
|
|
|
2021-03-10 22:46:03 +05:00
|
|
|
### Get in touch
|
2017-09-13 13:17:04 +05:00
|
|
|
|
2021-03-10 22:46:03 +05:00
|
|
|
- Subscribe to the [mailing list](https://www.freelists.org/archive/snm/)
|
2021-06-06 13:21:14 +05:00
|
|
|
- Join the Libera Chat IRC channel `#nixos-mailserver`
|
2017-11-11 20:15:30 +05:00
|
|
|
|
2017-11-13 18:59:25 +05:00
|
|
|
### Quick Start
|
2017-10-17 14:52:47 +05:00
|
|
|
|
2017-10-17 14:53:53 +05:00
|
|
|
```nix
|
2020-10-31 02:19:46 +05:00
|
|
|
{ config, pkgs, ... }:
|
2022-01-21 17:02:15 +05:00
|
|
|
let release = "nixos-21.11";
|
2020-10-31 02:19:46 +05:00
|
|
|
in {
|
|
|
|
imports = [
|
|
|
|
(builtins.fetchTarball {
|
|
|
|
url = "https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/archive/${release}/nixos-mailserver-${release}.tar.gz";
|
|
|
|
# This hash needs to be updated
|
|
|
|
sha256 = "0000000000000000000000000000000000000000000000000000";
|
|
|
|
})
|
|
|
|
];
|
|
|
|
|
|
|
|
mailserver = {
|
|
|
|
enable = true;
|
|
|
|
fqdn = "mail.example.com";
|
|
|
|
domains = [ "example.com" "example2.com" ];
|
|
|
|
loginAccounts = {
|
|
|
|
"user1@example.com" = {
|
2020-11-29 14:58:16 +05:00
|
|
|
# nix run nixpkgs.apacheHttpd -c htpasswd -nbB "" "super secret password" | cut -d: -f2 > /hashed/password/file/location
|
2020-10-31 02:19:46 +05:00
|
|
|
hashedPasswordFile = "/hashed/password/file/location";
|
|
|
|
|
|
|
|
aliases = [
|
|
|
|
"info@example.com"
|
|
|
|
"postmaster@example.com"
|
|
|
|
"postmaster@example2.com"
|
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|
2017-10-17 14:52:47 +05:00
|
|
|
```
|
|
|
|
|
|
|
|
For a complete list of options, see `default.nix`.
|
|
|
|
|
|
|
|
|
2017-08-12 14:52:01 +05:00
|
|
|
|
2017-11-13 18:59:25 +05:00
|
|
|
## How to Set Up a 10/10 Mail Server Guide
|
2020-07-07 01:23:15 +05:00
|
|
|
Check out the [Complete Setup Guide](https://nixos-mailserver.readthedocs.io/en/latest/setup-guide.html) in the project's documentation.
|
2017-11-10 20:57:11 +05:00
|
|
|
|
2017-11-13 18:59:25 +05:00
|
|
|
## How to Backup
|
|
|
|
|
2020-07-07 01:23:15 +05:00
|
|
|
Checkout the [Complete Backup Guide](https://nixos-mailserver.readthedocs.io/en/latest/backup-guide.html). Backups are easy with `SNM`.
|
2017-11-13 18:59:25 +05:00
|
|
|
|
2018-02-28 18:07:50 +05:00
|
|
|
## Development
|
2017-11-10 21:16:21 +05:00
|
|
|
|
2020-07-07 01:23:15 +05:00
|
|
|
See the [How to Develop SNM](https://nixos-mailserver.readthedocs.io/en/latest/howto-develop.html) wiki page.
|
2017-11-10 20:57:11 +05:00
|
|
|
|
2020-05-22 17:52:45 +05:00
|
|
|
## Release notes
|
|
|
|
|
|
|
|
### nixos-20.03
|
|
|
|
|
|
|
|
- Rspamd is upgraded to 2.0 which deprecates the SQLite Bayes
|
|
|
|
backend. We then moved to the Redis backend (the default since
|
|
|
|
Rspamd 2.0). If you don't want to relearn the Redis backend from the
|
|
|
|
scratch, we could manually run
|
|
|
|
|
|
|
|
rspamadm statconvert --spam-db /var/lib/rspamd/bayes.spam.sqlite --ham-db /var/lib/rspamd/bayes.ham.sqlite -h 127.0.0.1:6379 --symbol-ham BAYES_HAM --symbol-spam BAYES_SPAM
|
|
|
|
|
|
|
|
See the [Rspamd migration
|
|
|
|
notes](https://rspamd.com/doc/migration.html#migration-to-rspamd-20)
|
|
|
|
and [this SNM Merge
|
|
|
|
Request](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/merge_requests/164)
|
|
|
|
for details.
|
|
|
|
|
2017-09-03 18:43:37 +05:00
|
|
|
## Contributors
|
2020-05-27 00:00:37 +05:00
|
|
|
See the [contributor tab](https://gitlab.com/simple-nixos-mailserver/nixos-mailserver/-/graphs/master)
|
2017-11-21 16:07:07 +05:00
|
|
|
|
2017-11-21 13:45:59 +05:00
|
|
|
### Alternative Implementations
|
|
|
|
* [NixCloud Webservices](https://github.com/nixcloud/nixcloud-webservices)
|
2017-09-13 17:03:04 +05:00
|
|
|
|
|
|
|
### Credits
|
|
|
|
* send mail graphic by [tnp_dreamingmao](https://thenounproject.com/dreamingmao)
|
|
|
|
from [TheNounProject](https://thenounproject.com/) is licensed under
|
|
|
|
[CC BY 3.0](http://creativecommons.org/~/3.0/)
|
|
|
|
* Logo made with [Logomakr.com](https://logomakr.com)
|
|
|
|
|
2017-11-21 13:45:59 +05:00
|
|
|
|
|
|
|
|
2017-11-21 13:44:42 +05:00
|
|
|
|
2021-07-24 00:24:22 +05:00
|
|
|
[logo]: docs/logo.png
|