diff options
Diffstat (limited to 'modules/postfix-mta-sts-resolver.nix')
| -rw-r--r-- | modules/postfix-mta-sts-resolver.nix | 63 |
1 files changed, 63 insertions, 0 deletions
diff --git a/modules/postfix-mta-sts-resolver.nix b/modules/postfix-mta-sts-resolver.nix new file mode 100644 index 00000000..9e126361 --- /dev/null +++ b/modules/postfix-mta-sts-resolver.nix | |||
| @@ -0,0 +1,63 @@ | |||
| 1 | { config, pkgs, lib, ... }: | ||
| 2 | |||
| 3 | with lib; | ||
| 4 | |||
| 5 | let | ||
| 6 | cfg = config.services.postfix-mta-sts-resolver; | ||
| 7 | in { | ||
| 8 | options = { | ||
| 9 | services.postfix-mta-sts-resolver = { | ||
| 10 | enable = mkEnableOption "mta-sts-daemon"; | ||
| 11 | package = mkPackageOption pkgs "postfix-mta-sts-resolver"; | ||
| 12 | |||
| 13 | redis = mkEnableOption "redis cache" // { default = true; example = false; }; | ||
| 14 | |||
| 15 | settings = mkOption { | ||
| 16 | type = types.attrs; | ||
| 17 | }; | ||
| 18 | }; | ||
| 19 | }; | ||
| 20 | |||
| 21 | config = mkIf cfg.enable { | ||
| 22 | services.postfix-mta-sts-resolver.settings.path = "/run/postfix-mta-sts-resolver/map.sock"; | ||
| 23 | services.postfix-mta-sts-resolver.settings.mode = 432; # 0o0660 | ||
| 24 | |||
| 25 | services.postfix-mta-sts-resolver.settings.cache = mkIf cfg.redis { | ||
| 26 | redis.url = "unix://${toString config.services.redis.servers.postfix-mta-sts-resolver.unixSocket}"; | ||
| 27 | }; | ||
| 28 | |||
| 29 | services.redis.servers.postfix-mta-sts-resolver = mkIf cfg.redis { | ||
| 30 | enable = true; | ||
| 31 | }; | ||
| 32 | |||
| 33 | users.users.postfix-mta-sts-resolver = { | ||
| 34 | isSystemUser = true; | ||
| 35 | group = "postfix-mta-sts-resolver"; | ||
| 36 | }; | ||
| 37 | users.groups.postfix-mta-sts-resolver = { | ||
| 38 | members = ["postfix"]; | ||
| 39 | }; | ||
| 40 | |||
| 41 | systemd.services."postfix-mta-sts-resolver" = { | ||
| 42 | wantedBy = ["postfix.service"]; | ||
| 43 | before = ["postfix.service"]; | ||
| 44 | |||
| 45 | serviceConfig = { | ||
| 46 | ExecStart = "${pkgs.postfix-mta-sts-resolver}/bin/mta-sts-daemon -c ${pkgs.writeText "mta-sts-daemon.yml" (generators.toYAML {} cfg.settings)}"; | ||
| 47 | SupplementaryGroups = mkIf cfg.redis config.services.redis.servers.postfix-mta-sts-resolver.user; | ||
| 48 | RuntimeDirectory = "postfix-mta-sts-resolver"; | ||
| 49 | |||
| 50 | User = "postfix-mta-sts-resolver"; | ||
| 51 | Group = "postfix-mta-sts-resolver"; | ||
| 52 | |||
| 53 | RemoveIPC = true; | ||
| 54 | PrivateTmp = true; | ||
| 55 | NoNewPrivileges = true; | ||
| 56 | RestrictSUIDSGID = true; | ||
| 57 | ProtectSystem = "strict"; | ||
| 58 | ProtectHome = "read-only"; | ||
| 59 | ReadWritePaths = mkIf cfg.redis ["/run/redis-postfix-mta-sts-resolver"]; | ||
| 60 | }; | ||
| 61 | }; | ||
| 62 | }; | ||
| 63 | } | ||
