На дистрибутиве Debian wheezy использовал программу sendEmail и почту с SSL.
При работе скрипта появилась ошибка:
/usr/share/perl5/IO/Socket/SSL.pm line 332
Надо в файле /usr/share/perl5/IO/Socket/SSL.pm найти строчку
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))$}i
и заменить её на
m{^(!?)(?:(SSL(?:v2|v3|v23|v2/3))|(TLSv1[12]?))}i
После этого появилась следующая ошибка. Привожу код полностью.
proxmox sendEmail[209499]: ERROR => TLS setup failed: SSL connect attempt failed because of handshake problems error:14094410:SSL routines:SSL3_READ_BYTES:sslv3 alert handshake failure
Для поиска проблемы свёл запрос до
sendEmail ERROR => TLS setup failed: SSL connect attempt failed because of handshake problems error
Решается проблема редактированием файла nano /usr/bin/sendemail.
Полностью вариант решения, который я нашёл.
If you look exactly on the Error Message you can see the answer: tlsv1
On a previous version of sendEmail.pm one line was written as:
Code:
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3 TLSv1')) {
Some of the user changed this line to:
Code:
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv23:!SSLv2'))
and some of the user changed it to:
Code:
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'SSLv3')) {
I experimented with this line and now it works with this option:
Code:
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'TLSv1')) {
I tested it with gmail (smtp.gmail.com:587) and yahoo! mail (smtp.mail.yahoo.com:587). Both work well!
The Port 465 didn’t work, Port 25 is more or less obsolet and didn’ t work too.
Я попробовал вариант
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'TLSv1')) {
и он сработал.
Ошибка
ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first
или
ERROR => No TLS support! SendEmail can't load required libraries. (try installing Net::SSLeay and IO::Socket::SSL)
Решение
apt-get install libio-socket-ssl-perl libnet-ssleay-perl
В CentOS 7 при отправки письма пишет ошибку:
NOTICE => Authentication not supported by the remote SMTP server! ERROR => Received: 530 5.7.0 Must issue a STARTTLS command first
Вторая строчка ошибки аналогично рассмотренной чуть выше для Debian. Исправляется следующим образом:
sudo yum install perl-CPAN perl-Net-SSLeay perl-IO-Socket-SSL
CentOS 7
Установка sendEmail описана тут http://blog.ahughes.org/?p=751
Показывает сообщение при отправке почты:
******************************************************************* Using the default of SSL_verify_mode of SSL_VERIFY_NONE for client is deprecated! Please set SSL_verify_mode to SSL_VERIFY_PEER together with SSL_ca_file|SSL_ca_path for verification. If you really don't want to verify the certificate and keep the connection open to Man-In-The-Middle attacks please set SSL_verify_mode explicitly to SSL_VERIFY_NONE in your application. *******************************************************************
Для CentOS 7, чтобы не выскакивало предупреждение необходимо в файл sendEmail добавить параметр SSL_verify_mode => 0.
if (! IO::Socket::SSL->start_SSL($SERVER, SSL_version => 'TLSv1', SSL_verify_mode => 0)) {
Не уверен, что это правильно, но зато так работает.
Использовался материал.
https://crunchbang.org/forums/viewtopic.php?id=31949
https://www.raspberrypi.org/forums/viewtopic.php?f=66&t=150579
http://forum.runtu.org/index.php?topic=487.5;wap2