Conexão servidor SMTP-SSL Google

28 views
Skip to first unread message

Jean Carlos de Oliveira Ramos

unread,
Apr 5, 2023, 8:16:11 AM4/5/23
to webi...@googlegroups.com
Bom dia a todos,

Gostaria de reportar um problema para envio de e-mail usando servidor SMTP do google com autenticação e WI3.4.

Servidor de email: smtp.gmail.com
Protocolo: SMTP-SSL

Quando usado a porta 465 os e-mails são enviados corretamente. Mas a especificação do projeto obriga o uso da porta 587 que não conecta. Erro no WI3.4:
<LOG DATE="2023-04-05" TIME="09:06:14" CLASS="CoreSendmail - Email retry log">
<TEXT><![CDATA[Emails stored to retry later. Connection failure to smtp.gmail.com]]></TEXT>
</LOG>

Configuração java 7: JAVA_OPTS=-Dhttps.protocols=TLSv1.2 -Djdk.tls.client.protocols=TLSv1.2 -Djsse.enableSNIExtension=false

Pilha de erro tomcat 7 com java7:
javax.mail.MessagingException: Exception reading response;
  nested exception is:
        javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
        at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
        at javax.mail.Service.connect(Service.java:297)
        at javax.mail.Service.connect(Service.java:156)
        at javax.mail.Service.connect(Service.java:105)
        at javax.mail.Transport.send0(Transport.java:168)
        at javax.mail.Transport.send(Transport.java:98)
        at br.com.itx.net.SmtpMessage.sendMessage(SmtpMessage.java:253)
        at br.com.itx.net.SmtpMessage.send(SmtpMessage.java:153)
        at br.com.itx.engine.CoreMailSend.send(CoreMailSend.java:216)
        at br.com.itx.engine.CoreMailSend.build(CoreMailSend.java:161)
        at br.com.itx.engine.CoreMailSend.execute(CoreMailSend.java:104)
        at br.com.itx.component.taglib.ExecuteCore.doStartTag(ExecuteCore.java:98)
        at org.apache.jsp.cadastros.fornecedores.nova_005fsenha_005fpos_jsp._jspx_meth_w_005fexecuteCore_005f10(nova_005fsenha_005fpos_jsp.java:929)
        at org.apache.jsp.cadastros.fornecedores.nova_005fsenha_005fpos_jsp._jspx_meth_wi_005fif_005f0(nova_005fsenha_005fpos_jsp.java:493)
        at org.apache.jsp.cadastros.fornecedores.nova_005fsenha_005fpos_jsp._jspService(nova_005fsenha_005fpos_jsp.java:151)
        at org.apache.jasper.runtime.HttpJspBase.service(HttpJspBase.java:71)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.jasper.servlet.JspServletWrapper.service(JspServletWrapper.java:477)
        at org.apache.jasper.servlet.JspServlet.serviceJspFile(JspServlet.java:395)
        at org.apache.jasper.servlet.JspServlet.service(JspServlet.java:339)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.ApplicationDispatcher.invoke(ApplicationDispatcher.java:742)
        at org.apache.catalina.core.ApplicationDispatcher.doInclude(ApplicationDispatcher.java:602)
        at org.apache.catalina.core.ApplicationDispatcher.include(ApplicationDispatcher.java:541)
        at br.com.itx.engine.Execute.doJsp(Execute.java:476)
        at br.com.itx.engine.Execute.doPost(Execute.java:364)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:647)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:728)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:303)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.tomcat.websocket.server.WsFilter.doFilter(WsFilter.java:52)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:241)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:208)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:219)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:110)
        at org.apache.catalina.authenticator.AuthenticatorBase.invoke(AuthenticatorBase.java:492)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:165)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:104)
        at org.apache.catalina.valves.AccessLogValve.invoke(AccessLogValve.java:1025)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:116)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:452)
        at org.apache.coyote.http11.AbstractHttp11Processor.process(AbstractHttp11Processor.java:1201)
        at org.apache.coyote.AbstractProtocol$AbstractConnectionHandler.process(AbstractProtocol.java:654)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.doRun(AprEndpoint.java:2531)
        at org.apache.tomcat.util.net.AprEndpoint$SocketProcessor.run(AprEndpoint.java:2520)
        at java.util.concurrent.ThreadPoolExecutor.runWorker(Unknown Source)
        at java.util.concurrent.ThreadPoolExecutor$Worker.run(Unknown Source)
        at org.apache.tomcat.util.threads.TaskThread$WrappingRunnable.run(TaskThread.java:61)
        at java.lang.Thread.run(Unknown Source)
