SMTP SEND CRITICAL - invalid SSL_version specified at /usr/share/perl5/IO/Socket/SSL.pm line 368
Gmailを使用してメールを送信するには、nagiosスクリプト/usr/lib/nagios/plugins/check_smtp_sendを使用しています。
診断を追加すると、次の結果が表示されます。
SMTP SEND CRITICAL - invalid SSL_version specified(SSLv3 TLSv1) at /usr/share/perl5/IO/Socket/SSL.pm line 368
ディストリビューションに標準nagiosが含まれているUbuntu 14.04。
この問題を解決する方法を知っている人はいますか?
答え1
check_smtp_sendのコードにバグがあります。間違った文字列を直接指定するか、SSL_version
そうするモジュールを使用することです(非常に古くてメンテナンスされていないモジュールはこのバグとして知られていますNet::SMTP::TLS
)。最新バージョンのコードでは修正されている可能性があります。
しかし、実行中のOSが何であるか、このコードがどのパッケージに属しているのかわからないことを考えると、これが既知のバグであれば修正されたので、アップグレードする必要があるかアップグレードする必要があると言う以外には役に立ちません。決定された。後者の場合は助けることができますが、関連コードにアクセスする必要があります。
これらの種類の問題の詳細については、以下にあります。/usr/share/perl5/IO/Socket/SSL.pmの332行で指定されたSSL_versionが無効です。。そこから直接的な原因(間違ったSSL_version)、間接的な原因(最新バージョンのIO :: Socket :: SSLでSSL_versionをより厳密にチェックする)、コードで問題を解決する方法(IO ::で誤ったコードSSL_versionを修正)見つけることができます。 Socket::SSL(この問題を変更しないでください)。
に基づいてhttps://exchange.nagios.org/directory/Plugins/Email-and-Groupware/check_email_delivery/details: - このパッケージは2011年に最後に更新されました。以前のバージョンを使用したときにNet::SMTP::TLS
問題が発生しました。
回避策は、誤ったSSL_versionを設定するNet :: SMTP :: TLSセクションを単に削除することです。これは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";
}