Visão geral do problema

Visão geral do problema

Visão geral do problema

Estou no processo de migração P2V e me deparei com um problema para fazer o Tomcat e o Sendmail funcionarem bem. Não consigo fazer com que o aplicativo envie e-mails.

As principais diferenças entre os dois sistemas são:

  • O sistema operacional está sendo atualizado do CentOS 5.6 para CentOS 7.2
  • Sendmail foi atualizado de 8.13.8 para 8.14.7
  • O Tomcat costumava ser executado como root e agora é executado como Tomcat

A mesma configuração (menos as diferenças acima) está funcionando atualmente no ambiente físico.

O aplicativo se conecta sem especificar um usuário ou senha. Não há nada nas configurações do sendmail que configure a autenticação além desta em sendmail.mc:

define(`confAUTH_OPTIONS', `A')dnl

Histórico

O principal erro que recebo de catalina.out é:

Caused by: javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
    at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:590)
    at javax.mail.Service.connect(Service.java:291)
    at javax.mail.Service.connect(Service.java:172)
    at com.tw.manage.business.services.MailService.sendMessage(MailService.java:97)

Erro completo aqui no pastebin.

Código com.tw.manage.business.services.MailService.sendMessage descompilado aqui.

app.properties relevantes aqui:

# Mail properties
# ---------------

# email server host
mailer.smtp.host=localhost

# email server port
mailer.smtp.port=25

# protocol either smtp or smtps
mailer.protocol=smtp

# user account
mailer.user=

# user password
mailer.password=

# either text/plain or text/html
mailer.mime.type=text/html;charset=UTF-8
mailer.subject.mime.type=UTF-8

# email message from email address
[email protected]

Aqui está o erro em /var/log/maillog:

Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: assigned id
Jan 18 14:02:40 app-server sendmail[46298]: NOQUEUE: connect from localhost.localdomain [127.0.0.1]
Jan 18 14:02:40 app-server sendmail[46298]: AUTH: available mech=GSS-SPNEGO GSSAPI ANONYMOUS, allowed mech=EXTERNAL GSSAPI KERBEROS_V4 DIGEST-MD5 CRAM-MD5
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: Milter: no active filter
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 220 app-server.company.inc ESMTP Sendmail 8.14.7/8.14.7; Wed, 18 Jan 2017 14:02:40 -0500
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: <-- EHLO app-server
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-app-server.company.inc Hello localhost.localdomain [127.0.0.1], pleased to meet you
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-ENHANCEDSTATUSCODES
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-PIPELINING
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-8BITMIME
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-SIZE
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-DSN
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-ETRN
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-AUTH GSSAPI
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250-DELIVERBY
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 250 HELP
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: disconnect level 1
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: in background, pid=46298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: --- 421 4.4.1 app-server.company.inc Lost input channel from localhost.localdomain [127.0.0.1]
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: lost input channel from localhost.localdomain [127.0.0.1] to MTA after ehlo
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: disconnect level 1
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: in background, pid=46298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: localhost.localdomain [127.0.0.1] did not issue MAIL/EXPN/VRFY/ETRN during connection to MTA
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: dropenvelope, e_flags=0x4001, OpMode=d, pid=46298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlink ./dfv0IJ2exL046298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: ./dfv0IJ2exL046298: unlink-fail 2
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlink ./qfv0IJ2exL046298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: ./qfv0IJ2exL046298: unlink-fail 2
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlock
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: unlink ./xfv0IJ2exL046298
Jan 18 14:02:40 app-server sendmail[46298]: v0IJ2exL046298: ./xfv0IJ2exL046298: unlink-fail 2
Jan 18 14:02:40 app-server sendmail[46298]: NOQUEUE: finis, pid=46298

Coisas que eu tentei

Todas as configurações em /etc/mail são as mesmas, pouco por pouco. Verifiquei que não há alterações ambientais necessárias, como nomes de host - as configurações só chamam localhost ou localhost.localdomain.

Coloquei o seguinte no meu arquivo hosts:

127.0.0.1       localhost.localdomain   localhost old-app-hostname.vendor.net app-server app-server.company.inc

Testei o envio de e-mails como root e outras contas locais usando telnet localhost 25e consegui receber e-mails no meu Gmail do servidor usando o endereço de e-mail desejado.

Também tentei executar o Tomcat como root.

Responder1

Descobri que as opções padrão devem ter mudado. No sendmail 8.13, LOGIN estava sendo oferecido por padrão. Na versão 8.14, parece que o GSSAPI agora está sendo oferecido por padrão. A seguinte linha em /etc/mail/sendmail.mc permitiu o login em branco do Tomcat, após reiniciar o sendmail:

define(`confAUTH_MECHANISMS', `LOGIN')dnl 

informação relacionada