aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix')
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix48
1 files changed, 40 insertions, 8 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix b/infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix
index aacdbe2aeed2..2f9d28195bd8 100644
--- a/infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix
+++ b/infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix
@@ -153,7 +153,7 @@ let
${concatStringsSep "\n" (mapAttrsToList (name: value: let
includeName = if name == "rspamd_proxy" then "proxy" else name;
- tryOverride = if value.extraConfig == "" then "true" else "false";
+ tryOverride = boolToString (value.extraConfig == "");
in ''
worker "${value.type}" {
type = "${value.type}";
@@ -371,6 +371,9 @@ in
};
services.postfix.config = mkIf cfg.postfix.enable cfg.postfix.config;
+ systemd.services.postfix.serviceConfig.SupplementaryGroups =
+ mkIf cfg.postfix.enable [ postfixCfg.group ];
+
# Allow users to run 'rspamc' and 'rspamadm'.
environment.systemPackages = [ pkgs.rspamd ];
@@ -394,21 +397,50 @@ in
restartTriggers = [ rspamdDir ];
serviceConfig = {
- ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} --user=${cfg.user} --group=${cfg.group} --pid=/run/rspamd.pid -c /etc/rspamd/rspamd.conf -f";
+ ExecStart = "${pkgs.rspamd}/bin/rspamd ${optionalString cfg.debug "-d"} -c /etc/rspamd/rspamd.conf -f";
Restart = "always";
+
+ User = "${cfg.user}";
+ Group = "${cfg.group}";
+ SupplementaryGroups = mkIf cfg.postfix.enable [ postfixCfg.group ];
+
RuntimeDirectory = "rspamd";
+ RuntimeDirectoryMode = "0755";
+ StateDirectory = "rspamd";
+ StateDirectoryMode = "0700";
+
+ AmbientCapabilities = [];
+ CapabilityBoundingSet = [];
+ DevicePolicy = "closed";
+ LockPersonality = true;
+ NoNewPrivileges = true;
+ PrivateDevices = true;
+ PrivateMounts = true;
PrivateTmp = true;
+ # we need to chown socket to rspamd-milter
+ PrivateUsers = !cfg.postfix.enable;
+ ProtectClock = true;
+ ProtectControlGroups = true;
+ ProtectHome = true;
+ ProtectHostname = true;
+ ProtectKernelLogs = true;
+ ProtectKernelModules = true;
+ ProtectKernelTunables = true;
+ ProtectSystem = "strict";
+ RemoveIPC = true;
+ RestrictAddressFamilies = [ "AF_INET" "AF_INET6" "AF_UNIX" ];
+ RestrictNamespaces = true;
+ RestrictRealtime = true;
+ RestrictSUIDSGID = true;
+ SystemCallArchitectures = "native";
+ SystemCallFilter = "@system-service";
+ UMask = "0077";
};
-
- preStart = ''
- ${pkgs.coreutils}/bin/mkdir -p /var/lib/rspamd
- ${pkgs.coreutils}/bin/chown ${cfg.user}:${cfg.group} /var/lib/rspamd
- '';
};
};
imports = [
(mkRemovedOptionModule [ "services" "rspamd" "socketActivation" ]
- "Socket activation never worked correctly and could at this time not be fixed and so was removed")
+ "Socket activation never worked correctly and could at this time not be fixed and so was removed")
(mkRenamedOptionModule [ "services" "rspamd" "bindSocket" ] [ "services" "rspamd" "workers" "normal" "bindSockets" ])
(mkRenamedOptionModule [ "services" "rspamd" "bindUISocket" ] [ "services" "rspamd" "workers" "controller" "bindSockets" ])
(mkRemovedOptionModule [ "services" "rmilter" ] "Use services.rspamd.* instead to set up milter service")