aboutsummaryrefslogtreecommitdiff
path: root/infra/libkookie/nixpkgs/nixos/modules/services/mail
diff options
context:
space:
mode:
Diffstat (limited to 'infra/libkookie/nixpkgs/nixos/modules/services/mail')
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/services/mail/dovecot.nix2
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/services/mail/freepops.nix89
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/services/mail/postfix.nix12
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/services/mail/roundcube.nix5
-rw-r--r--infra/libkookie/nixpkgs/nixos/modules/services/mail/rspamd.nix48
5 files changed, 52 insertions, 104 deletions
diff --git a/infra/libkookie/nixpkgs/nixos/modules/services/mail/dovecot.nix b/infra/libkookie/nixpkgs/nixos/modules/services/mail/dovecot.nix
index f5c5f795dc1b..03e7e40e388e 100644
--- a/infra/libkookie/nixpkgs/nixos/modules/services/mail/dovecot.nix
+++ b/infra/libkookie/nixpkgs/nixos/modules/services/mail/dovecot.nix
@@ -427,12 +427,12 @@ in
wantedBy = [ "multi-user.target" ];
restartTriggers = [ cfg.configFile modulesDir ];
+ startLimitIntervalSec = 60; # 1 min
serviceConfig = {
ExecStart = "${dovecotPkg}/sbin/dovecot -F";
ExecReload = "${dovecotPkg}/sbin/doveadm reload";
Restart = "on-failure";
RestartSec = "1s";
- StartLimitInterval = "1min";
RuntimeDirectory = [ "dovecot2" ];
};
diff --git a/infra/libkookie/nixpkgs/nixos/modules/services/mail/freepops.nix b/infra/libkookie/nixpkgs/nixos/modules/services/mail/freepops.nix
deleted file mode 100644
index 5b729ca50a5e..000000000000
--- a/infra/libkookie/nixpkgs/nixos/modules/services/mail/freepops.nix
+++ /dev/null
@@ -1,89 +0,0 @@
-{ config, lib, pkgs, ... }:
-
-with lib;
-
-let
- cfg = config.services.mail.freepopsd;
-in
-
-{
- options = {
- services.mail.freepopsd = {
- enable = mkOption {
- default = false;
- type = with types; bool;
- description = ''
- Enables Freepops, a POP3 webmail wrapper.
- '';
- };
-
- port = mkOption {
- default = 2000;
- type = with types; uniq int;
- description = ''
- Port on which the pop server will listen.
- '';
- };
-
- threads = mkOption {
- default = 5;
- type = with types; uniq int;
- description = ''
- Max simultaneous connections.
- '';
- };
-
- bind = mkOption {
- default = "0.0.0.0";
- type = types.str;
- description = ''
- Bind over an IPv4 address instead of any.
- '';
- };
-
- logFile = mkOption {
- default = "/var/log/freepopsd";
- example = "syslog";
- type = types.str;
- description = ''
- Filename of the log file or syslog to rely on the logging daemon.
- '';
- };
-
- suid = {
- user = mkOption {
- default = "nobody";
- type = types.str;
- description = ''
- User name under which freepopsd will be after binding the port.
- '';
- };
-
- group = mkOption {
- default = "nogroup";
- type = types.str;
- description = ''
- Group under which freepopsd will be after binding the port.
- '';
- };
- };
-
- };
- };
-
- config = mkIf cfg.enable {
- systemd.services.freepopsd = {
- description = "Freepopsd (webmail over POP3)";
- after = [ "network.target" ];
- wantedBy = [ "multi-user.target" ];
- script = ''
- ${pkgs.freepops}/bin/freepopsd \
- -p ${toString cfg.port} \
- -t ${toString cfg.threads} \
- -b ${cfg.bind} \
- -vv -l ${cfg.logFile} \
- -s ${cfg.suid.user}.${cfg.suid.group}
- '';
- };
- };
-}
diff --git a/infra/libkookie/nixpkgs/nixos/modules/services/mail/postfix.nix b/infra/libkookie/nixpkgs/nixos/modules/services/mail/postfix.nix
index fd4d16cdc37b..319b3b638444 100644
--- a/infra/libkookie/nixpkgs/nixos/modules/services/mail/postfix.nix
+++ b/infra/libkookie/nixpkgs/nixos/modules/services/mail/postfix.nix
@@ -834,12 +834,6 @@ in
};
services.postfix.masterConfig = {
- smtp_inet = {
- name = "smtp";
- type = "inet";
- private = false;
- command = "smtpd";
- };
pickup = {
private = false;
wakeup = 60;
@@ -921,6 +915,12 @@ in
in concatLists (mapAttrsToList mkKeyVal cfg.submissionOptions);
};
} // optionalAttrs cfg.enableSmtp {
+ smtp_inet = {
+ name = "smtp";
+ type = "inet";
+ private = false;
+ command = "smtpd";
+ };
smtp = {};
relay = {
command = "smtp";
diff --git a/infra/libkookie/nixpkgs/nixos/modules/services/mail/roundcube.nix b/infra/libkookie/nixpkgs/nixos/modules/services/mail/roundcube.nix
index a0bbab64985b..ee7aa7e22fb9 100644
--- a/infra/libkookie/nixpkgs/nixos/modules/services/mail/roundcube.nix
+++ b/infra/libkookie/nixpkgs/nixos/modules/services/mail/roundcube.nix
@@ -204,6 +204,11 @@ in
};
systemd.services.phpfpm-roundcube.after = [ "roundcube-setup.service" ];
+ # Restart on config changes.
+ systemd.services.phpfpm-roundcube.restartTriggers = [
+ config.environment.etc."roundcube/config.inc.php".source
+ ];
+
systemd.services.roundcube-setup = mkMerge [
(mkIf (cfg.database.host == "localhost") {
requires = [ "postgresql.service" ];
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")