[RESOLVIDO]Bug php 5.6 e macro sc_mail_send quando tipo conexão marcada como 'S'

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 é:

  1. usar porta 25 com tipo de conexão como ‘N’

  2. 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

Obrigado, por compartilhar.

Solucionado a dificuldade para meus clientes com a troca do certificado no postfix e dovecot.
Mas deixo em aberto o tópico como não solucionado para que a netmake possa ver minha 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. Pois nem sempre o provedor de serviços faz a correção rapidamente ou está disposto a mudar sua configuração.

Boa sugestão, Alexandre

Estou com esse mesmo problema com o Cpanel,

Se volto o php para 5.5 o email é enviado .

3 meses para uma alteração importante dessas É MUITO TEMPO …

Prezados,

Liberamos a release 8.1.029, onde corrige o problema do envio do email na versão 5.6 do Php. Neste caso, a alteração foi feita na macro sc_mail_send.

Adicionamos o parâmetro “SSL”, onde permite adicionar mais de uma configuração do certificado SSL. Caso seja necessário adicionar mais de uma configuração, use “;” para separá-las.
Ex: $ssl = ‘allow_self_signed=false;verify_peer=false’;

sc_mail_send(SMTP, Usr, Pw, De, Para, Assunto, Mensagem, Tipo_Mens, Cópias, Tp_Cópias, Porta, Tp_Conexao, Anexo, SSL)

Yuri,
Obrigado por informar.
Valeu Netmake!

Tem que atualizar o WebHelp do SC também incluindo esses parâmetros SSL e explicando eles.

Pessoal estou enfrentando esse mesmo problema com a macro sc_email_send(). Procurei no fórum, coloquei as dicas em ação e nada de funcionar. Testei com Gmail, Hotmail, e-mails de minhas diversas hospedagens. Testei com SSL, TLS e com a opção sem segurança utilizando a porta 25 e nada.

Desde 2009 já havia acordo sobre a Gerência porta 25.
E implantado à partir de 2012.
Alguns provedores adotam e as companhias fornecedoras de links com ip dinâmico usam.
http://www.antispam.br/admin/porta25/
http://antispam.br/admin/porta25/definicao/
http://www.cert.br/docs/ct-spam/ct-spam-gerencia-porta-25.pdf
http://www.cgi.br/noticia/videos/combate-ao-spam-no-brasil-a-gerência-da-porta-25/
https://tecnoblog.net/120929/brasil-porta-25-bloqueio/
https://www.hostnet.com.br/wiki/index.php/Gerência_da_Porta_25
https://www.kinghost.com.br/blog/2012/10/como-adotar-a-gerencia-de-porta-25/

O problema da função sc_mail_send não é apenas com a porta 25, aliás a porta 25 não é para ser mais utilizada por ninguém. O problema é com qualquer porta. Eu por exemplo fiz a implementação aqui utilizando os parâmetros na última opção da função, mais especificamente o parâmetro ssl, e mesmo assim nada. O envio de e-mail é algo de extrema importância em um sistema sério.

Item 21
http://www.scriptcase.com.br/forum/index.php/topic,13927.msg72803.html#msg72803