blob: 4321234e38d83a47efe80ec179affdd0f2117aae (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
|
{
pkgs,
nixpkgs-unstable,
unstable,
config,
...
}: {
disabledModules = ["services/mail/stalwart-mail.nix"];
imports = [
"${nixpkgs-unstable}/nixos/modules/services/mail/stalwart-mail.nix"
];
secrets.stalwart-env = {
file = ./secrets/stalwart-env.age;
mode = "444";
};
systemd.services.stalwart-mail.serviceConfig = {
EnvironmentFile = config.age.secrets.stalwart-env.path;
};
users.users.stalwart-mail.extraGroups = ["acme"];
services.stalwart-mail = {
enable = true;
package = unstable.stalwart-mail;
openFirewall = true;
settings = {
certificate.default = {
cert = "%{file:/var/lib/acme/mail.m4siri.com/fullchain.pem}%";
private-key = "%{file:/var/lib/acme/mail.m4siri.com/key.pem}%";
default = true;
};
http.url = "protocol + '://' + config_get('server.hostname')";
tracer.stdout = {
level = "trace";
};
server = {
hostname = "mail.m4siri.com";
tls = {
implicit = false;
};
auto-ban = {
auth.rate = "100/1d";
};
listener = {
smtp = {
protocol = "smtp";
bind = "[::]:25";
};
submissions = {
bind = "[::]:465";
protocol = "smtp";
tls.implicit = true;
};
submission = {
bind = "[::]:587";
protocol = "smtp";
tls.implicit = true;
};
pop3 = {
bind = "[::]:110";
protocol = "pop3";
};
pop3s = {
bind = "[::]:995";
protocol = "pop3";
tls.implicit = true;
};
imap = {
bind = "[::]:143";
protocol = "imap";
};
imaps = {
bind = "[::]:993";
protocol = "imap";
tls.implicit = true;
};
http = {
bind = ["127.0.0.1:8080"];
protocol = "http";
};
https = {
bind = ["127.0.0.1:1443"];
protocol = "http";
tls.implicit = true;
};
jmap = {
bind = ["127.0.0.1:1443"];
protocol = "http";
tls.implicit = true;
};
sieve = {
bind = "[::]:4190";
protocol = "managesieve";
};
};
};
storage.blob = "rocksdb";
storage.data = "rocksdb";
storage.directory = "ldap";
storage.fts = "rocksdb";
store = {
"rocksdb" = {
compression = "lz4";
path = "/var/lib/stalwart-mail/data";
type = "rocksdb";
};
};
authentication.fallback-admin = {
user = "fallback-admin";
secret = "%{env:STALWART_ADMIN_PW}%";
};
directory.ldap = {
type = "ldap";
url = "ldap://localhost:389";
timeout = "30s";
base-dn = "dc=m4siri,dc=com";
tls.enable = false;
bind = {
dn = "cn=searchuser,ou=users,dc=m4siri,dc=com";
secret = "%{env:STALWART_SEARCH_PW}%";
auth = {
method = "template";
template = "uid={local},ou=users,dc=m4siri,dc=com";
search = true;
};
};
filter = {
name = "(&(objectClass=inetOrgPerson)(|(mail=?)(uid=?)))";
email = "(&(objectClass=inetLocalMailRecipient)(|(mail=?)(mailLocalAddress=?)))";
};
attributes = {
name = "uid";
secret = "userPassword";
email = "mail";
email-alias = "mailLocalAddress";
};
};
};
};
}
|