mirror of
https://github.com/mjl-/mox.git
synced 2025-01-14 01:06:27 +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
|
address mox@localhost and password moxmoxmox, and a newly generated self-signed
|
||||||
TLS certificate.
|
TLS certificate.
|
||||||
|
|
||||||
All incoming email is accepted (if checks pass), unless the recipient localpart
|
All incoming email to any address is accepted (if checks pass), unless the
|
||||||
ends with:
|
recipient localpart ends with:
|
||||||
|
|
||||||
- "temperror": fail with a temporary error code
|
- "temperror": fail with a temporary error code
|
||||||
- "permerror": fail with a permanent 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
|
address mox@localhost and password moxmoxmox, and a newly generated self-signed
|
||||||
TLS certificate.
|
TLS certificate.
|
||||||
|
|
||||||
All incoming email is accepted (if checks pass), unless the recipient localpart
|
All incoming email to any address is accepted (if checks pass), unless the
|
||||||
ends with:
|
recipient localpart ends with:
|
||||||
|
|
||||||
- "temperror": fail with a temporary error code
|
- "temperror": fail with a temporary error code
|
||||||
- "permerror": fail with a permanent 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("the default admin password is moxadmin")
|
||||||
golog.Printf("port numbers are those common for the services + 1000")
|
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("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.Print("")
|
||||||
golog.Printf(`- "temperror": fail with a temporary error code.`)
|
golog.Printf(`- "temperror": fail with a temporary error code.`)
|
||||||
golog.Printf(`- "permerror": fail with a permanent 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.
|
// Prepare "Received" header.
|
||||||
// ../rfc/5321:2051 ../rfc/5321:3302
|
// ../rfc/5321:2051 ../rfc/5321:3302
|
||||||
// ../rfc/5321:3311 ../rfc/6531:578
|
// ../rfc/5321:3311 ../rfc/6531:578
|
||||||
|
|
Loading…
Reference in a new issue