在/usr/local/share/perl 5/IO/套接字/ www.example.com第598行指定的SSL版本无效SSL.pm

sbtkgmzw  于 2023-01-26  发布在  Perl
关注(0)|答案(2)|浏览(139)

当我尝试使用Net::SMTP::TLS从Perl脚本发送电子邮件时,我得到以下信息:
在/usr/local/share/perl5/IO/套接字/www.example.com第598行指定的SSL版本无效SSL.pm line 598
操作系统:Linux
你知道问题出在哪吗?我得怎么解决?
谢谢大家!

bfrts1fy

bfrts1fy1#

Net::SMTP::TLS已经有10年没有维护了,它已经损坏了,因为它会导致你所描述的错误。如果你坚持使用这个损坏的模块,你需要修复它。修改第182行的代码,删除SSL_version的无效设置:

if(not IO::Socket::SSL::socket_to_SSL($me->{sock},
-        SSL_version     =>   "SSLv3 TLSv1")){
+        )){
             croak "Couldn't start TLS: ".IO::Socket::SSL::errstr."\n";
    }

我建议您不要使用损坏和未维护的Net::SMTP::TLS或其后继版本,但也是未维护的Net::SMTP::TLS::ButMaintained,而是使用最新版本的Net::SMTP,它内置了对SMTP+SSL和IPv6的支持。
如果使用新的Net::SMTP是不可能的,你可以使用Net::SSLGlue::SMTP,它可以修补旧的Net::SMTP版本来添加SSL支持。还有Net::SMTPS,它提供了类似的功能。

ni65a41a

ni65a41a2#

让我总结一下,因为我刚刚修复了我的问题(感谢上面的贡献者)
1.打开[Perl目录]/站点/库/网络/SMTP/TLS.pm
1.查找第182行,它看起来像***if(不是IO::套接字::SSL::套接字到SSL($me-〉{sock},SSL版本=〉“SSLv 3 TLSv 1”)){***
1.通过删除“SSL版本=〉“SSLv 3 TLSv 1”if(而不是IO::套接字::SSL::套接字到SSL($me-〉{sock}))更改为以下行{
1.保存[Perl目录]/站点/库/网络/SMTP/TLS.pm
其他参考URL:http://www.pclinuxos.com/forum/index.php/topic,143156.msg1223280.html#msg1223280

相关问题