Merge pull request #7 from JonathonReinhart/allow-empty-auth-email

Allow email field to be empty in allowedUsers file to accept any sending address
This commit is contained in:
Bernhard Fröhlich
2021-02-09 14:18:06 +01:00
committed by GitHub
3 changed files with 16 additions and 5 deletions

17
auth.go
View File

@@ -28,6 +28,8 @@ func AuthReady() bool {
return (filename != "") return (filename != "")
} }
// Returns bcrypt-hash, email
// email can be empty in which case it is not checked
func AuthFetch(username string) (string, string, error) { func AuthFetch(username string) (string, string, error) {
if !AuthReady() { if !AuthReady() {
return "", "", errors.New("Authentication file not specified. Call LoadFile() first") return "", "", errors.New("Authentication file not specified. Call LoadFile() first")
@@ -43,13 +45,22 @@ func AuthFetch(username string) (string, string, error) {
for scanner.Scan() { for scanner.Scan() {
parts := strings.Fields(scanner.Text()) parts := strings.Fields(scanner.Text())
if len(parts) != 3 { if len(parts) < 2 || len(parts) > 3 {
continue continue
} }
if strings.ToLower(username) == strings.ToLower(parts[0]) { if strings.ToLower(username) != strings.ToLower(parts[0]) {
return parts[1], parts[2], nil continue
} }
hash := parts[1]
email := ""
if len(parts) >= 3 {
email = parts[2]
}
return hash, email, nil
} }
return "", "", errors.New("User not found") return "", "", errors.New("User not found")

View File

@@ -44,7 +44,7 @@ func senderChecker(peer smtpd.Peer, addr string) error {
return smtpd.Error{Code: 451, Message: "Bad sender address"} return smtpd.Error{Code: 451, Message: "Bad sender address"}
} }
if strings.ToLower(addr) != strings.ToLower(email) { if email != "" && strings.ToLower(addr) != strings.ToLower(email) {
return smtpd.Error{Code: 451, Message: "Bad sender address"} return smtpd.Error{Code: 451, Message: "Bad sender address"}
} }
} }

View File

@@ -37,7 +37,7 @@
; File which contains username and password used for ; File which contains username and password used for
; authentication before they can send mail. ; authentication before they can send mail.
; File format: username bcrypt-hash email ; File format: username bcrypt-hash [email]
;allowed_users = ;allowed_users =
; Relay all mails to this SMTP server ; Relay all mails to this SMTP server