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";
}