Caused by: javax.net.ssl.SSLException: Unrecognized SSL message, plaintext connection?
        at sun.security.ssl.InputRecord.handleUnknownRecord(Unknown Source)
        at sun.security.ssl.InputRecord.read(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readRecord(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.performInitialHandshake(Unknown Source)
        at sun.security.ssl.SSLSocketImpl.readDataRecord(Unknown Source)
        at sun.security.ssl.AppInputStream.read(Unknown Source)
        at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
        at java.io.BufferedInputStream.fill(Unknown Source)
        at java.io.BufferedInputStream.read(Unknown Source)
        at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)
        at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)
        ... 52 more

Jean Carlos de Oliveira Ramos

Aurelio Lima Barreto

unread,
Apr 12, 2023, 3:21:04 PM4/12/23
to webi...@googlegroups.com
Nao sei se alguem ja respondeu, mas o erro me parece referente a encriptação inadequada e nao a porta em si.
Segundo o Google, "Para SSL, digite 465. Para TLS, digite 587".
Ou seja, cada uma dessas portas usa modelos de conexão distintos. Acredito que o TLS é uma implementação superior ao SSL.

--
Você recebeu essa mensagem porque está inscrito no grupo "webinside" dos Grupos do Google.
Para cancelar inscrição nesse grupo e parar de receber e-mails dele, envie um e-mail para webinside+...@googlegroups.com.
Para ver essa discussão na Web, acesse https://groups.google.com/d/msgid/webinside/CAF%3Doo5tzvTK9Stx_LJDY6%2Bv4jY_7i9uvDZvRb1j2HGG%3Dko5eTw%40mail.gmail.com.


--
AURELIO LIMA BARRETO, Analista de Sistemas
Embrapa Tabuleiros Costeiros
Empresa Brasileira de Pesquisa Agropecuária (Embrapa)
Aracaju/SE



__________________________
Aviso de confidencialidade

Esta mensagem da Empresa  Brasileira de Pesquisa  Agropecuaria (Embrapa), empresa publica federal  regida pelo disposto  na Lei Federal no. 5.851,  de 7 de dezembro de 1972,  e  enviada exclusivamente  a seu destinatario e pode conter informacoes  confidenciais, protegidas  por sigilo profissional.  Sua utilizacao desautorizada  e ilegal e  sujeita o infrator as penas da lei. Se voce  a recebeu indevidamente, queira, por gentileza, reenvia-la ao emitente, esclarecendo o equivoco.

Confidentiality note

This message from Empresa  Brasileira de Pesquisa  Agropecuaria (Embrapa), a government company  established under  Brazilian law (5.851/72), is directed exclusively to  its addressee  and may contain confidential data,  protected under  professional secrecy  rules. Its unauthorized  use is illegal and  may subject the transgressor to the law's penalties. If you are not the addressee, please send it back, elucidating the failure.

Jean Carlos de Oliveira Ramos

unread,
Apr 17, 2023, 7:21:48 AM4/17/23
to webi...@googlegroups.com
Obrigado pela resposta Aurélio

O problema foi resolvido sobrescrevendo a classe de envio de e-mail, br.com.itx.net.SmtpMessage.java que utiliza a classe SSLSocketFactory e está faz uma espécie de trust de certificado para conectar via SSL, mas da problema via TLS. Não foi necessário atualizar a API javax.mail, a versão 1.4 no WI3 funciona com este ajuste:

if (secure) {
            String SSL_FACTORY = SSLSocketFactory.class.getName();
            props.put("mail.smtp.starttls.enable", "true");
            if (port.equals("")) {
                port = "465";
            }
            props.put("mail.smtp.port", port);
            props.put("mail.smtp.socketFactory.port", port);
            /* 06/04/2023 - Jean Carlos de Oliveira Ramos
            Devido a não conectar no servidor de smtp do google porta 587 que usa TLS.
            Porta 465 usa SSL
             */
            if (port.equals("465")) {
                props.put("mail.smtp.socketFactory.class", SSL_FACTORY);
            }
            props.put("mail.smtp.socketFactory.fallback", "false");
        }

Acredito que Geraldo possa melhorar a solução ajustando a classe SSLSocketFactory.java.

Jean Carlos de Oliveira Ramos

Aurelio Lima Barreto

unread,
Apr 19, 2023, 4:53:13 PM4/19/23
to webi...@googlegroups.com
Valeu por compartilhar. Vou guardar aqui.

Reply all
Reply to author
Forward
0 new messages