From d0b241499fc373bc6043d3ae86e27600ce86d56e Mon Sep 17 00:00:00 2001 From: Mechiel Lukkien Date: Fri, 7 Mar 2025 11:39:24 +0100 Subject: [PATCH] smtpserver: In localserve mode, don't reject messages "From" domain "localhost" if it doesn't resolve to an IP Mox does not look up names from the /etc/hosts file, only through DNS. But "localhost" may not resolve through DNS, or when offline a DNS server may not even be available. We will want deliveries to work in "mox localserve" mode. Found by dstotijn. --- smtpserver/server.go | 6 +++++- 1 file changed, 5 insertions(+), 1 deletion(-) diff --git a/smtpserver/server.go b/smtpserver/server.go index 1cc5c98..6c487a5 100644 --- a/smtpserver/server.go +++ b/smtpserver/server.go @@ -1872,7 +1872,11 @@ func (c *conn) cmdMail(p *parser) { if err != nil { c.log.Infox("temporary reject for temporary mx lookup error", err) xsmtpServerErrorf(codes{smtp.C451LocalErr, smtp.SeNet4Other0}, "cannot verify mx records for mailfrom domain") - } else if !valid { + } else if !valid && !(Localserve && rpath.IPDomain.Domain.ASCII == "localhost") { + // We don't reject for "localhost" in Localserve mode because we only resolve + // through DNS, not an /etc/hosts file, and localhost may not resolve through DNS, + // depending on network environment. + c.log.Info("permanent reject because mailfrom domain does not accept mail") xsmtpUserErrorf(smtp.C550MailboxUnavail, smtp.SePol7SenderHasNullMX27, "mailfrom domain not configured for mail") }