Subject: [bug#42899] [PATCH v4 6/8] services: dovecot: Add 'imap-metadata?' protocol configuration option.

From: Alexey Abramov <[email-masked]>
Date: Tue, 8 Sep 2020 15:53:46 +0200

* gnu/services/mail.scm (protocol-configuration): Define the option to be able
  to activate the IMAP METADATA commands over the imap protocol.
* doc/guix.texi (Mail Services): Document it.
---
 doc/guix.texi         | 11 +++++++++++
 gnu/services/mail.scm |  8 +++++++-
 2 files changed, 18 insertions(+), 1 deletion(-)

diff --git a/doc/guix.texi b/doc/guix.texi
index 6d6912febf..e5c1d9d2f2 100644
--- a/doc/guix.texi
+++ b/doc/guix.texi
@@ -17793,6 +17793,17 @@ This is used by imap (for shared users) and lda.
 It defaults to @samp{"/var/run/dovecot/auth-userdb"}.
 @end deftypevr
 
+@deftypevr {@code{protocol-configuration} parameter} boolean imap-metadata?
+Activate the commands of @code{IMAP METADATA} extension
+@uref{https://tools.ietf.org/html/rfc5464,RFC@tie{}5464}.
+
+If activated, a dictionary needs to be configured, via the
+@code{mail-attribute-dict} setting.
+
+Defaults to @samp{#f}.
+
+@end deftypevr
+
 @deftypevr {@code{protocol-configuration} parameter} space-separated-string-list mail-plugins
 Space separated list of plugins to load.
 @end deftypevr
diff --git a/gnu/services/mail.scm b/gnu/services/mail.scm
index d8df5c82e4..ee710303e7 100644
--- a/gnu/services/mail.scm
+++ b/gnu/services/mail.scm
@@ -348,7 +348,13 @@ This is used by imap (for shared users) and lda.")
   (mail-max-userip-connections
    (non-negative-integer 10)
    "Maximum number of IMAP connections allowed for a user from each IP
-address.  NOTE: The username is compared case-sensitively."))
+address.  NOTE: The username is compared case-sensitively.")
+  (imap-metadata?
+   (boolean #f)
+   "Activate the commands of @code{IMAP METADATA} extension
+@uref{https://tools.ietf.org/html/rfc5464, RFC@tie{}5464}. If activated, a
+dictionary needs to be configured, via the @code{mail-attribute-dict}
+setting."))
 
 (define (serialize-protocol-configuration field-name val)
   (format #t "protocol ~a {\n" (protocol-configuration-name val))
-- 
2.28.0