services/dkim-key: fix sed invocation and ignore missing file

This commit is contained in:
Timotej Lazar 2023-08-11 17:29:16 +02:00
parent f5b0046658
commit d156ec60de

View file

@ -1,4 +1,5 @@
(define-module (services dkim-key)
#:use-module (gnu packages base)
#:use-module (gnu packages tls)
#:use-module (gnu services)
#:use-module (gnu services shepherd)
@ -28,17 +29,18 @@
(public (string-append #$domain "-" #$selector ".pub")))
(with-directory-excursion #$directory
(unless (file-exists? private)
(let ((openssl #$(file-append openssl "/bin/openssl")))
(let ((openssl #$(file-append openssl "/bin/openssl"))
(sed #$(file-append sed "/bin/sed")))
(system* openssl "genrsa" "-out" private (number->string #$key-length))
(chown private (passwd:uid (getpwnam #$owner)) -1)
(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;"
public)))
(display (format #f "Create a TXT record at ~a._domainkey.~a with the contents of ~a/~a~%"
#$selector #$domain #$directory public)))
(unless (equal? (false-if-exception (readlink key-file)) private)
(delete-file key-file)
(false-if-exception (delete-file key-file))
(symlink private key-file))))))
(define dkim-key-service-type