services: opensmtpd: Add logging to a file.

* gnu/services/mail.scm (opensmtpd-configuration): Add log-file field.
(opensmtpd-shepherd-service)[start]: Add a command line flag to not
daemonize. Drop #:pid-file. Add #:log-file.
* doc/guix.texi (Mail Services): Document the additional parameter.

Change-Id: I485e040d680ccb39fa62e49d2e6ea916f047972c
Signed-off-by: Andreas Enge <andreas@enge.fr>
This commit is contained in:
Felix Lechner 2025-04-08 14:32:27 -07:00 committed by Andreas Enge
parent 07c9a42731
commit 6036f1f305
No known key found for this signature in database
GPG key ID: F7D5C9BF765C61E3
2 changed files with 10 additions and 3 deletions

View file

@ -29219,6 +29219,10 @@ it listens on the loopback network interface, and allows for mail from
users and daemons on the local machine, as well as permitting email to users and daemons on the local machine, as well as permitting email to
remote servers. Run @command{man smtpd.conf} for more information. remote servers. Run @command{man smtpd.conf} for more information.
@item @code{log-file} (default: @code{"/var/log/mail.log"})
The file location for the OpenSMTPD log file. Logging occurs in the
foreground via the Shepherd, i.e. OpenSMTPD does not detach.
@item @code{setgid-commands?} (default: @code{#t}) @item @code{setgid-commands?} (default: @code{#t})
Make the following commands setgid to @code{smtpq} so they can be Make the following commands setgid to @code{smtpq} so they can be
executed: @command{smtpctl}, @command{sendmail}, @command{send-mail}, executed: @command{smtpctl}, @command{sendmail}, @command{send-mail},

View file

@ -8,6 +8,7 @@
;;; Copyright © 2023 Thomas Ieong <th.ieong@free.fr> ;;; Copyright © 2023 Thomas Ieong <th.ieong@free.fr>
;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi> ;;; Copyright © 2023 Saku Laesvuori <saku@laesvuori.fi>
;;; Copyright © 2024 Juliana Sims <juli@incana.org> ;;; Copyright © 2024 Juliana Sims <juli@incana.org>
;;; Copyright © 2025 Felix Lechner <felix.lechner@lease-up.com>
;;; ;;;
;;; This file is part of GNU Guix. ;;; This file is part of GNU Guix.
;;; ;;;
@ -1719,6 +1720,8 @@ by @code{dovecot-configuration}. @var{config} may also be created by
(default '())) ; list of symbols (default '())) ; list of symbols
(config-file opensmtpd-configuration-config-file (config-file opensmtpd-configuration-config-file
(default %default-opensmtpd-config-file)) (default %default-opensmtpd-config-file))
(log-file opensmtpd-configuration-log-file
(default "/var/log/mail.log"))
(setgid-commands? opensmtpd-setgid-commands? (default #t))) (setgid-commands? opensmtpd-setgid-commands? (default #t)))
(define %default-opensmtpd-config-file (define %default-opensmtpd-config-file
@ -1734,15 +1737,15 @@ match from local for any action outbound
(define (opensmtpd-shepherd-service config) (define (opensmtpd-shepherd-service config)
(match-record config <opensmtpd-configuration> (match-record config <opensmtpd-configuration>
(package config-file shepherd-requirement) (package config-file log-file shepherd-requirement)
(list (shepherd-service (list (shepherd-service
(provision '(smtpd)) (provision '(smtpd))
(requirement `(pam loopback ,@shepherd-requirement)) (requirement `(pam loopback ,@shepherd-requirement))
(documentation "Run the OpenSMTPD daemon.") (documentation "Run the OpenSMTPD daemon.")
(start (let ((smtpd (file-append package "/sbin/smtpd"))) (start (let ((smtpd (file-append package "/sbin/smtpd")))
#~(make-forkexec-constructor #~(make-forkexec-constructor
(list #$smtpd "-f" #$config-file) (list #$smtpd "-d" "-f" #$config-file)
#:pid-file "/var/run/smtpd.pid"))) #:log-file #$log-file)))
(stop #~(make-kill-destructor)))))) (stop #~(make-kill-destructor))))))
(define %opensmtpd-accounts (define %opensmtpd-accounts