Add mail service config
This commit is contained in:
parent
c21cc486e5
commit
27f1e8299b
1 changed files with 54 additions and 0 deletions
54
config/mail.scm
Normal file
54
config/mail.scm
Normal file
|
@ -0,0 +1,54 @@
|
|||
(define-module (config mail)
|
||||
#:use-module (gnu packages mail)
|
||||
#:use-module (gnu services mail)
|
||||
#:use-module (guix gexp)
|
||||
#:use-module (gnu services)
|
||||
#:use-module (services dkim-key)
|
||||
#:export (mail-services))
|
||||
|
||||
(define* (opensmtpd-config #:key interface domain aliases dkim-selector)
|
||||
(define (format-aliases aliases)
|
||||
(string-append (format #f "~:{~a: ~a\n~}\n"
|
||||
(cons* '("MAILER-DAEMON" "postmaster")
|
||||
'("postmaster" "root")
|
||||
'("hostmaster" "root")
|
||||
'("webmaster" "root")
|
||||
'("abuse" "root")
|
||||
'("security" "root")
|
||||
aliases))))
|
||||
|
||||
(mixed-text-file "smtpd.conf" "\
|
||||
smtp max-message-size \"1G\"
|
||||
table aliases file:" (mixed-text-file "aliases" (format-aliases aliases)) "
|
||||
|
||||
pki " domain " cert \"/etc/letsencrypt/live/" domain "/fullchain.pem\"
|
||||
pki " domain " key \"/etc/letsencrypt/live/" domain "/privkey.pem\"
|
||||
|
||||
filter \"dkimsign\" proc-exec \""
|
||||
(file-append opensmtpd-filter-dkimsign "/libexec/opensmtpd/filter-dkimsign")
|
||||
" -d " domain " -s " dkim-selector " -k /etc/dkim/" domain ".key\"
|
||||
|
||||
listen on lo port submission mask-src filter \"dkimsign\"
|
||||
listen on " interface " tls pki " domain "
|
||||
listen on " interface " port submission tls-require pki " domain " auth mask-src filter \"dkimsign\"
|
||||
|
||||
action \"deliver\" maildir \"%{user.directory}/mail\" alias <aliases>
|
||||
action \"relay\" relay
|
||||
|
||||
match from any for domain \"" domain "\" action \"deliver\"
|
||||
match from any auth for any action \"relay\"
|
||||
"))
|
||||
|
||||
(define* (mail-services #:key interface domain aliases dkim-selector)
|
||||
(list (service dkim-key-service-type
|
||||
(dkim-key-configuration
|
||||
(domain domain)
|
||||
(selector dkim-selector)))
|
||||
|
||||
(service opensmtpd-service-type
|
||||
(opensmtpd-configuration
|
||||
(config-file
|
||||
(opensmtpd-config #:interface interface
|
||||
#:domain domain
|
||||
#:aliases aliases
|
||||
#:dkim-selector dkim-selector))))))
|
Loading…
Add table
Add a link
Reference in a new issue