The current implementation of a valid Fully Qualified Domain Name is not that strict. It just checks whether it has a dot (.) and if using macOS, it should not end with .local. As per RFC1035[1], from what I understood, the following checks need to be done: - The domain must contain atleast one dot - Each label (separated by dots) must be 1-63 characters long - Labels must start and end with an alphanumeric character - Labels can contain alphanumeric characters and hyphens Here are some examples of valid and invalid labels: 'example.com', # Valid 'sub.example.com', # Valid 'my-domain.org', # Valid 'localhost', # Invalid (no dot) 'MacBook..', # Invalid (double dots) '-example.com', # Invalid (starts with a hyphen) 'example-.com', # Invalid (ends with a hyphen) 'example..com', # Invalid (double dots) 'example', # Invalid (no TLD) 'example.local', # Invalid on macOS 'valid-domain.co.uk', # Valid '123.example.com', # Valid 'example.com.', # Invalid (trailing dot) 'toolonglabeltoolonglabeltoolonglabeltoolonglabeltoolonglabeltoolonglabel.com', # Invalid (label > 63 chars) Due to current implementation, I was not able to send emails from Ubuntu. Upon debugging, I found that the SMTP domain was coming out to be "MacBook.." and was being considered as valid. As a result the script was failing. The debug logs with the failed script are below: Net::SMTP>>> Net::SMTP(3.15) Net::SMTP>>> Net::Cmd(3.15) Net::SMTP>>> Exporter(5.77) Net::SMTP>>> IO::Socket::IP(0.4101) Net::SMTP>>> IO::Socket(1.52) Net::SMTP>>> IO::Handle(1.52) Net::SMTP=GLOB(0x5db4351225f8)<<< 220 BMXPR01CA0083.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sat, 26 Apr 2025 18:06:30 +0000 [08DD842467C8274D] Net::SMTP=GLOB(0x5db4351225f8)>>> EHLO MacBook.. Net::SMTP=GLOB(0x5db4351225f8)<<< 501 5.5.4 Invalid domain name [BMXPR01CA0083.INDPRD01.PROD.OUTLOOK.COM 2025-04-26T18:06:35.781Z 08DD842467C8274D] Net::SMTP=GLOB(0x5db4351225f8)>>> HELO MacBook.. Net::SMTP=GLOB(0x5db4351225f8)<<< 501 5.5.4 Invalid domain name [BMXPR01CA0083.INDPRD01.PROD.OUTLOOK.COM 2025-04-26T18:06:40.828Z 08DD842467C8274D] Unable to initialize SMTP properly. Check config and use --smtp-debug. VALUES: server=smtp.office365.com encryption=tls hello=MacBook.. port=587 at ../git-send-email.perl line 1727. With this patch, it was fixed and was being considered as an invalid domain. Logs after this patch: Net::SMTP>>> Net::SMTP(3.15) Net::SMTP>>> Net::Cmd(3.15) Net::SMTP>>> Exporter(5.77) Net::SMTP>>> IO::Socket::IP(0.4101) Net::SMTP>>> IO::Socket(1.52) Net::SMTP>>> IO::Handle(1.52) Net::SMTP=GLOB(0x58c8af71e930)<<< 220 PN4P287CA0064.outlook.office365.com Microsoft ESMTP MAIL Service ready at Sat, 26 Apr 2025 18:08:13 +0000 [08DD84B323498C1A] Net::SMTP=GLOB(0x58c8af71e930)>>> EHLO localhost.localdomain Net::SMTP=GLOB(0x58c8af71e930)<<< 250-PN4P287CA0064.outlook.office365.com Hello [2401:4900:a052:31f0:9beb:e613:56e8:f897] Net::SMTP=GLOB(0x58c8af71e930)<<< 250-SIZE 157286400 Net::SMTP=GLOB(0x58c8af71e930)<<< 250-PIPELINING Net::SMTP=GLOB(0x58c8af71e930)<<< 250-DSN Net::SMTP=GLOB(0x58c8af71e930)<<< 250-ENHANCEDSTATUSCODES Net::SMTP=GLOB(0x58c8af71e930)<<< 250-STARTTLS Net::SMTP=GLOB(0x58c8af71e930)<<< 250-8BITMIME Net::SMTP=GLOB(0x58c8af71e930)<<< 250-BINARYMIME Net::SMTP=GLOB(0x58c8af71e930)<<< 250-CHUNKING Net::SMTP=GLOB(0x58c8af71e930)<<< 250 SMTPUTF8 Net::SMTP=GLOB(0x58c8af71e930)>>> STARTTLS Net::SMTP=GLOB(0x58c8af71e930)<<< 220 2.0.0 SMTP server ready Net::SMTP::_SSL=GLOB(0x58c8af71e930)>>> EHLO localhost.localdomain Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-PN4P287CA0064.outlook.office365.com Hello [2401:4900:a052:31f0:9beb:e613:56e8:f897] Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-SIZE 157286400 Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-PIPELINING Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-DSN Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-ENHANCEDSTATUSCODES Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-AUTH LOGIN XOAUTH2 Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-8BITMIME Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-BINARYMIME Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-CHUNKING Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250 SMTPUTF8 Net::SMTP::_SSL=GLOB(0x58c8af71e930)>>> EHLO localhost.localdomain Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-PN4P287CA0064.outlook.office365.com Hello [2401:4900:a052:31f0:9beb:e613:56e8:f897] Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-SIZE 157286400 Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-PIPELINING Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-DSN Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-ENHANCEDSTATUSCODES Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-AUTH LOGIN XOAUTH2 Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-8BITMIME Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-BINARYMIME Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250-CHUNKING Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 250 SMTPUTF8 Net::SMTP::_SSL=GLOB(0x58c8af71e930)>>> AUTH XOAUTH2 (OAuth2 access token removed for security) Net::SMTP::_SSL=GLOB(0x58c8af71e930)<<< 235 2.7.0 Authentication successful [1]: https://datatracker.ietf.org/doc/html/rfc1035 Signed-off-by: Aditya Garg <gargaditya08@xxxxxxxx> --- git-send-email.perl | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/git-send-email.perl b/git-send-email.perl index 618474916e..f14b25d718 100755 --- a/git-send-email.perl +++ b/git-send-email.perl @@ -1354,7 +1354,8 @@ sub process_address_list { sub valid_fqdn { my $domain = shift; - return defined $domain && !($^O eq 'darwin' && $domain =~ /\.local$/) && $domain =~ /\./; + return defined $domain && !($^O eq 'darwin' && $domain =~ /\.local$/) + && $domain =~ /^(?!-)[A-Za-z0-9-]{1,63}(?<!-)(\.[A-Za-z0-9-]{1,63})+$/; } sub maildomain_net { -- 2.43.0