Better parsing and 8BITMIME + SMTPUTF8 support

This commit is contained in:
Gnarwhal 2024-10-02 04:54:00 +00:00
parent 2b700ae192
commit 83f4fbde7f
Signed by: Gnarwhal
GPG key ID: 0989A73D8C421174
2 changed files with 10 additions and 3 deletions

View file

@ -67,7 +67,9 @@ func Helo(smtp_session *SMTPSession, message string) (bool, error) {
func Ehlo(smtp_session *SMTPSession, message string) (bool, error) { func Ehlo(smtp_session *SMTPSession, message string) (bool, error) {
err := smtp_session.Write( err := smtp_session.Write(
fmt.Sprintf( fmt.Sprintf(
"250 %v is shy" + "\r\n", "250-%v is shy" + "\r\n" +
"250-8BITMIME" + "\r\n" +
"250 SMTPUTF8" + "\r\n",
smtp_session.GetHost(), smtp_session.GetHost(),
), ),
) )

View file

@ -25,10 +25,15 @@ import (
var ReversePath = regexp.MustCompile(fmt.Sprintf("(?:%v)|<>", path)) var ReversePath = regexp.MustCompile(fmt.Sprintf("(?:%v)|<>", path))
var ForwardPath = regexp.MustCompile(path) var ForwardPath = regexp.MustCompile(path)
var Domain = regexp.MustCompile("\\w+@(\\w+(?:\\.\\w+)*)") var Domain = regexp.MustCompile(fmt.Sprintf(".+@(%v)", domain))
// https://datatracker.ietf.org/doc/html/rfc5321#page-41 // https://datatracker.ietf.org/doc/html/rfc5321#page-41
// Is this...legal, m'lord? (no, but ¯\_(ツ)_/¯) // Is this...legal, m'lord? (no, but ¯\_(ツ)_/¯)
// ... // ...
// Ok fine. TODO. Happy now? // Ok fine. TODO. Happy now?
var path = "<(?:.*:)?(\\w+@\\w+(?:\\.\\w+)*)>" var path = fmt.Sprintf("<(?:.*:)?(.+@%v)", domain)
var domain = fmt.Sprintf("%v(?:.%v)*", sub_domain, sub_domain)
var sub_domain = fmt.Sprintf("%v(?:%v)?", let_dig, let_str)
var let_str = fmt.Sprintf("%v*%v", let_dig_und, let_dig)
var let_dig = fmt.Sprintf("[\\pL\\d]")
var let_dig_und = fmt.Sprintf("[\\pL\\d\\-]")