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)
|
2017-09-21 19:32:01 +05:00
|
|
|
![status](https://travis-ci.org/r-raymond/nixos-mailserver.svg?branch=master)
|
2016-07-21 21:11:43 +05:00
|
|
|
|
2017-09-13 17:03:04 +05:00
|
|
|
|
2017-09-13 16:16:17 +05:00
|
|
|
## Stable Releases
|
2016-07-21 21:55:59 +05:00
|
|
|
|
2018-02-23 19:39:56 +05:00
|
|
|
* [SNM v2.1.3](https://github.com/r-raymond/nixos-mailserver/releases/v2.1.3)
|
2017-09-13 16:16:17 +05:00
|
|
|
|
2017-11-20 11:27:28 +05:00
|
|
|
[Latest Release (Candidate)](https://github.com/r-raymond/nixos-mailserver/releases/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
|
|
|
|
- [x] submission 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
|
|
|
|
- [x] imap starttls on port 143
|
|
|
|
- [x] pop3 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
|
|
|
|
|
|
|
### Changelog
|
|
|
|
|
|
|
|
#### v1.0 -> v1.1
|
|
|
|
* Changed structure to Nix Modules
|
2017-09-13 16:16:17 +05:00
|
|
|
* Adds Sieve support
|
2017-08-13 15:58:00 +05:00
|
|
|
|
2017-11-11 20:15:30 +05:00
|
|
|
#### v1.1 -> v2.0
|
|
|
|
* rename domain to fqdn, seperate fqdn from domains
|
|
|
|
* multi domain support
|
|
|
|
|
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
|
2017-10-17 14:52:47 +05:00
|
|
|
{ config, pkgs, ... }:
|
|
|
|
{
|
|
|
|
imports = [
|
2018-02-23 19:39:56 +05:00
|
|
|
(builtins.fetchTarball "https://github.com/r-raymond/nixos-mailserver/archive/v2.1.3.tar.gz")
|
2017-10-17 14:52:47 +05:00
|
|
|
];
|
2017-11-05 14:57:26 +05:00
|
|
|
|
2017-10-17 14:52:47 +05:00
|
|
|
mailserver = {
|
|
|
|
enable = true;
|
2017-11-11 20:15:30 +05:00
|
|
|
fqdn = "mail.example.com";
|
|
|
|
domains = [ "example.com" "example2.com" ];
|
|
|
|
loginAccounts = {
|
|
|
|
"user1@example.com" = {
|
|
|
|
hashedPassword = "$6$/z4n8AQl6K$kiOkBTWlZfBd7PvF5GsJ8PmPgdZsFGN1jPGZufxxr60PoR0oUsrvzm2oQiflyz5ir9fFJ.d/zKm/NgLXNUsNX/";
|
2017-11-21 16:07:07 +05:00
|
|
|
|
2017-11-22 12:22:43 +05:00
|
|
|
aliases = [
|
|
|
|
"info@example.com"
|
|
|
|
"postmaster@example.com"
|
|
|
|
"postmaster@example2.com"
|
2017-11-21 16:07:07 +05:00
|
|
|
];
|
2017-11-21 16:09:29 +05:00
|
|
|
};
|
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
|
2018-02-28 17:57:08 +05:00
|
|
|
Check out the [Complete Setup Guide](https://github.com/r-raymond/nixos-mailserver/wiki/A-Complete-Setup-Guide) in the project's wiki.
|
2017-11-10 20:57:11 +05:00
|
|
|
|
2017-11-13 18:59:25 +05:00
|
|
|
## How to Backup
|
|
|
|
|
|
|
|
This is really easy. First off you should have a backup of your
|
|
|
|
`configuration.nix` file where you have the server config (but that is already
|
|
|
|
in a git repository right?)
|
|
|
|
|
|
|
|
Next you need to backup `/var/vmail` or whatever you have specified for the
|
|
|
|
option `mailDirectory`. This is where all the mails reside. Good options are a
|
|
|
|
cron job with `rsync` or `scp`. But really anything works, as it is simply a
|
|
|
|
folder with plenty of files in it. If your backup solution does not preserve the
|
|
|
|
owner of the files don't forget to `chown` them to `virtualMail:virtualMail` if you copy
|
|
|
|
them back (or whatever you specified as `vmailUserName`, and `vmailGoupName`).
|
|
|
|
|
|
|
|
Finally you can (optionally) make a backup of `/var/dkim` (or whatever you
|
|
|
|
specified as `dkimKeyDirectory`). If you should lose those don't worry, new ones
|
|
|
|
will be created on the fly. But you will need to repeat step `B)5` and correct
|
|
|
|
all the `dkim` keys.
|
|
|
|
|
|
|
|
## How to Test for Development
|
|
|
|
|
|
|
|
You can test the setup via `nixops`. After installation, do
|
|
|
|
|
|
|
|
```
|
|
|
|
nixops create nixops/single-server.nix nixops/vbox.nix -d mail
|
|
|
|
nixops deploy -d mail
|
|
|
|
nixops info -d mail
|
|
|
|
```
|
|
|
|
|
|
|
|
You can then test the server via e.g. `telnet`. To log into it, use
|
|
|
|
|
|
|
|
```
|
|
|
|
nixops ssh -d mail mailserver
|
|
|
|
```
|
|
|
|
|
|
|
|
To test imap manually use
|
|
|
|
|
|
|
|
```
|
|
|
|
openssl s_client -host mail.example.com -port 143 -starttls imap
|
|
|
|
```
|
2017-11-10 21:16:21 +05:00
|
|
|
|
2017-11-10 20:57:11 +05:00
|
|
|
|
2016-07-21 21:11:43 +05:00
|
|
|
## A Complete Mail Server Without Moving Parts
|
|
|
|
|
|
|
|
### Used Technologies
|
2017-08-12 14:37:54 +05:00
|
|
|
* Nixos
|
|
|
|
* Nixpkgs
|
|
|
|
* Dovecot
|
|
|
|
* Postfix
|
|
|
|
* Rmilter
|
|
|
|
* Rspamd
|
|
|
|
* Clamav
|
|
|
|
* Opendkim
|
|
|
|
* Pam
|
2016-07-21 21:20:56 +05:00
|
|
|
|
|
|
|
### Features
|
2017-11-11 20:15:30 +05:00
|
|
|
* unlimited domain
|
2016-07-25 21:07:49 +05:00
|
|
|
* unlimited mail accounts
|
2016-07-21 21:20:56 +05:00
|
|
|
* unlimited aliases for every mail account
|
|
|
|
* spam and virus checking
|
|
|
|
* dkim signing of outgoing emails
|
2016-07-21 21:42:14 +05:00
|
|
|
* imap (optionally pop3)
|
|
|
|
* startTLS
|
2016-07-21 21:20:56 +05:00
|
|
|
|
|
|
|
### Nonfeatures
|
|
|
|
* moving parts
|
|
|
|
* SQL databases
|
|
|
|
* configurations that need to be made after `nixos-rebuild switch`
|
|
|
|
* complicated storage schemes
|
|
|
|
* webclients / http-servers
|
2017-08-13 17:05:40 +05:00
|
|
|
|
2017-09-03 18:43:37 +05:00
|
|
|
## Contributors
|
|
|
|
* Special thanks to @Infinisil for the module rewrite
|
2017-11-11 20:15:30 +05:00
|
|
|
* Special thanks to @jbboehr for multidomain implementation
|
2017-09-03 18:43:37 +05:00
|
|
|
* @danbst
|
2017-09-13 13:17:04 +05:00
|
|
|
* @phdoerfler
|
2017-11-05 14:57:26 +05:00
|
|
|
* @eqyiel
|
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
|
|
|
|
2017-09-13 17:03:04 +05:00
|
|
|
[logo]: logo/logo.png
|