summary refs log tree commit diff
path: root/nixos/modules/services/mail/opensmtpd.nix
diff options
context:
space:
mode:
authorJosé Romildo Malaquias <malaquias@gmail.com>2020-06-10 10:08:36 -0300
committerGitHub <noreply@github.com>2020-06-10 15:08:36 +0200
commita421af29e46854fd1327585e269e60d510300024 (patch)
tree766000b04fd562076daa9887028d1dfcc1166aec /nixos/modules/services/mail/opensmtpd.nix
parentfd8892961fe41aaa747a425d17b3dc6cf8a5ddb1 (diff)
downloadnixpkgs-a421af29e46854fd1327585e269e60d510300024.tar
nixpkgs-a421af29e46854fd1327585e269e60d510300024.tar.gz
nixpkgs-a421af29e46854fd1327585e269e60d510300024.tar.bz2
nixpkgs-a421af29e46854fd1327585e269e60d510300024.tar.lz
nixpkgs-a421af29e46854fd1327585e269e60d510300024.tar.xz
nixpkgs-a421af29e46854fd1327585e269e60d510300024.tar.zst
nixpkgs-a421af29e46854fd1327585e269e60d510300024.zip
nixos/opensmtpd: add a setgid wrapper for smtpctl (#89962)
The setgid is currently required for offline enqueuing, and
unfortunately smtpctl is currently not split from sendmail so there's
little running around it.
Diffstat (limited to 'nixos/modules/services/mail/opensmtpd.nix')
-rw-r--r--nixos/modules/services/mail/opensmtpd.nix23
1 files changed, 15 insertions, 8 deletions
diff --git a/nixos/modules/services/mail/opensmtpd.nix b/nixos/modules/services/mail/opensmtpd.nix
index 1fabe2da45c..c838d3b949d 100644
--- a/nixos/modules/services/mail/opensmtpd.nix
+++ b/nixos/modules/services/mail/opensmtpd.nix
@@ -17,6 +17,10 @@ in {
 
   ###### interface
 
+  imports = [
+    (mkRenamedOptionModule [ "services" "opensmtpd" "addSendmailToSystemPath" ] [ "services" "opensmtpd" "setSendmail" ])
+  ];
+
   options = {
 
     services.opensmtpd = {
@@ -34,13 +38,10 @@ in {
         description = "The OpenSMTPD package to use.";
       };
 
-      addSendmailToSystemPath = mkOption {
+      setSendmail = mkOption {
         type = types.bool;
         default = true;
-        description = ''
-          Whether to add OpenSMTPD's sendmail binary to the
-          system path or not.
-        '';
+        description = "Whether to set the system sendmail to OpenSMTPD's.";
       };
 
       extraServerArgs = mkOption {
@@ -82,7 +83,7 @@ in {
 
   ###### implementation
 
-  config = mkIf cfg.enable {
+  config = mkIf cfg.enable rec {
     users.groups = {
       smtpd.gid = config.ids.gids.smtpd;
       smtpq.gid = config.ids.gids.smtpq;
@@ -101,6 +102,14 @@ in {
       };
     };
 
+    security.wrappers.smtpctl = {
+      group = "smtpq";
+      setgid = true;
+      source = "${cfg.package}/bin/smtpctl";
+    };
+
+    services.mail.sendmailSetuidWrapper = mkIf cfg.setSendmail security.wrappers.smtpctl;
+
     systemd.tmpfiles.rules = [
       "d /var/spool/smtpd 711 root - - -"
       "d /var/spool/smtpd/offline 770 root smtpq - -"
@@ -119,7 +128,5 @@ in {
       serviceConfig.ExecStart = "${cfg.package}/sbin/smtpd -d -f ${conf} ${args}";
       environment.OPENSMTPD_PROC_PATH = "${procEnv}/libexec/opensmtpd";
     };
-
-    environment.systemPackages = mkIf cfg.addSendmailToSystemPath [ sendmail ];
   };
 }