services/dkim-key: allow configuring owner for private key

This commit is contained in:
Timotej Lazar 2023-05-11 19:35:14 +02:00
parent c7c0bdb7cb
commit e741cd7bf7

View file

@ -10,14 +10,15 @@
(define-record-type* <dkim-key-configuration> (define-record-type* <dkim-key-configuration>
dkim-key-configuration make-dkim-key-configuration dkim-key-configuration make-dkim-key-configuration
dkim-key-configuration? dkim-key-configuration?
(directory dkim-key-configuration-directory (default "/etc/dkim"))
(owner dkim-key-configuration-owner (default "smtpd"))
(domain dkim-key-configuration-selector (default "")) (domain dkim-key-configuration-selector (default ""))
(selector dkim-key-configuration-selector (default "dkim")) (selector dkim-key-configuration-selector (default "dkim"))
(directory dkim-key-configuration-directory (default "/etc/dkim"))
(key-length dkim-key-configuration-key-length (default 1024))) (key-length dkim-key-configuration-key-length (default 1024)))
(define (dkim-key-activation config) (define (dkim-key-activation config)
(match-record config <dkim-key-configuration> (match-record config <dkim-key-configuration>
(domain directory selector key-length) (directory owner domain selector key-length)
#~(begin #~(begin
(use-modules (guix build utils)) (use-modules (guix build utils))
(mkdir-p #$directory) (mkdir-p #$directory)
@ -29,7 +30,7 @@
(unless (file-exists? private) (unless (file-exists? private)
(let ((openssl #$(file-append openssl "/bin/openssl"))) (let ((openssl #$(file-append openssl "/bin/openssl")))
(system* openssl "genrsa" "-out" private (number->string #$key-length)) (system* openssl "genrsa" "-out" private (number->string #$key-length))
(chown private (passwd:uid (getpwnam "smtpd")) -1) (chown private (passwd:uid (getpwnam #$owner)) -1)
(system* openssl "rsa" "-in" private "-pubout" "-out" public) (system* openssl "rsa" "-in" private "-pubout" "-out" public)
(system* "sed" "-i" (system* "sed" "-i"
"1s/.*/v=DKIM1;p=/;:nl;${s/-----.*//;q;};N;s/\\n//g;b nl;" "1s/.*/v=DKIM1;p=/;:nl;${s/-----.*//;q;};N;s/\\n//g;b nl;"