From fa44d7a92c1753ddddf51e29525e12ca6d057155 Mon Sep 17 00:00:00 2001 From: Vivien Kraus Date: Sun, 27 Dec 2020 15:47:38 +0100 Subject: Add the dkim out proxy service This service signs all inbound emails and relays them without question. --- .guix-channel | 6 ++++ guix/vkraus/services/dkim-out-proxy.scm | 57 +++++++++++++++++++++++++++++++++ 2 files changed, 63 insertions(+) create mode 100644 .guix-channel create mode 100644 guix/vkraus/services/dkim-out-proxy.scm diff --git a/.guix-channel b/.guix-channel new file mode 100644 index 0000000..8e7197b --- /dev/null +++ b/.guix-channel @@ -0,0 +1,6 @@ +(channel + (version 0) + (directory "guix")) +;; Local Variables: +;; mode: scheme +;; End: diff --git a/guix/vkraus/services/dkim-out-proxy.scm b/guix/vkraus/services/dkim-out-proxy.scm new file mode 100644 index 0000000..999d65d --- /dev/null +++ b/guix/vkraus/services/dkim-out-proxy.scm @@ -0,0 +1,57 @@ +(define-module (vkraus services dkim-out-proxy) + #:use-module (gnu services) + #:use-module (gnu services shepherd) + #:use-module (guix gexp) + #:use-module (guix modules) + #:use-module (guix records) + #:use-module (gnu packages mail) + #:use-module (ice-9 match) + #:use-module (ice-9 optargs)) + +(define-record-type* + dkim-out-proxy-configuration + make-dkim-out-proxy-configuration + dkim-out-proxy-configuration? + (dkimproxy dkim-out-proxy-configuration-dkimproxy (default dkimproxy)) + (input-port dkim-out-proxy-configuration-input-port) + (output-port dkim-out-proxy-configuration-output-port) + (domain dkim-out-proxy-configuration-domain) + (keyfile dkim-out-proxy-configuration-keyfile)) + +(export + dkim-out-proxy-configuration + make-dkim-out-proxy-configuration + dkim-out-proxy-configuration? + dkim-out-proxy-configuration-dkimproxy + dkim-out-proxy-configuration-input-port + dkim-out-proxy-configuration-output-port + dkim-out-proxy-configuration-domain + dkim-out-proxy-configuration-keyfile) + +(define dkim-out-proxy-shepherd-service + (match-lambda + (($ + dkimproxy input-port output-port domain keyfile) + (list + (shepherd-service + (provision '(dkim-out)) + (documentation "Run the dkim out proxy") + (requirement '(user-processes loopback syslogd)) + (start + #~(make-forkexec-constructor + (list + (string-append #$dkimproxy "/bin/dkimproxy.out") + (string-append "--listen=localhost:" #$input-port) + (string-append "--relay=localhost:" #$output-port) + (string-append "--domain=" #$domain) + (string-append "--keyfile=" #$keyfile) + "--selector=*"))) + (stop #~(make-kill-destructor))))))) + +(define-public dkim-out-proxy-service-type + (service-type (name 'dkim-out-proxy) + (extensions + (list + (service-extension + shepherd-root-service-type + dkim-out-proxy-shepherd-service))))) -- cgit v1.2.3