Installer: mail-gateway configure downstream smtp server addresses
diff --git a/apps/maddy/auth/main.go b/apps/maddy/auth/main.go
index ab71fdb..6454eb4 100644
--- a/apps/maddy/auth/main.go
+++ b/apps/maddy/auth/main.go
@@ -3,6 +3,7 @@
import (
"bufio"
"crypto/tls"
+ "flag"
"fmt"
"os"
@@ -10,9 +11,23 @@
"github.com/emersion/go-smtp"
)
-var smtpServers = []string{
- "maddy.app-maddy.svc.cluster.local:587",
- "maddy.shveli-app-maddy.svc.cluster.local:587",
+var config = flag.String("config", "/etc/maddy/config/smtp-servers.conf", "Path to the configuration file with downstream SMTP server addresses per line.")
+
+func readConfig(path string) ([]string, error) {
+ inp, err := os.Open(path)
+ if err != nil {
+ return nil, err
+ }
+ defer inp.Close()
+ lines := bufio.NewScanner(inp)
+ ret := make([]string, 0)
+ for lines.Scan() {
+ ret = append(ret, lines.Text())
+ }
+ if err := lines.Err(); err != nil {
+ return nil, err
+ }
+ return ret, nil
}
func auth(server, username, password string) (bool, error) {
@@ -30,6 +45,7 @@
}
func main() {
+ flag.Parse()
inp := bufio.NewReader(os.Stdin)
username, err := inp.ReadString('\n')
if err != nil {
@@ -43,6 +59,11 @@
os.Exit(2)
}
password = password[:len(password)-1]
+ smtpServers, err := readConfig(*config)
+ if err != nil {
+ fmt.Println(err.Error())
+ os.Exit(2)
+ }
for _, s := range smtpServers {
if ok, _ := auth(s, username, password); ok {
os.Exit(0)