Parameterize smtpd service

Julien LepillerMon Mar 25 22:36:37+0100 2019

5cf4d83

Parameterize smtpd service

modules/config/mail.scm

4141
@yahoo.com.cn
4242
@qq.com"))
4343
44-
(define opensmtpd-conf
44+
(define (opensmtpd-conf interface domain)
4545
  (mixed-text-file "smtpd.conf" "
4646
# This is the smtpd server system-wide configuration file.
4747
# See smtpd.conf(5) for more information.
4848
4949
# My TLS certificate and key
50-
pki lepiller.eu certificate \"/etc/letsencrypt/live/lepiller.eu/fullchain.pem\"
51-
pki lepiller.eu key \"/etc/letsencrypt/live/lepiller.eu/privkey.pem\"
50+
pki lepiller.eu certificate \"/etc/letsencrypt/live/" domain "/fullchain.pem\"
51+
pki lepiller.eu key \"/etc/letsencrypt/live/" domain "/privkey.pem\"
5252
5353
# Edit this file to add more virtual users (passwords are read in that file
5454
# instead of /etc/passwd.

5656
5757
# port 25 is used only for receiving from external servers, and they may start a
5858
# TLS session if the want.
59-
listen on ens18 port 25 tls pki lepiller.eu
59+
listen on " interface " port 25 tls pki lepiller.eu
6060
# For sending messages from outside of this server, you need to authenticate and
6161
# use TLS.
62-
listen on ens18 port 587 tls-require pki lepiller.eu auth <passwd>
62+
listen on " interface " port 587 tls-require pki lepiller.eu auth <passwd>
6363
# On this server, you only need to authenticate on one of the available ports,
6464
# and you may use TLS.
6565
listen on lo port 25 tls pki lepiller.eu auth <passwd>

8787
accept for local alias <aliases> deliver to maildir
8888
"))
8989
90-
(define lepiller-imap-service
90+
(define (lepiller-imap-service domain)
9191
  (service dovecot-service-type
9292
           (dovecot-configuration
9393
	     (mail-location "maildir:~/Maildir")
94-
	     (ssl-cert "</etc/letsencrypt/live/lepiller.eu/fullchain.pem")
95-
	     (ssl-key  "</etc/letsencrypt/live/lepiller.eu/privkey.pem"))))
94+
	     (ssl-cert (string-append
95+
			 "</etc/letsencrypt/live/" domain "/fullchain.pem"))
96+
	     (ssl-key  (string-append
97+
			 "</etc/letsencrypt/live/" domain "/privkey.pem")))))
9698
97-
(define lepiller-smtp-service
99+
(define (lepiller-smtp-service interface domain)
98100
  (service opensmtpd-service-type
99101
	   (opensmtpd-configuration
100-
	     (config-file opensmtpd-conf))))
102+
	     (config-file (opensmtpd-conf interface domain)))))
101103
102-
(define lepiller-mail-services
104+
(define* (lepiller-mail-services #:key interface domain)
103105
  (list
104-
    lepiller-smtp-service
105-
    lepiller-imap-service))
106+
    (lepiller-smtp-service interface domain)
107+
    (lepiller-imap-service domain)))

systems/ene.scm

6161
                   (zones (list lepiller-master-zone
6262
                                ipv4-reverse-master-zone
6363
                                ipv6-reverse-master-zone))))
64-
        (certbot-service `(("courriel.lepiller.eu")
64+
        (certbot-service `(("courriel.lepiller.eu" "smtp.lepiller.eu")
6565
			   ("ene.lepiller.eu" "rennes.lepiller.eu")
6666
			   ("avatar.lepiller.eu")))
6767
	(cat-avatar-generator-service

7373
	    (listen '("443 ssl http2" "[::]:443 ssl http2"))))
7474
        (simple-service 'default-http-server nginx-service-type
7575
          (list (nginx-server-configuration
76-
                  (ssl-certificate "/etc/letsencrypt/live/lepiller.eu/fullchain.pem")
77-
                  (ssl-certificate-key "/etc/letsencrypt/live/lepiller.eu/privkey.pem")
76+
                  (ssl-certificate "/etc/letsencrypt/live/ene.lepiller.eu/fullchain.pem")
77+
                  (ssl-certificate-key "/etc/letsencrypt/live/ene.lepiller.eu/privkey.pem")
7878
                  (listen '("443 ssl http2" "[::]:443 ssl http2"))
7979
                  (server-name '(default))(root "/srv/http/default")))))
80-
      lepiller-mail-services
80+
      (lepiller-mail-services
81+
	#:interface "eth0"
82+
	#:domain "courriel.lepiller.eu")
8183
      (server-services "ene"))))

systems/hermes.scm

8787
                  (ssl-certificate-key "/etc/letsencrypt/live/lepiller.eu/privkey.pem")
8888
                  (listen '("443 ssl http2" "[::]:443 ssl http2"))
8989
                  (server-name '(default))(root "/srv/http/default")))))
90-
      lepiller-mail-services
90+
      (lepiller-mail-services
91+
	#:interface "ens18"
92+
	#:domain "lepiller.eu")
9193
      (server-services "hermes"))))