Conexão SSL com servidor SMTP que não possui certificado autêntico

4 respostas
A

Estou utilizando o javamail para enviar email utilizando um servidor SMTP com SSL e sempre é retornado uma exception : 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.
Descobri que o problema é que o servidor SMTP não possui um certificado autêntico. Quando se acessa esse servidor através de browsers, sempre é exibido uma mensagem informando sobre o certificado, porém no browser é possível contornar isso e acessar o webmail normalmente.
Será que alguem aqui sabe como contornar este problema? Não encontrei ainda que tipo de configuração eu devo acrescentar no Properties do Session para conseguir conectar neste servidor usando SSL contornando este problema do certificado.

props.put("mail.debug", "true");
	props.put("mail.smtp.host", <meu smtp host>);
	props.put("mail.smtp.port", "465");
	props.put("mail.smtp.auth", "true");
	props.put("mail.smtp.starttls.enable", "true");
	props.put("mail.smtp.ssl", "true");
  • Transport tr = session.getTransport("smtps");
      tr.connect(<meu smtp host>, <login>, <senha>);
      tr.sendMessage(message, message.getAllRecipients());
      tr.close();
    

4 Respostas

rockstorm

tente isso:

props.put("mail.smtp.user", "[email removido]"); 
			props.put("mail.smtp.host", host); // host do servidor
			props.put("mail.smtp.auth", "true"); // autenticaçao
			props.put("mail.debug", "true"); // Mostra o debug do envio
			props.put("mail.smtp.starttls.enable", "true"); // config ssl 
			props.put("mail.smtp.port", portaSMTP); // porta SMTP
			props.put("mail.smtp.socketFactory.port", portaSMTP);// porta SMTP 
			props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); // config ssl
			props.put("mail.smtp.socketFactory.fallback", "false"); // Fellback

E mais ums coisa…verifique se o seu servidor necessita de autenticação. Se sim vc ira precisar do Authenticator.

A

Já tentei isso antes e encontrei o mesmo erro. O problema ocorre prq o servidor SMTP que estou tentando conectar não possui Certificado válido fornecido por empresas como Verisign ou GoDaddy para conexao SSL. Se vc tentar acessar este servidor utilizando um browser ele logo dará uma mensagem de aviso indicando que o certificado fornecido pelo site não pode ser autenticado, e vc apenas indica se aceita ou não o certificado enviado para acessar a pagina requisitada (no caso o webmail). Infelizmente, aqui na empresa foi isntalado um server SMTP que usa SSL, porém não quiseram comprar um Certificado :? .
Neste link tem a explicação do problema que estou tendo. Porém, não encontrei ainda uma solução para contornar isso quando tento me conectar via Javamail. A solução ideal seria o servidor ter um certificado autenticado, mas não tenho esta opção.
Preciso saber se realmente existe alguma configuração do Transport que evite que ele recuse a conexao por causa do certificado nao autêntico.

T


Procure este ponto:

A

Valeu pela dica!!

Criado 13 de dezembro de 2007
Ultima resposta 13 de dez. de 2007
Respostas 4
Participantes 3