sendEmail — ошибки и их решения

На дистрибутиве 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

Добавить комментарий