at master 1.8 kB view raw
1{ pkgs, lib, ... }: 2 3let 4 certs = import ../common/acme/server/snakeoil-certs.nix; 5 domain = certs.domain; 6in 7{ 8 security.pki.certificateFiles = [ certs.ca.cert ]; 9 10 services.stalwart-mail = { 11 enable = true; 12 settings = { 13 server.hostname = domain; 14 15 certificate."snakeoil" = { 16 cert = "%{file:${certs.${domain}.cert}}%"; 17 private-key = "%{file:${certs.${domain}.key}}%"; 18 }; 19 20 server.tls = { 21 certificate = "snakeoil"; 22 enable = true; 23 implicit = false; 24 }; 25 26 server.listener = { 27 "smtp-submission" = { 28 bind = [ "[::]:587" ]; 29 protocol = "smtp"; 30 }; 31 32 "imap" = { 33 bind = [ "[::]:143" ]; 34 protocol = "imap"; 35 }; 36 37 "http" = { 38 bind = [ "[::]:80" ]; 39 protocol = "http"; 40 }; 41 }; 42 43 session.auth.mechanisms = "[plain]"; 44 session.auth.directory = "'in-memory'"; 45 storage.directory = "in-memory"; 46 47 storage.data = "rocksdb"; 48 storage.fts = "rocksdb"; 49 storage.blob = "rocksdb"; 50 storage.lookup = "rocksdb"; 51 52 session.rcpt.directory = "'in-memory'"; 53 queue.strategy.route = "'local'"; 54 55 store."rocksdb" = { 56 type = "rocksdb"; 57 path = "/var/lib/stalwart-mail/data"; 58 compression = "lz4"; 59 }; 60 61 directory."in-memory" = { 62 type = "memory"; 63 principals = [ 64 { 65 class = "individual"; 66 name = "alice"; 67 secret = "foobar"; 68 email = [ "alice@${domain}" ]; 69 } 70 { 71 class = "individual"; 72 name = "bob"; 73 secret = "foobar"; 74 email = [ "bob@${domain}" ]; 75 } 76 ]; 77 }; 78 }; 79 }; 80 81}