summaryrefslogtreecommitdiff
path: root/users/id1000.scm
diff options
context:
space:
mode:
Diffstat (limited to 'users/id1000.scm')
-rw-r--r--users/id1000.scm194
1 files changed, 1 insertions, 193 deletions
diff --git a/users/id1000.scm b/users/id1000.scm
index 3479b32..0da092c 100644
--- a/users/id1000.scm
+++ b/users/id1000.scm
@@ -1,6 +1,6 @@
(define-module (users id1000)
#:use-module (guix gexp)
- #:use-module (ice-9 match)
+ #:use-module (sovereign services mail)
#:use-module ( (gnu home)
#:prefix gnu:home:)
#:use-module ( (gnu home services)
@@ -23,8 +23,6 @@
#:prefix gnu:services:)
#:use-module ( (gnu system accounts)
#:prefix gnu:system:accounts:)
- #:use-module ( (guix records)
- #:prefix guix:records:)
#:use-module ( (sovereign packages emacs)
#:prefix sovereign:packages:emacs:)
#:use-module ( (sovereign services admin)
@@ -34,196 +32,6 @@
#:use-module ( (sovereign systems)
#:prefix sovereign:systems:))
-(guix:records:define-record-type* <dkimproxy-out-signature-configuration>
- dkimproxy-out-signature-configuration
- make-dkimproxy-out-signature-configuration
- dkimproxy-out-signature-configuration?
- (type dkimproxy-out-signature-configuration-type
- (default 'dkim))
- (key dkimproxy-out-signature-configuration-key
- (default #f))
- (algorithm dkimproxy-out-signature-configuration-algorithm
- (default #f))
- (method dkimproxy-out-signature-configuration-method
- (default #f))
- (domain dkimproxy-out-signature-configuration-domain
- (default #f))
- (identity dkimproxy-out-signature-configuration-identity
- (default #f))
- (selector dkimproxy-out-signature-configuration-selector
- (default #f)))
-
-(define-public generate-dkimproxy-out-signature-configuration
- (match-lambda
- (($
- <dkimproxy-out-signature-configuration>
- type
- key
- algorithm
- method
- domain
- identity
- selector )
- (string-append
- (match type
- ('dkim "dkim")
- ('domainkeys "domainkeys"))
- (if (or key algorithm method domain identity selector)
- (string-append
- "("
- (string-join
- `(,@ (if key
- (list (string-append "key=" key))
- '())
- ,@ (if algorithm
- (list (string-append "a=" algorithm))
- '())
- ,@ (if method
- (list (string-append "c=" method))
- '())
- ,@ (if domain
- (list (string-append "d=" domain))
- '())
- ,@ (if identity
- (list (string-append "i=" identity))
- '())
- ,@ (if selector
- (list (string-append "s=" selector))
- '()))
- ",")
- ")")
- "")))))
-
-(guix:records:define-record-type* <dkimproxy-out-configuration>
- dkimproxy-out-configuration
- make-dkimproxy-out-configuration
- dkimproxy-out-configuration?
- (package dkimproxy-out-configuration-package
- (default (@ (gnu packages mail) dkimproxy)))
- (listen dkimproxy-out-configuration-listen
- (default #f))
- (relay dkimproxy-out-configuration-relay
- (default #f))
- (list-id-map dkimproxy-out-configuration-list-id-map
- (default '()))
- (sender-map dkimproxy-out-configuration-sender-map
- (default '()))
- (reject-error? dkimproxy-out-configuration-sender-reject-error?
- (default #f))
- (config-file dkimproxy-out-configuration-config-file
- (default #f)))
-
-(define (generate-map-file config filename)
- (apply
- plain-file
- filename
- (map (lambda (config)
- (match config
- ((selector (config ...))
- (string-append
- selector " "
- (string-join
- (map
- generate-dkimproxy-out-signature-configuration
- config)
- "\n")))
- ((selector config)
- (string-append
- selector " "
- (generate-dkimproxy-out-signature-configuration
- config)))))
- config)))
-
-(define dkimproxy-out-shepherd-service
- (match-lambda
- (($
- <dkimproxy-out-configuration>
- package
- listen
- relay
- list-id-map
- sender-map
- reject-error?
- config-file)
- (list
- ((@ (gnu services shepherd) shepherd-service)
- (provision '(dkimproxy-out))
- (requirement '(loopback))
- (documentation "Outbound DKIM proxy.")
- (start
- (let ((proxy (file-append package "/bin/dkimproxy.out")))
- (if config-file
- #~
- (make-forkexec-constructor
- (list
- #$
- proxy
- (string-append "--conf_file=" #$ config-file)
- "--pidfile=/var/run/dkimproxy.out.pid"
- "--user=dkimproxy" "--group=dkimproxy")
- #:pid-file "/var/run/dkimproxy.out.pid")
- (let*
- ((first-signature
- (match sender-map
- (((sender (signature _ ...)) _ ...) signature)
- (((sender signature) _ ...) signature)))
- (domains
- (apply append
- (map
- (lambda (sender)
- (match sender
- (((domains ...) config) domains)
- ((domain config) domain)))
- sender-map)))
- (sender-map
- (generate-map-file sender-map "sender.map"))
- (listid-map
- (if (null? list-id-map)
- #f
- (generate-map-file list-id-map "listid.map")))
- (keyfile
- (dkimproxy-out-signature-configuration-key
- first-signature))
- (selector
- (dkimproxy-out-signature-configuration-selector
- first-signature))
- (method
- (dkimproxy-out-signature-configuration-method
- first-signature))
- (signature
- (match (dkimproxy-out-signature-configuration-type
- first-signature)
- ('dkim "dkim")
- ('domainkeys "domainkeys"))))
- #~
- (make-forkexec-constructor
- `(,#$
- proxy
- "--pidfile=/var/run/dkimproxy.out.pid"
- "--user=dkimproxy" "--group=dkimproxy"
- ,(string-append "--listen=" #$ listen)
- ,(string-append "--relay=" #$ relay)
- ,(string-append "--sender_map=" #$ sender-map)
- ,@ (if #$ listid-map
- (list
- (string-append "--listid_map=" #$ listid-map))
- '())
- ,(string-append "--domain=" #$ domains)
- ,(string-append "--keyfile=" #$ keyfile)
- ,(string-append "--selector=" #$ selector)
- ,@ (if #$ method
- (list
- (string-append "--method=" #$ method))
- '())
- ,@ (if #$ reject-error?
- '("--reject_error")
- '())
- ,@ (if #$ signature
- (list
- (string-append "--signature=" #$ signature))
- '())))))))
- (stop #~ (make-kill-destructor)))))))
-
(define %dkimproxy-accounts
(list (gnu:system:accounts:user-group
(name "dkimproxy")