2023-05-29 16:21:23 +02:00
|
|
|
{ config, inputs, pkgs, ... }:
|
2022-11-03 18:54:15 +01:00
|
|
|
let
|
2023-05-15 10:40:46 +02:00
|
|
|
version = "12.1.0";
|
2022-11-03 19:33:49 +01:00
|
|
|
mailserver-setup = (pkgs.writeScriptBin "mailserver-setup"
|
2022-11-03 18:54:15 +01:00
|
|
|
"${builtins.readFile (pkgs.fetchurl {
|
2023-05-01 14:53:44 +02:00
|
|
|
url = "https://raw.githubusercontent.com/docker-mailserver/docker-mailserver/v${version}/setup.sh";
|
2023-05-15 11:32:11 +02:00
|
|
|
sha256 = "sha256-i5RaupuYo3Bh99/FKbxXKFITO3Ko3LrWPvTD6xPBXzY";
|
2022-11-03 18:54:15 +01:00
|
|
|
})
|
2022-11-03 19:33:49 +01:00
|
|
|
}").overrideAttrs (old: {
|
|
|
|
buildCommand = "${old.buildCommand}\n patchShebangs $out";
|
|
|
|
});
|
2022-11-03 18:54:15 +01:00
|
|
|
in
|
|
|
|
{
|
2023-05-29 19:12:39 +02:00
|
|
|
services.az-telegram-notifications.enable = true;
|
2023-05-16 20:30:59 +02:00
|
|
|
|
|
|
|
age.secrets.dkim2liCh = {
|
2023-05-29 16:21:23 +02:00
|
|
|
file = "${inputs.self}/scrts/dkim_2li.ch.age";
|
2023-05-16 20:30:59 +02:00
|
|
|
mode = "600";
|
|
|
|
owner = "113";
|
|
|
|
group = "115";
|
|
|
|
};
|
|
|
|
age.secrets.dkimZweiliCh = {
|
2023-05-29 16:21:23 +02:00
|
|
|
file = "${inputs.self}/scrts/dkim_zweili.ch.age";
|
2023-05-16 20:30:59 +02:00
|
|
|
mode = "600";
|
|
|
|
owner = "113";
|
|
|
|
group = "115";
|
|
|
|
};
|
|
|
|
|
|
|
|
environment.etc = {
|
|
|
|
"dkim/2li.ch.private" = {
|
|
|
|
enable = true;
|
|
|
|
source = config.age.secrets.dkim2liCh.path;
|
|
|
|
};
|
|
|
|
"dkim/zweili.ch.private" = {
|
|
|
|
enable = true;
|
|
|
|
source = config.age.secrets.dkimZweiliCh.path;
|
|
|
|
};
|
|
|
|
};
|
|
|
|
|
2022-11-03 18:54:15 +01:00
|
|
|
environment.systemPackages = [
|
|
|
|
mailserver-setup
|
|
|
|
];
|
2023-05-29 17:10:15 +02:00
|
|
|
|
|
|
|
services.az-docker.enable = true;
|
|
|
|
|
2022-11-03 18:54:15 +01:00
|
|
|
virtualisation.oci-containers = {
|
|
|
|
backend = "docker";
|
|
|
|
containers."mailserver" = {
|
2023-03-06 14:24:47 +01:00
|
|
|
# https://hub.docker.com/r/mailserver/docker-mailserver/tags
|
2023-05-09 07:03:49 +02:00
|
|
|
image = "docker.io/mailserver/docker-mailserver:${version}";
|
2022-11-03 18:54:15 +01:00
|
|
|
autoStart = true;
|
2022-11-03 18:58:54 +01:00
|
|
|
environmentFiles = [
|
2022-11-04 13:27:35 +01:00
|
|
|
./mailserver.env
|
2022-11-03 18:58:54 +01:00
|
|
|
];
|
2022-11-03 18:54:15 +01:00
|
|
|
ports = [
|
|
|
|
"25:25"
|
|
|
|
"143:143"
|
|
|
|
"465:465"
|
|
|
|
"587:587"
|
|
|
|
"993:993"
|
2023-05-15 15:29:23 +02:00
|
|
|
"11334:11334"
|
2022-11-03 18:54:15 +01:00
|
|
|
];
|
|
|
|
volumes = [
|
|
|
|
"/etc/localtime:/etc/localtime:ro"
|
2023-05-16 20:30:59 +02:00
|
|
|
"/etc/dkim:/etc/dkim:ro"
|
|
|
|
"/etc/static:/etc/static:ro"
|
|
|
|
"/run/agenix:/run/agenix:ro"
|
2022-11-03 18:54:15 +01:00
|
|
|
"/var/lib/acme/mail.zweili.org:/etc/letsencrypt/live/mail.zweili.org:ro"
|
2023-05-15 16:36:20 +02:00
|
|
|
"/var/lib/redis:/var/lib/redis"
|
2022-11-03 18:54:15 +01:00
|
|
|
];
|
|
|
|
extraOptions = [
|
|
|
|
''--mount=type=volume,source=maildata,target=/var/mail,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/docker-mailserver/maildata,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
|
|
|
|
''--mount=type=volume,source=mailstate,target=/var/mail-state,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/docker-mailserver/mailstate,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
|
|
|
|
''--mount=type=volume,source=maillogs,target=/var/log/mail,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/docker-mailserver/maillogs,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
|
|
|
|
''--mount=type=volume,source=config,target=/tmp/docker-mailserver,volume-driver=local,volume-opt=type=nfs,volume-opt=device=:/server_data/docker-mailserver/config,"volume-opt=o=addr=10.7.89.108,rw,nfsvers=4.0,nolock,hard,noatime"''
|
|
|
|
"--add-host=host.docker.internal:host-gateway"
|
|
|
|
"--cap-add=NET_ADMIN"
|
|
|
|
"--cap-add=SYS_PTRACE"
|
2023-03-03 17:57:48 +01:00
|
|
|
"--log-opt=tag='mailserver'"
|
2022-11-03 18:54:15 +01:00
|
|
|
];
|
|
|
|
};
|
|
|
|
};
|
|
|
|
}
|