for localserve, validate the incoming message

it must be completely parsable.
normally, if we receive a message that we cannot fully parse, we accept it and
treat it as opaque application/octet-stream.

also make it more clear that localserve accepts email intended for any email
address.
This commit is contained in:
Mechiel Lukkien
2023-03-12 21:42:28 +01:00
parent 19ea0d9a58
commit 7681f8bdc8
3 changed files with 17 additions and 5 deletions

View File

@ -1515,6 +1515,18 @@ func (c *conn) cmdData(p *parser) {
}
}
if Localserve {
// Require that message can be parsed fully.
p, err := message.Parse(dataFile)
if err == nil {
err = p.Walk(nil)
}
if err != nil {
// ../rfc/6409:541
xsmtpUserErrorf(smtp.C554TransactionFailed, smtp.SeMsg6Other0, "malformed message: %v", err)
}
}
// Prepare "Received" header.
// ../rfc/5321:2051 ../rfc/5321:3302
// ../rfc/5321:3311 ../rfc/6531:578