Fix two typos in log messages.
[mailpopbox.git] / config.go
1 // mailpopbox
2 // Copyright 2020 Blue Static <https://www.bluestatic.org>
3 // This program is free software licensed under the GNU General Public License,
4 // version 3.0. The full text of the license can be found in LICENSE.txt.
5 // SPDX-License-Identifier: GPL-3.0-only
6
7 package main
8
9 import (
10 "crypto/tls"
11 )
12
13 type Config struct {
14 SMTPPort int
15 POP3Port int
16
17 // Hostname is the name of the MX server that is running.
18 Hostname string
19
20 Servers []Server
21 }
22
23 const MailboxAccount = "mailbox@"
24
25 type Server struct {
26 // Domain is the second component of a mail address: <local-part@domain.com>.
27 Domain string
28
29 TLSKeyPath string
30 TLSCertPath string
31
32 // Password for the POP3 mailbox user, mailbox@domain.com.
33 MailboxPassword string
34
35 // Location to store the mail messages.
36 MaildropPath string
37
38 // Blacklisted addresses that should not accept mail.
39 BlacklistedAddresses []string
40 }
41
42 func (c Config) GetTLSConfig() (*tls.Config, error) {
43 certs := make([]tls.Certificate, 0, len(c.Servers))
44 for _, server := range c.Servers {
45 if server.TLSCertPath == "" {
46 continue
47 }
48
49 cert, err := tls.LoadX509KeyPair(server.TLSCertPath, server.TLSKeyPath)
50 if err != nil {
51 return nil, err
52 }
53 certs = append(certs, cert)
54 }
55
56 if len(certs) == 0 {
57 return nil, nil
58 }
59
60 config := &tls.Config{
61 Certificates: certs,
62 }
63 config.BuildNameToCertificate()
64 return config, nil
65 }