summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRicardo Wurmus <rekado@elephly.net>2023-09-07 21:31:20 +0200
committerRicardo Wurmus <rekado@elephly.net>2023-09-07 21:31:20 +0200
commit16d3fc8365f217091d5e1adfff7263d5c666c6d3 (patch)
tree9e51d49e1a6bd7a1223916ad7da7e51651fab3e5
parentb2b364298ce95936b7ec90d572a4a0f310f784de (diff)
services: postfix: Extend setuid-program-service-type.
* gnu/services/mail.scm (postfix-service-type): Set gid of postfix executables.
-rw-r--r--gnu/services/mail.scm39
1 files changed, 35 insertions, 4 deletions
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index 93987ebd69..0e6103c8d1 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -94,6 +94,7 @@
postfix-configuration-data-directory
postfix-configuration-user
postfix-configuration-group
+ postfix-configuration-setgid-commands?
postfix-service-type))
@@ -2025,6 +2026,7 @@ hosts = localhost:5232"))
(default "/var/lib/postfix"))
(meta-directory postfix-configuration-meta-directory
(default #f))
+ (setgid-commands? postfix-configuration-setgid-commands? (default #t))
(user postfix-configuration-user
(default "postfix"))
(group postfix-configuration-group
@@ -2135,12 +2137,41 @@ inet_protocols = ipv4
(start (postfix-action "start"))
(stop (postfix-action "stop")))))))
+(define (postfix-set-gids config)
+ (match-record config <postfix-configuration>
+ (postfix setgid-commands? group)
+ (if setgid-commands?
+ (list
+ (setuid-program
+ (program (file-append postfix "/bin/mailq"))
+ (setuid? #false)
+ (setgid? #true)
+ (group group))
+ (setuid-program
+ (program (file-append postfix "/bin/sendmail"))
+ (setuid? #false)
+ (setgid? #true)
+ (group group))
+ (setuid-program
+ (program (file-append postfix "/sbin/postqueue"))
+ (setuid? #false)
+ (setgid? #true)
+ (group group))
+ (setuid-program
+ (program (file-append postfix "/sbin/postdrop"))
+ (setuid? #false)
+ (setgid? #true)
+ (group group)))
+ '())))
+
(define postfix-service-type
(service-type
(name 'postfix)
- (extensions (list (service-extension account-service-type postfix-accounts)
- (service-extension activation-service-type postfix-activation)
- (service-extension shepherd-root-service-type postfix-shepherd-service)
- (service-extension mail-aliases-service-type (const '()))))
+ (extensions
+ (list (service-extension account-service-type postfix-accounts)
+ (service-extension activation-service-type postfix-activation)
+ (service-extension shepherd-root-service-type postfix-shepherd-service)
+ (service-extension mail-aliases-service-type (const '()))
+ (service-extension setuid-program-service-type postfix-set-gids)))
(description "Run the Postfix MTA.")
(default-value (postfix-configuration))))