From bcfe0f0c1e9a2b91049d7c6c591c7f0c6a002c14 Mon Sep 17 00:00:00 2001 From: Alexey Abramov Date: Tue, 8 Sep 2020 15:53:42 +0200 Subject: services: dovecot: Use modules via symlink to system profile. * gnu/services/mail.scm (%dovecot-activation): Link the location with multiple plugins (dovecot-pigeonhole, etc), to a place where dovecot can find them. * gnu/services/mail.scm (dovecot-configuration): Use the symlink. Signed-off-by: Tobias Geerinckx-Rice --- doc/guix.texi | 3 ++- gnu/services/mail.scm | 13 ++++++++++--- 2 files changed, 12 insertions(+), 4 deletions(-) diff --git a/doc/guix.texi b/doc/guix.texi index 1d6782e6fa..cfd90471f7 100644 --- a/doc/guix.texi +++ b/doc/guix.texi @@ -18615,7 +18615,8 @@ Defaults to @samp{"/var/run/dovecot/auth-userdb"}. @deftypevr {@code{dovecot-configuration} parameter} file-name mail-plugin-dir Directory where to look up mail plugins. -Defaults to @samp{"/usr/lib/dovecot"}. +Defaults to @samp{"/etc/dovecot/modules"}, a union of all enabled mail +plugins. @end deftypevr @deftypevr {@code{dovecot-configuration} parameter} space-separated-string-list mail-plugins diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm index cfcaf4601b..c3ecbb394b 100644 --- a/gnu/services/mail.scm +++ b/gnu/services/mail.scm @@ -1044,8 +1044,10 @@ directories are prefixed with the chroot directory, append \"/.\" to This is used by imap (for shared users) and lda.") (mail-plugin-dir - (file-name "/usr/lib/dovecot") - "Directory where to look up mail plugins.") + (file-name "/etc/dovecot/modules") + "Directory where to look up mail plugins. +Defaults to @samp{\"/etc/dovecot/modules\"}, a union of all enabled mail +plugins.") (mail-plugins (space-separated-string-list '()) @@ -1519,13 +1521,18 @@ greyed out, instead of only later giving \"not selectable\" popup error. (else (format (current-error-port) "Failed to create public key at ~a.\n" public-key))))) - (let ((user (getpwnam "dovecot"))) + (let ((user (getpwnam "dovecot")) + ;; This is Dovecot's term for the base directory for + ;; dynamically loadable modules. It supports only one. + (moduledir "/etc/dovecot/modules")) (mkdir-p/perms "/var/run/dovecot" user #o755) (mkdir-p/perms "/var/lib/dovecot" user #o755) (mkdir-p/perms "/etc/dovecot" user #o755) (copy-file #$(plain-file "dovecot.conf" config-str) "/etc/dovecot/dovecot.conf") (mkdir-p/perms "/etc/dovecot/private" user #o700) + (unless (file-exists? moduledir) + (symlink "/run/current-system/profile/lib/dovecot" moduledir)) (create-self-signed-certificate-if-absent #:private-key "/etc/dovecot/private/default.pem" #:public-key "/etc/dovecot/default.pem" -- cgit v1.2.3