mirror of
https://github.com/0rangebananaspy/authelia.git
synced 2024-09-14 22:47:21 +07:00
ab8f9b0697
This change addresses an issue with the usage of the full sender configuration option in the MAIL FROM SMTP command. If a user includes a name in the sender this shouldn't be sent in the MAIL FROM command, instead we should extract it and use just the email portion. Fixes #2571
36 lines
741 B
Go
36 lines
741 B
Go
package configuration
|
|
|
|
import (
|
|
"fmt"
|
|
"net/mail"
|
|
"reflect"
|
|
|
|
"github.com/mitchellh/mapstructure"
|
|
)
|
|
|
|
// StringToMailAddressFunc decodes a string into a mail.Address.
|
|
func StringToMailAddressFunc() mapstructure.DecodeHookFunc {
|
|
return func(f reflect.Kind, t reflect.Kind, data interface{}) (value interface{}, err error) {
|
|
if f != reflect.String || t != reflect.TypeOf(mail.Address{}).Kind() {
|
|
return data, nil
|
|
}
|
|
|
|
dataStr := data.(string)
|
|
|
|
if dataStr == "" {
|
|
return mail.Address{}, nil
|
|
}
|
|
|
|
var (
|
|
mailAddress *mail.Address
|
|
)
|
|
|
|
mailAddress, err = mail.ParseAddress(dataStr)
|
|
if err != nil {
|
|
return nil, fmt.Errorf("could not parse '%s' as a RFC5322 address: %w", dataStr, err)
|
|
}
|
|
|
|
return *mailAddress, nil
|
|
}
|
|
}
|