mirror of
https://github.com/mjl-/mox.git
synced 2024-12-26 00:13:47 +03:00
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:
parent
19ea0d9a58
commit
7681f8bdc8
3 changed files with 17 additions and 5 deletions
4
doc.go
4
doc.go
|
@ -307,8 +307,8 @@ automatically initialized with configuration files, an account with email
|
|||
address mox@localhost and password moxmoxmox, and a newly generated self-signed
|
||||
TLS certificate.
|
||||
|
||||
All incoming email is accepted (if checks pass), unless the recipient localpart
|
||||
ends with:
|
||||
All incoming email to any address is accepted (if checks pass), unless the
|
||||
recipient localpart ends with:
|
||||
|
||||
- "temperror": fail with a temporary error code
|
||||
- "permerror": fail with a permanent error code
|
||||
|
|
|
@ -47,8 +47,8 @@ automatically initialized with configuration files, an account with email
|
|||
address mox@localhost and password moxmoxmox, and a newly generated self-signed
|
||||
TLS certificate.
|
||||
|
||||
All incoming email is accepted (if checks pass), unless the recipient localpart
|
||||
ends with:
|
||||
All incoming email to any address is accepted (if checks pass), unless the
|
||||
recipient localpart ends with:
|
||||
|
||||
- "temperror": fail with a temporary error code
|
||||
- "permerror": fail with a permanent error code
|
||||
|
@ -120,7 +120,7 @@ during those commands instead of during "data".
|
|||
golog.Printf("the default admin password is moxadmin")
|
||||
golog.Printf("port numbers are those common for the services + 1000")
|
||||
golog.Printf("tls uses generated self-signed certificate %s", filepath.Join(dir, "localhost.crt"))
|
||||
golog.Printf("all incoming email is accepted (if checks pass), unless the recipient localpart ends with:")
|
||||
golog.Printf("all incoming email to any address is accepted (if checks pass), unless the recipient localpart ends with:")
|
||||
golog.Print("")
|
||||
golog.Printf(`- "temperror": fail with a temporary error code.`)
|
||||
golog.Printf(`- "permerror": fail with a permanent error code.`)
|
||||
|
|
|
@ -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
|
||||
|
|
Loading…
Reference in a new issue