Smail/backend/utils/validation/sender.go
smail 9be7a6f990
Some checks are pending
Security Checks / security (push) Waiting to run
检查点:保留通知授权开发状态,开始用户分组隔离
2026-09-25 21:19:28 +08:00

41 lines
912 B
Go

package validation
import (
"net/mail"
"strings"
)
func IsAuthorizedSender(address, account string, allowLocalAlias bool, domains []string) bool {
if IsNotificationAddress(address, domains) {
return false
}
address = strings.TrimSpace(address)
parsed, err := mail.ParseAddress(address)
if err != nil || parsed.Address != address {
return false
}
at := strings.LastIndexByte(address, '@')
if at <= 0 || at == len(address)-1 || strings.Contains(address[:at], "@") {
return false
}
domain, err := NormalizeDomain(address[at+1:])
if err != nil {
return false
}
configured := false
for _, candidate := range domains {
normalized, normalizeErr := NormalizeDomain(candidate)
if normalizeErr == nil && domain == normalized {
configured = true
break
}
}
if !configured {
return false
}
return allowLocalAlias || strings.EqualFold(address[:at], strings.TrimSpace(account))
}