Bug#1104296: Net::SMTP::TLS fails when with hostname verification failed
Peter Palfrader
weasel at debian.org
Mon Apr 28 13:26:52 BST 2025
Package: libnet-smtp-tls-perl
Version: 0.12-4
Severity: important
Tags: patch
Hi,
after upgrading to Debian 12, some of our tooling fell over with
| Couldn't start TLS: hostname verification failed
Turns out, Net::SMTP::TLS does not provide the hostname to
the code that in the end tries to verify the CN, so that
code in turn ends up using the socket endpoint IP address.
To reproduce:
weasel at gander:~$ perl -MNet::SMTP::TLS -e '$smtp = Net::SMTP::TLS->new("mailly.debian.org")'
Couldn't start TLS: hostname verification failed
at -e line 1.
This seems like it might be a sane fix:
--- TLS.pm 2025-04-28 14:22:13.523427780 +0200
+++ /usr/share/perl5/Net/SMTP/TLS.pm 2025-04-28 14:22:24.631519263 +0200
@@ -178,7 +178,7 @@
if(not $num == 220){
croak "Invalid response for STARTTLS: $num $txt\n";
}
- if(not IO::Socket::SSL::socket_to_SSL($me->{sock})){
+ if(not IO::Socket::SSL::socket_to_SSL($me->{sock}, SSL_verifycn_name=>$me->{Host})){
croak "Couldn't start TLS: ".IO::Socket::SSL::errstr."\n";
}
$me->hello();
in sub starttls.
With that patch applied, things work:
weasel at gander:~$ perl -MNet::SMTP::TLS -e '$smtp = Net::SMTP::TLS->new("mailly.debian.org")'
weasel at gander:~$
Cheers,
--
| .''`. ** Debian **
Peter Palfrader | : :' : The universal
https://www.palfrader.org/ | `. `' Operating System
| `- https://www.debian.org/
More information about the pkg-perl-maintainers
mailing list