mirror of
https://blitiri.com.ar/repos/chasquid
synced 2025-12-23 15:37:01 +00:00
Only fail if there is no address to listen on at all, regardless of mode
Currently, chasquid exits if any mode (SMTP/submission/submission+tls) has no addresses to listen on. This means that chasquid must be given addresses for all three. While that's generally the expected configuration, there are cases where users may not want to have all three. So this patch replaces that fatal error with a warning, and only makes chasquid exit if there are no addresses to listen on at all.
This commit is contained in:
25
chasquid.go
25
chasquid.go
@@ -149,35 +149,38 @@ func main() {
|
||||
log.Fatalf("Error getting systemd listeners: %v", err)
|
||||
}
|
||||
|
||||
loadAddresses(s, conf.SmtpAddress,
|
||||
naddr := loadAddresses(s, conf.SmtpAddress,
|
||||
systemdLs["smtp"], smtpsrv.ModeSMTP)
|
||||
loadAddresses(s, conf.SubmissionAddress,
|
||||
naddr += loadAddresses(s, conf.SubmissionAddress,
|
||||
systemdLs["submission"], smtpsrv.ModeSubmission)
|
||||
loadAddresses(s, conf.SubmissionOverTlsAddress,
|
||||
naddr += loadAddresses(s, conf.SubmissionOverTlsAddress,
|
||||
systemdLs["submission_tls"], smtpsrv.ModeSubmissionTLS)
|
||||
|
||||
if naddr == 0 {
|
||||
log.Fatalf("No address to listen on")
|
||||
}
|
||||
|
||||
s.ListenAndServe()
|
||||
}
|
||||
|
||||
func loadAddresses(srv *smtpsrv.Server, addrs []string, ls []net.Listener, mode smtpsrv.SocketMode) {
|
||||
// Load addresses.
|
||||
acount := 0
|
||||
func loadAddresses(srv *smtpsrv.Server, addrs []string, ls []net.Listener, mode smtpsrv.SocketMode) int {
|
||||
naddr := 0
|
||||
for _, addr := range addrs {
|
||||
// The "systemd" address indicates we get listeners via systemd.
|
||||
if addr == "systemd" {
|
||||
srv.AddListeners(ls, mode)
|
||||
acount += len(ls)
|
||||
naddr += len(ls)
|
||||
} else {
|
||||
srv.AddAddr(addr, mode)
|
||||
acount++
|
||||
naddr++
|
||||
}
|
||||
}
|
||||
|
||||
if acount == 0 {
|
||||
log.Errorf("No %v addresses/listeners", mode)
|
||||
if naddr == 0 {
|
||||
log.Errorf("Warning: No %v addresses/listeners", mode)
|
||||
log.Errorf("If using systemd, check that you named the sockets")
|
||||
log.Fatalf("Exiting")
|
||||
}
|
||||
return naddr
|
||||
}
|
||||
|
||||
func initMailLog(path string) {
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
smtp_address: ":1025"
|
||||
submission_address: ":1587"
|
||||
submission_over_tls_address: ":1465"
|
||||
monitoring_address: ":1099"
|
||||
|
||||
mail_delivery_agent_bin: "test-mda"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
smtp_address: ":2025"
|
||||
submission_address: ":2587"
|
||||
submission_over_tls_address: ":2465"
|
||||
monitoring_address: ":2099"
|
||||
|
||||
mail_delivery_agent_bin: "test-mda"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
smtp_address: ":1025"
|
||||
submission_address: ":1587"
|
||||
submission_over_tls_address: ":1465"
|
||||
monitoring_address: ":1099"
|
||||
|
||||
mail_delivery_agent_bin: "test-mda"
|
||||
|
||||
@@ -1,6 +1,5 @@
|
||||
smtp_address: ":1025"
|
||||
submission_address: ":1587"
|
||||
submission_over_tls_address: ":1465"
|
||||
monitoring_address: ":1099"
|
||||
|
||||
mail_delivery_agent_bin: "test-mda"
|
||||
|
||||
Reference in New Issue
Block a user