mirror of
https://github.com/mjl-/mox.git
synced 2025-07-12 18:24:35 +03:00
normalize localparts with unicode nfc when parsing
both when parsing our configs, and for incoming on smtp or in messages. so we properly compare things like é and e+accent as equal, and accept the different encodings of that same address.
This commit is contained in:
@ -42,6 +42,10 @@ func From(elog *slog.Logger, strict bool, r io.ReaderAt) (raddr smtp.Address, en
|
||||
if err != nil {
|
||||
return raddr, nil, nil, fmt.Errorf("bad domain in from address: %v", err)
|
||||
}
|
||||
addr := smtp.Address{Localpart: smtp.Localpart(from[0].User), Domain: d}
|
||||
lp, err := smtp.ParseLocalpart(from[0].User)
|
||||
if err != nil {
|
||||
return raddr, nil, nil, fmt.Errorf("parsing localpart in from address: %v", err)
|
||||
}
|
||||
addr := smtp.Address{Localpart: lp, Domain: d}
|
||||
return addr, p.Envelope, textproto.MIMEHeader(header), nil
|
||||
}
|
||||
|
@ -104,7 +104,7 @@ type Envelope struct {
|
||||
// Address as used in From and To headers.
|
||||
type Address struct {
|
||||
Name string // Free-form name for display in mail applications.
|
||||
User string // Localpart.
|
||||
User string // Localpart, encoded as string. Must be parsed before using as Localpart.
|
||||
Host string // Domain in ASCII.
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user