do not perform MX and SMTP checks at all when they are disabled
This commit is contained in:
2
go.mod
2
go.mod
@@ -20,7 +20,7 @@ require (
|
|||||||
gitlab.com/etke.cc/go/mxidwc v1.0.0
|
gitlab.com/etke.cc/go/mxidwc v1.0.0
|
||||||
gitlab.com/etke.cc/go/secgen v1.1.1
|
gitlab.com/etke.cc/go/secgen v1.1.1
|
||||||
gitlab.com/etke.cc/go/trysmtp v1.0.0
|
gitlab.com/etke.cc/go/trysmtp v1.0.0
|
||||||
gitlab.com/etke.cc/go/validator v1.0.3
|
gitlab.com/etke.cc/go/validator v1.0.4
|
||||||
gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6
|
gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6
|
||||||
golang.org/x/net v0.2.0
|
golang.org/x/net v0.2.0
|
||||||
maunium.net/go/mautrix v0.12.3
|
maunium.net/go/mautrix v0.12.3
|
||||||
|
|||||||
4
go.sum
4
go.sum
@@ -99,8 +99,8 @@ gitlab.com/etke.cc/go/secgen v1.1.1 h1:RmKOki725HIhWJHzPtAc9X4YvBneczndchpMgoDkE
|
|||||||
gitlab.com/etke.cc/go/secgen v1.1.1/go.mod h1:3pJqRGeWApzx7qXjABqz2o2SMCNpKSZao/gXVdasqE8=
|
gitlab.com/etke.cc/go/secgen v1.1.1/go.mod h1:3pJqRGeWApzx7qXjABqz2o2SMCNpKSZao/gXVdasqE8=
|
||||||
gitlab.com/etke.cc/go/trysmtp v1.0.0 h1:f/7gSmzohKniVeLSLevI+ZsySYcPUGkT9cRlOTwjOr8=
|
gitlab.com/etke.cc/go/trysmtp v1.0.0 h1:f/7gSmzohKniVeLSLevI+ZsySYcPUGkT9cRlOTwjOr8=
|
||||||
gitlab.com/etke.cc/go/trysmtp v1.0.0/go.mod h1:KqRuIB2IPElEEbAxXmFyKtm7S5YiuEb4lxwWthccqyE=
|
gitlab.com/etke.cc/go/trysmtp v1.0.0/go.mod h1:KqRuIB2IPElEEbAxXmFyKtm7S5YiuEb4lxwWthccqyE=
|
||||||
gitlab.com/etke.cc/go/validator v1.0.3 h1:qkMskwtA3Uiv1q7HTlNZaaZcIJTO4mp2p0KZAl53Xmo=
|
gitlab.com/etke.cc/go/validator v1.0.4 h1:2HIBP12f/RZr/7KTNH5/PgPTzl1vi7Co3lmhNTWB31A=
|
||||||
gitlab.com/etke.cc/go/validator v1.0.3/go.mod h1:3vdssRG4LwgdTr9IHz9MjGSEO+3/FO9hXPGMuSeweJ8=
|
gitlab.com/etke.cc/go/validator v1.0.4/go.mod h1:3vdssRG4LwgdTr9IHz9MjGSEO+3/FO9hXPGMuSeweJ8=
|
||||||
gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6 h1:+HDT2/bx3Hug++aeDE/PaoRRcnKdYzEm6i2RlOAzPXo=
|
gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6 h1:+HDT2/bx3Hug++aeDE/PaoRRcnKdYzEm6i2RlOAzPXo=
|
||||||
gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6/go.mod h1:Dgtu0qvymNjjky4Bu5WC8+iSohcb5xZ9CtkD3ezDqIA=
|
gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6/go.mod h1:Dgtu0qvymNjjky4Bu5WC8+iSohcb5xZ9CtkD3ezDqIA=
|
||||||
golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
golang.org/x/crypto v0.0.0-20220518034528-6f7dac969898/go.mod h1:IxCIyHEi3zRg3s0A5j5BB6A9Jmi73HwBIUl50j+osU4=
|
||||||
|
|||||||
@@ -13,12 +13,20 @@ import (
|
|||||||
"gitlab.com/etke.cc/postmoogle/utils"
|
"gitlab.com/etke.cc/postmoogle/utils"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ErrBanned returned to banned hosts
|
var (
|
||||||
var ErrBanned = &smtp.SMTPError{
|
// ErrBanned returned to banned hosts
|
||||||
|
ErrBanned = &smtp.SMTPError{
|
||||||
Code: 554,
|
Code: 554,
|
||||||
EnhancedCode: smtp.EnhancedCode{5, 5, 4},
|
EnhancedCode: smtp.EnhancedCode{5, 5, 4},
|
||||||
Message: "please, don't bother me anymore, kupo.",
|
Message: "please, don't bother me anymore, kupo.",
|
||||||
}
|
}
|
||||||
|
// ErrNoUser returned when no such mailbox found
|
||||||
|
ErrNoUser = &smtp.SMTPError{
|
||||||
|
Code: 550,
|
||||||
|
EnhancedCode: smtp.EnhancedCode{5, 5, 0},
|
||||||
|
Message: "no such user here, kupo.",
|
||||||
|
}
|
||||||
|
)
|
||||||
|
|
||||||
type mailServer struct {
|
type mailServer struct {
|
||||||
bot matrixbot
|
bot matrixbot
|
||||||
|
|||||||
@@ -56,15 +56,13 @@ func (s *incomingSession) Rcpt(to string) error {
|
|||||||
}
|
}
|
||||||
if !domainok {
|
if !domainok {
|
||||||
s.log.Debug("wrong domain of %s", to)
|
s.log.Debug("wrong domain of %s", to)
|
||||||
s.ban(s.addr)
|
return ErrNoUser
|
||||||
return ErrBanned
|
|
||||||
}
|
}
|
||||||
|
|
||||||
roomID, ok := s.getRoomID(utils.Mailbox(to))
|
roomID, ok := s.getRoomID(utils.Mailbox(to))
|
||||||
if !ok {
|
if !ok {
|
||||||
s.log.Debug("mapping for %s not found", to)
|
s.log.Debug("mapping for %s not found", to)
|
||||||
s.ban(s.addr)
|
return ErrNoUser
|
||||||
return ErrBanned
|
|
||||||
}
|
}
|
||||||
|
|
||||||
validations := s.getFilters(roomID)
|
validations := s.getFilters(roomID)
|
||||||
@@ -166,7 +164,7 @@ func validateEmail(from, to string, log *logger.Logger, options utils.IncomingFi
|
|||||||
enforce := validator.Enforce{
|
enforce := validator.Enforce{
|
||||||
Email: true,
|
Email: true,
|
||||||
MX: options.SpamcheckMX(),
|
MX: options.SpamcheckMX(),
|
||||||
SMTP: options.SpamcheckMX(),
|
SMTP: options.SpamcheckSMTP(),
|
||||||
}
|
}
|
||||||
v := validator.New(options.Spamlist(), enforce, to, log)
|
v := validator.New(options.Spamlist(), enforce, to, log)
|
||||||
|
|
||||||
|
|||||||
15
vendor/gitlab.com/etke.cc/go/validator/emails.go
generated
vendored
15
vendor/gitlab.com/etke.cc/go/validator/emails.go
generated
vendored
@@ -35,34 +35,35 @@ func (v *V) Email(email string) bool {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if v.emailMX(email) {
|
if v.enforce.MX {
|
||||||
|
if v.emailNoMX(email) {
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
smtpCheck := !v.emailSMTP(email)
|
|
||||||
if v.enforce.SMTP {
|
if v.enforce.SMTP {
|
||||||
return smtpCheck
|
if v.emailNoSMTP(email) {
|
||||||
|
return false
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *V) emailMX(email string) bool {
|
func (v *V) emailNoMX(email string) bool {
|
||||||
at := strings.LastIndex(email, "@")
|
at := strings.LastIndex(email, "@")
|
||||||
domain := email[at+1:]
|
domain := email[at+1:]
|
||||||
|
|
||||||
nomx := !v.MX(domain)
|
nomx := !v.MX(domain)
|
||||||
if nomx {
|
if nomx {
|
||||||
v.log.Info("email %s domain %s invalid, reason: no MX", email, domain)
|
v.log.Info("email %s domain %s invalid, reason: no MX", email, domain)
|
||||||
if v.enforce.MX {
|
|
||||||
return true
|
return true
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
return false
|
return false
|
||||||
}
|
}
|
||||||
|
|
||||||
func (v *V) emailSMTP(email string) bool {
|
func (v *V) emailNoSMTP(email string) bool {
|
||||||
client, err := trysmtp.Connect(v.from, email)
|
client, err := trysmtp.Connect(v.from, email)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
if strings.HasPrefix(err.Error(), "45") {
|
if strings.HasPrefix(err.Error(), "45") {
|
||||||
|
|||||||
2
vendor/modules.txt
vendored
2
vendor/modules.txt
vendored
@@ -127,7 +127,7 @@ gitlab.com/etke.cc/go/secgen
|
|||||||
# gitlab.com/etke.cc/go/trysmtp v1.0.0
|
# gitlab.com/etke.cc/go/trysmtp v1.0.0
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
gitlab.com/etke.cc/go/trysmtp
|
gitlab.com/etke.cc/go/trysmtp
|
||||||
# gitlab.com/etke.cc/go/validator v1.0.3
|
# gitlab.com/etke.cc/go/validator v1.0.4
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
gitlab.com/etke.cc/go/validator
|
gitlab.com/etke.cc/go/validator
|
||||||
# gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6
|
# gitlab.com/etke.cc/linkpearl v0.0.0-20221116205701-65547c5608e6
|
||||||
|
|||||||
Reference in New Issue
Block a user