forked from drew/smtprelay
Move compilation of allowed_sender to ConfigLoad()
This has several benefits: - Configuration errors are caught at startup rather than upon a connection - senderChecker() has less work to do for each connection
This commit is contained in:
16
main.go
16
main.go
@@ -103,26 +103,20 @@ func senderChecker(peer smtpd.Peer, addr string) error {
|
||||
}
|
||||
}
|
||||
|
||||
if *allowedSender == "" {
|
||||
if allowedSender == nil {
|
||||
// Any sender is permitted
|
||||
return nil
|
||||
}
|
||||
|
||||
re, err := regexp.Compile(*allowedSender)
|
||||
if err != nil {
|
||||
log.WithFields(logrus.Fields{
|
||||
"allowed_sender": *allowedSender,
|
||||
}).WithError(err).Warn("allowed_sender pattern invalid")
|
||||
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
||||
}
|
||||
|
||||
if re.MatchString(addr) {
|
||||
if allowedSender.MatchString(addr) {
|
||||
// Permitted by regex
|
||||
return nil
|
||||
}
|
||||
|
||||
log.WithFields(logrus.Fields{
|
||||
"sender_address": addr,
|
||||
"peer": peer.Addr,
|
||||
}).Warn("Sender address not allowed by allowed_sender pattern")
|
||||
}).Warn("sender address not allowed by allowed_sender pattern")
|
||||
return smtpd.Error{Code: 451, Message: "Bad sender address"}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user