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

/usr/share/perl5/IO/Socket/SSL.pm 第 368 行指定的 SSL_version 无效
SMTP SEND CRITICAL - invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 368

我正在使用 nagios 脚本 /usr/lib/nagios/plugins/check_smtp_send 使用 gmail 发送电子邮件。

当我添加诊断时,我得到以下信息:

SMTP SEND CRITICAL - invalid SSL_version specified(SSLv3 TLSv1) at /usr/share/perl5/IO/Socket/SSL.pm line 368

Ubuntu 14.04 与发行版中的标准 nagios。

有人知道如何解决这个问题吗?

答案1

check_smtp_send 中的代码有错误。它要么直接指定无效字符串SSL_version,要么使用这样做的模块(非常旧且未维护的模块Net::SMTP::TLS因此错误而闻名)。它可能在较新版本的代码中已修复。

但考虑到我不知道你正在运行哪个操作系统,该代码属于哪个包,如果这是一个已知的错误,我真的无法帮助,而是说它要么已经修复,你应该升级,要么需要修复。在后一种情况下,我可以提供帮助,但我需要访问相关代码。

有关此类问题的更多信息,您可能会在以下位置找到/usr/share/perl5/IO/Socket/SSL.pm 第 332 行指定的 SSL_version 无效。在那里您可以找到直接原因(错误的 SSL_version)、间接原因(在较新版本的 IO::Socket::SSL 中对 SSL_version 进行更严格的检查)以及如何在代码中修复它(修复有问题的代码中的 SSL_version,不要通过更改 IO::Socket::SSL 来解决此问题)。

基于https://exchange.nagios.org/directory/Plugins/Email-and-Groupware/check_email_delivery/details: - 该软件包最后更新于 2011 年 - 它使用旧的Net::SMTP::TLS导致问题

解决方法是简单地从 Net::SMTP::TLS 中删除设置错误 SSL_version 的部分。这应该是第 182 行,请参阅https://metacpan.org/source/AWESTHOLM/Net-SMTP-TLS-0.12/lib/Net/SMTP/TLS.pm#L182

前:

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

后:

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

相关内容