Bom dia,
Detectado problema com php 5.6 e macro sc_mail_send quando a opção tipo de conexão está marcada como ‘S’.
A macro sc_mail_send usa o sotware swiftmailer que vem inserido no framework do scriptcase como biblioteca.
Acontece que o php 5.6 passou a verificar a autenticidade dos certificado ssl por padrão.
Vide: http://php.net/manual/en/migration56.openssl.php
Nas versões anteriores como o php 5.5, 5.4, 5.3 e etc, está verificação era desabilitada por padrão.
Em nosso servidor está verificação passou a gerar erro no envio de e-mails.
Pois o swiftmailer não está reconhecendo nosso certificado.
O erro gerado ao usar macro sc_mail_send é este:
Atenção
stream_socket_client(): SSL operation failed with code 1. OpenSSL Error messages: error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
Atenção
stream_socket_client(): Failed to enable crypto
Atenção
stream_socket_client(): unable to connect to ssl://smtp.simaoebuhler.com.br:465 (Unknown error)
Segundo o próprio manual do PHP esta verificação pode ser desabilitada com uma passagem de contexto.
Logo pode-se usar uma da duas soluções provisórias para quem enfrenta esta situação é:
-
usar porta 25 com tipo de conexão como ‘N’
-
Usar este paliativo: http://stackoverflow.com/questions/26971712/swiftmailer-connection-established-error/29448735#29448735 e https://github.com/swiftmailer/swiftmailer/issues/544
Inserindo dois contextos no prod no arquivo /prod/third/swift/classes/Swift/Transport/StreamBuffer.php na função private function _establishSocketConnection()
linha antes da modificação:
if (
!$this->_stream = stream_socket_client($host.’:’.$this->_params[‘port’], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, stream_context_create($options)))
{
linha depois da modificação:
$options['ssl']['verify_peer'] = FALSE;
$options['ssl']['verify_peer_name'] = FALSE;
if (
!$this->_stream = stream_socket_client($host.’:’.$this->_params[‘port’], $errno, $errstr, $timeout, STREAM_CLIENT_CONNECT, stream_context_create($options)))
{
Nossa sugestão é que seja liberado um campo a mais na macro sc_mail_send onde se possa desligar esta verificação para servidores que apresentarem problemas no reconhecimento de seus certificados ssl.
Enviamos cópia para bugs@netmake.com.br e feedback@netmake.com.br
Obrigado