services: Add 'imap4d-service-type'.
* gnu/services/mail.scm (<imap4d-configuration>): New record type. (imap4d-shepherd-service): New procedure. (%default-imap4d-config-file, imap4d-service-type): New variables. * gnu/services/mail.scm (Mail Services): Document it.
This commit is contained in:
parent
d3715a30d1
commit
412e6396bb
|
@ -16559,6 +16559,36 @@ the @code{operating-system}'s @code{user-accounts} in order to deliver
|
||||||
the @code{postmaster} mail to @code{bob} (which subsequently would
|
the @code{postmaster} mail to @code{bob} (which subsequently would
|
||||||
deliver mail to @code{bob@@example.com} and @code{bob@@example2.com}).
|
deliver mail to @code{bob@@example.com} and @code{bob@@example2.com}).
|
||||||
|
|
||||||
|
@subsubheading GNU Mailutils IMAP4 Daemon
|
||||||
|
@cindex GNU Mailutils IMAP4 Daemon
|
||||||
|
|
||||||
|
@deffn {Scheme Variable} imap4d-service-type
|
||||||
|
This is the type of the GNU Mailutils IMAP4 Daemon (@pxref{(mailutils)
|
||||||
|
imap4d}), whose value should be an @code{imap4d-configuration} object as in
|
||||||
|
this example:
|
||||||
|
|
||||||
|
@example
|
||||||
|
(service imap4d-service-type
|
||||||
|
(imap4d-configuration
|
||||||
|
(config-file (local-file "imap4d.conf"))))
|
||||||
|
@end example
|
||||||
|
@end deffn
|
||||||
|
|
||||||
|
@deftp {Data Type} imap4d-configuration
|
||||||
|
Data type representing the configuration of @command{imap4d}.
|
||||||
|
|
||||||
|
@table @asis
|
||||||
|
@item @code{package} (default: @code{mailutils})
|
||||||
|
The package that provides @command{imap4d}.
|
||||||
|
|
||||||
|
@item @code{config-file} (default: @code{%default-imap4d-config-file})
|
||||||
|
File-like object of the configuration file to use, by default it will listen
|
||||||
|
on the tcp port 143 of @code{localhost}. @xref{(mailutils) Conf-imap4d} for
|
||||||
|
details.
|
||||||
|
|
||||||
|
@end table
|
||||||
|
@end deftp
|
||||||
|
|
||||||
@node Messaging Services
|
@node Messaging Services
|
||||||
@subsection Messaging Services
|
@subsection Messaging Services
|
||||||
|
|
||||||
|
|
|
@ -64,7 +64,12 @@
|
||||||
exim-configuration
|
exim-configuration
|
||||||
exim-configuration?
|
exim-configuration?
|
||||||
exim-service-type
|
exim-service-type
|
||||||
%default-exim-config-file))
|
%default-exim-config-file
|
||||||
|
|
||||||
|
imap4d-configuration
|
||||||
|
imap4d-configuration?
|
||||||
|
imap4d-service-type
|
||||||
|
%defualt-imap4d-config-file))
|
||||||
|
|
||||||
;;; Commentary:
|
;;; Commentary:
|
||||||
;;;
|
;;;
|
||||||
|
@ -1776,3 +1781,41 @@ exim_group = exim
|
||||||
(service-extension activation-service-type exim-activation)
|
(service-extension activation-service-type exim-activation)
|
||||||
(service-extension profile-service-type exim-profile)
|
(service-extension profile-service-type exim-profile)
|
||||||
(service-extension mail-aliases-service-type (const '()))))))
|
(service-extension mail-aliases-service-type (const '()))))))
|
||||||
|
|
||||||
|
|
||||||
|
;;;
|
||||||
|
;;; GNU Mailutils IMAP4 Daemon.
|
||||||
|
;;;
|
||||||
|
|
||||||
|
(define %default-imap4d-config-file
|
||||||
|
(plain-file "imap4d.conf" "server localhost {};\n"))
|
||||||
|
|
||||||
|
(define-record-type* <imap4d-configuration>
|
||||||
|
imap4d-configuration make-imap4d-configuration imap4d-configuration?
|
||||||
|
(package imap4d-configuration-package
|
||||||
|
(default mailutils))
|
||||||
|
(config-file imap4d-configuration-config-file
|
||||||
|
(default %default-imap4d-config-file)))
|
||||||
|
|
||||||
|
(define imap4d-shepherd-service
|
||||||
|
(match-lambda
|
||||||
|
(($ <imap4d-configuration> package config-file)
|
||||||
|
(list (shepherd-service
|
||||||
|
(provision '(imap4d))
|
||||||
|
(requirement '(networking syslogd))
|
||||||
|
(documentation "Run the imap4d daemon.")
|
||||||
|
(start (let ((imap4d (file-append package "/sbin/imap4d")))
|
||||||
|
#~(make-forkexec-constructor
|
||||||
|
(list #$imap4d "--daemon" "--foreground"
|
||||||
|
"--config-file" #$config-file))))
|
||||||
|
(stop #~(make-kill-destructor)))))))
|
||||||
|
|
||||||
|
(define imap4d-service-type
|
||||||
|
(service-type
|
||||||
|
(name 'imap4d)
|
||||||
|
(description
|
||||||
|
"Run the GNU @command{imap4d} to serve e-mail messages through IMAP.")
|
||||||
|
(extensions
|
||||||
|
(list (service-extension
|
||||||
|
shepherd-root-service-type imap4d-shepherd-service)))
|
||||||
|
(default-value (imap4d-configuration))))
|
||||||
|
|
Loading…
Reference in New Issue