Acessando Servidores Seguros de SMTP com o Magic xpi

Veja a seguir como utilizar um servidor seguro de SMTP, como o GMail por exemplo, para o envio das mensagens de emails através do Magic xpi.

Mensagens de emails ainda são um forma eficiente de notificação de status de processos, durante a integração de sistemas e aplicações.

Qualquer tipo de status, seja sucesso, falha, evento importante que ocorreu ou relatório das transações consolidadas em um período.

Mensagens de emails ainda são um forma eficiente de notificação de status de processos, durante a integração de sistemas e aplicações.

Qualquer tipo de status, seja sucesso, falha, evento importante que ocorreu ou relatório das transações consolidadas em um período.

Como de costume, é absolutamente simples e fluído o processo de envio de mensagens de email em projetos de integração com o Magic xpi.

Basta definir o recurso externo de conexão ao servidor de mensagens (usamos o GMail aqui neste exemplo), com servidor, porta de acesso, protocolo de segurança a utilizar, login:

 

e utilizar o componente de Emails para enviar as mensagens, individuais ou em lista, com ou sem anexos:

 

Simples e direto. E eficiente.

Mas então, você tem certeza de que todas as configurações necessárias estão corretas:

 

e mesmo assim durante o processamento das integrações, é notificado pelo Magic xpi que o envio da mensagem não pode ser concluído, e recebe estes detalhes da transação (tentativa) ocorrida:

javax.mail.MessagingException: Can't send command to SMTP host;  nested exception is: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target

 

Porque isso às vezes pode ocorrer?

Isso ocorre quando o servidor de mensagens em questão, aqui no exemplo é o smtp.gmail.com, requer uma comunicação segura com o uso de certificados digitais entre as transmissões, e o Java (JDK) que está em uso pelo Magic xpi não está conseguindo fazer isso.

Como é de conhecimento, o Magic xpi requer o Java 8 (32 e 64 bits) para executar muitas de suas opções internas. E se estiver usando versões mais antigas de Java 8 (111, 181 por exemplo), pode haver mais chances de enfrentar esta situação quando usando servidores SMTP mais rigorosos quanto a segurança nas comunicações.

 

Como solucionar?

Simples também, como o esperado.

Primeiro, baixe e instale o OpenSSL: https://slproweb.com/products/Win32OpenSSL.html

Coloque no PATH do seu Windows a pasta onde está o “openssl.exe” e abra o prompt do DOS (CMD) como ‘Administrador‘ da máquina.

 

Depois, anote o ‘endereço’ do servidor SMTP e a ‘porta’ de comunicação com ele, e rode o comando:

openssl s_client -starttls smtp -connect <servidor>:<porta>

Em nosso exemplo, como usamos o GMail com TLS na porta 587, fica assim: openssl s_client -starttls smtp -connect smtp.gmail.com:587

Logo no início, este programa (openssl) vai mostrar no console o “certificado digital” do servidor SMTP:

 

Este certificado apresentado, deve ser “copiado”, “colado” e “salvo” em um arquivo qualquer, com a extensão “.CRT“:

 

Em seguida, pode fechar o programa (openssl)  com “CTRL+C“.

 

Agora, identifique a pasta (completa) de instalação do JDK Java que está em uso pelo Magic xpi. Neste exemplo, estamos usando-o da pasta: D:\Program Files\Java\jdk1.8.0_181.

Então, através do prompt do DOS (modo ‘Administrador’), entraremos na subpasta “jre\lib\security” dentro dela:

cd /d "D:\Program Files\Java\jdk1.8.0_181\jre\lib\security"

 

e copiaremos o arquivo “.CRT” criado anteriormente, para esta pasta (security):

 

Voltando ao prompt do DOS (como ‘Administrador’), executaremos o comando Java:

..\..\bin\keytool -import -noprompt -trustcacerts -alias <meu_alias> -file <nome_arquivo_CRT> -keystore cacerts -storepass changeit

 

Como por exemplo (neste caso):

..\..\bin\keytool -import -noprompt -trustcacerts -alias “BlobMagicBRSecureSMTP” -file “SMTPServerCertificado.CRT” -keystore cacerts -storepass changeit

 

Pronto! Agora o Java (JDK/JRE) que o Magic xpi utiliza está preparado para usar este certificado digital nas comunicações com este servidor (SMTP).

*Nota: à medida que o servidor SMTP for alterando o seu certificado digital com o passar do tempo, estes procedimentos podem precisar ser repetidos.

Especificamente sobre o GMail

O que mostramos acima, é um procedimento genérico para servidores seguros de SMTP.

Mas se o servidor for o GMail , como é neste exemplo: smtp.gmail.com, há ainda mais três procedimentos específicos para podermos interagir com o servidor da Google.

 

Primeiro: você precisa antes de tudo, abrir o GMail via WebBrowser, na mesma máquina onde está o Magic xpi e fazer o login com a mesma conta (xyz@gmail.com) que configurou no recurso externo do projeto de integração. Isso é necessário para o GMail “confiar” nesta máquina para acessos a esta conta. Ele provavelmente irá disparar o seu fluxo interno de autorização, pedindo para você confirmar que é “você mesmo” que está fazendo este acesso.

Segundo: a conta informada para login (xyz@gmail.com), não deve estar com a “Autenticação de 2 Fatores” ativada, no GMail.

Terceiro: nas configurações da conta informada para login (xyz@gmail.com), na parte de “Segurança“, ative a opção de acesso dos “Apps Menos Seguros”. Isso é preciso para o GMail permitir autenticação do tipo Basic (usuário + senha) ao seu servidor SMTP.

 

Porém …

 

Tem outra forma também: Basta acessar o MAGIC.INI do Magic xpi, e na seção [MAGIC_JAVA], chave JVM_ARGS, acrescentar a configuração:

-Dmail.smtp.ssl.trust=*

 

Isso fará o Java confiar em qualquer servidor SMTP definido.

 

E é isso 🙂

Siga ligado no Blog, para mais discas sobre o Magic xpi.
Manoel Frederico Silva – Evangelista MAGIC – Magic Brasil

 

Para receber os artigos do Blog Magic Brasil em primeira mão no seu email, registre-se aqui

 

 

Deixe um comentário

O seu endereço de e-mail não será publicado. Campos obrigatórios são marcados com *