mirror of
https://github.com/decke/smtprelay.git
synced 2025-12-25 07:43:06 -07:00
Adjust SMTP error codes and messages to be aligned with the RFCs
This commit is contained in:
20
main.go
20
main.go
@@ -45,7 +45,7 @@ func connectionChecker(peer smtpd.Peer) error {
|
|||||||
if addr, ok := peer.Addr.(*net.TCPAddr); ok {
|
if addr, ok := peer.Addr.(*net.TCPAddr); ok {
|
||||||
peerIP = net.ParseIP(addr.IP.String())
|
peerIP = net.ParseIP(addr.IP.String())
|
||||||
} else {
|
} else {
|
||||||
return smtpd.Error{Code: 552, Message: "Denied"}
|
return smtpd.Error{Code: 421, Message: "Denied"}
|
||||||
}
|
}
|
||||||
|
|
||||||
nets := strings.Split(*allowedNets, " ")
|
nets := strings.Split(*allowedNets, " ")
|
||||||
@@ -58,7 +58,7 @@ func connectionChecker(peer smtpd.Peer) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return smtpd.Error{Code: 552, Message: "Denied"}
|
return smtpd.Error{Code: 421, Message: "Denied"}
|
||||||
}
|
}
|
||||||
|
|
||||||
func senderChecker(peer smtpd.Peer, addr string) error {
|
func senderChecker(peer smtpd.Peer, addr string) error {
|
||||||
@@ -71,7 +71,7 @@ func senderChecker(peer smtpd.Peer, addr string) error {
|
|||||||
if re.MatchString(addr) {
|
if re.MatchString(addr) {
|
||||||
return nil
|
return nil
|
||||||
} else {
|
} else {
|
||||||
return smtpd.Error{Code: 552, Message: "Denied"}
|
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -85,7 +85,7 @@ func recipientChecker(peer smtpd.Peer, addr string) error {
|
|||||||
if re.MatchString(addr) {
|
if re.MatchString(addr) {
|
||||||
return nil
|
return nil
|
||||||
} else {
|
} else {
|
||||||
return smtpd.Error{Code: 552, Message: "Denied"}
|
return smtpd.Error{Code: 451, Message: "Bad recipient address"}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -93,7 +93,7 @@ func authChecker(peer smtpd.Peer, username string, password string) error {
|
|||||||
file, err := os.Open(*allowedUsers)
|
file, err := os.Open(*allowedUsers)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Printf("User file not found %v", err)
|
log.Printf("User file not found %v", err)
|
||||||
return smtpd.Error{Code: 552, Message: "Denied"}
|
return smtpd.Error{Code: 535, Message: "Authentication credentials invalid"}
|
||||||
}
|
}
|
||||||
defer file.Close()
|
defer file.Close()
|
||||||
|
|
||||||
@@ -110,7 +110,7 @@ func authChecker(peer smtpd.Peer, username string, password string) error {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return smtpd.Error{Code: 552, Message: "Denied"}
|
return smtpd.Error{Code: 535, Message: "Authentication credentials invalid"}
|
||||||
}
|
}
|
||||||
|
|
||||||
func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
||||||
@@ -133,13 +133,19 @@ func mailHandler(peer smtpd.Peer, env smtpd.Envelope) error {
|
|||||||
|
|
||||||
log.Printf("delivering using smarthost %s\n", *remoteHost)
|
log.Printf("delivering using smarthost %s\n", *remoteHost)
|
||||||
|
|
||||||
return smtp.SendMail(
|
err := smtp.SendMail(
|
||||||
*remoteHost,
|
*remoteHost,
|
||||||
auth,
|
auth,
|
||||||
env.Sender,
|
env.Sender,
|
||||||
env.Recipients,
|
env.Recipients,
|
||||||
env.Data,
|
env.Data,
|
||||||
)
|
)
|
||||||
|
if err != nil {
|
||||||
|
log.Printf("delivery failed: %v\n", err);
|
||||||
|
return smtpd.Error{Code: 554, Message: "Forwarding failed"}
|
||||||
|
}
|
||||||
|
|
||||||
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
func main() {
|
func main() {
|
||||||
|
|||||||
Reference in New Issue
Block a user