From 2be88bedfb9a3a8fd90191459da2c28e22d62ea1 Mon Sep 17 00:00:00 2001 From: Marek Paśnikowski Date: Mon, 4 May 2026 17:29:17 +0200 Subject: (users id1000): export definitions related to dkimproxy to Sovereign --- users/id1000.scm | 194 +------------------------------------------------------ 1 file changed, 1 insertion(+), 193 deletions(-) (limited to 'users/id1000.scm') 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 - 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 - (($ - - 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 - 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 - (($ - - 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") -- cgit v1.3