deliverRelayFailure(server, env, log, rcptTo.Address, "failed to lookup MX records", err)
return
}
- host := mx[0].Host + ":25"
- relayMessageToHost(server, env, sendLog, rcptTo.Address, host)
+ relayMessageToHost(server, env, sendLog, rcptTo.Address, mx[0].Host, "25")
}
}
-func relayMessageToHost(server Server, env Envelope, log *zap.Logger, to, host string) {
+func relayMessageToHost(server Server, env Envelope, log *zap.Logger, to, host, port string) {
from := env.MailFrom.Address
- log = log.With(zap.String("host", host))
+ hostPort := net.JoinHostPort(host, port)
+ log = log.With(zap.String("host", hostPort))
- c, err := smtp.Dial(host)
+ c, err := smtp.Dial(hostPort)
if err != nil {
// TODO - retry, or look at other MX records
deliverRelayFailure(server, env, log, to, "failed to dial host", err)
ID: "ididid",
}
- relayMessageToHost(s, env, zap.NewNop(), env.RcptTo[0].Address, l.Addr().String())
+ host, port, _ := net.SplitHostPort(l.Addr().String())
+ relayMessageToHost(s, env, zap.NewNop(), env.RcptTo[0].Address, host, port)
if len(s.messages) != 1 {
t.Errorf("Expected 1 message to be delivered, got %d", len(s.messages))