在 /usr/local/share/perl5/IO/Socket/SSL.pm 第 598 行指定的 SSL_version 无效

问题描述 投票:0回答:3

当我尝试使用 Perl 脚本中的

Net::SMTP::TLS
发送电子邮件时,我得到以下信息:

在 /usr/local/share/perl5/IO/Socket/SSL.pm 第 598 行指定的 SSL_version 无效

操作系统:Linux

你知道问题是什么以及我必须做什么来解决它吗?

谢谢!

linux perl
3个回答
2
投票

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。较新的 Perl 版本已默认提供它。

如果无法使用新的 Net::SMTP,您可以使用

Net::SSLGlue::SMTP,它会修补旧的 Net::SMTP 版本以添加 SSL 支持。还有 Net::SMTPS 提供类似的功能。


0
投票
让我总结一下,因为我刚刚解决了我的问题(感谢上面的贡献者)

  1. 打开 [Perl_dir]/site/lib/Net/SMTP/TLS.pm

  2. 查找第 182 行,它看起来像

    if(不是 IO::Socket::SSL::socket_to_SSL($me->{sock}, SSL_version=>"SSLv3 TLSv1")){

  3. 通过删除“SSL_version=>”SSLv3 TLSv1”更改为下面的行

    if(不是 IO::Socket::SSL::socket_to_SSL($me->{sock})){

  4. 保存[Perl_dir]/site/lib/Net/SMTP/TLS.pm

其他参考网址:

http://www.pclinuxos.com/forum/index.php/topic,143156.msg1223280.html#msg1223280


0
投票
我需要帮助来解决类似的错误: /usr/local/share/perl5/IO/Socket/SSL.pm 第 540 行,但我没有这里提到的第 182 行代码,我还能检查什么?

© www.soinside.com 2019 - 2024. All rights reserved.