Descripción general del problema
Estoy en el proceso de una migración P2V y me encontré con un problema para lograr que Tomcat y Sendmail funcionen bien. No puedo hacer que la aplicación envíe correo.
Las principales diferencias entre los dos sistemas son:
- El sistema operativo se está actualizando de CentOS 5.6 a CentOS 7.2
- Sendmail se actualiza de 8.13.8 a 8.14.7
- Tomcat solía ejecutarse como root y ahora se ejecuta como tomcat
La misma configuración (menos las diferencias anteriores) funciona actualmente en el entorno físico.
La aplicación se conecta sin especificar usuario ni contraseña. No hay nada en las configuraciones de sendmail que configuren la autenticación aparte de esto en sendmail.mc:
define(`confAUTH_OPTIONS', `A')dnl
Registros
El error clave que recibo de catalina.out es:
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)
Error completo aquí en Pastebin.
Código descompilado com.tw.manage.business.services.MailService.sendMessage aquí.
Propiedades de aplicación relevantes aquí:
# 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]
Aquí está el error en /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
Cosas que he probado
Todas las configuraciones en /etc/mail son iguales, bit a bit. He verificado que no son necesarios cambios ambientales, como nombres de host; las configuraciones solo llaman a localhost o localhost.localdomain.
Puse lo siguiente en mi archivo de hosts:
127.0.0.1 localhost.localdomain localhost old-app-hostname.vendor.net app-server app-server.company.inc
Probé el envío de correo como root y otras cuentas locales usando telnet localhost 25
y pude recibir correo en mi Gmail desde el servidor usando la dirección de correo electrónico deseada.
También intenté ejecutar Tomcat como root.
Respuesta1
Descubrí que las opciones predeterminadas deben haber cambiado. En sendmail 8.13, INICIA SESIÓN se ofrecía de forma predeterminada. En 8.14 parece que GSSAPI ahora se ofrece de forma predeterminada. La siguiente línea en /etc/mail/sendmail.mc permitía el inicio de sesión en blanco desde Tomcat, después de reiniciar sendmail:
define(`confAUTH_MECHANISMS', `LOGIN')dnl