JBoss EAP authentication issue on SMTP mail
Environment
- Red Hat JBoss Enterprise Application Platform (EAP)
- 6.x
Issue
- Our Java application deployed on JBoss Enterprise Application Platform (EAP) 6 cannot send out mail with JavaMail. We use
Sendmail
as SMTP server on Red Hat Enterprise Linux (RHEL). There is no log at all onSendmail SMTP server
side, and the exception stack trace on JBoss EAP side looks like this:
nested exception is javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
org.springframework.mail.MailAuthenticationException: Authentication failed; nested exception is javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
at org.springframework.mail.javamail.JavaMailSenderImpl.doSend(JavaMailSenderImpl.java:392) ~[spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:306) ~[spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
at org.springframework.mail.javamail.JavaMailSenderImpl.send(JavaMailSenderImpl.java:296) ~[spring-context-support-3.0.6.RELEASE.jar:3.0.6.RELEASE]
******
Caused by: javax.mail.AuthenticationFailedException: No authentication mechansims supported by both server and client
at com.sun.mail.smtp.SMTPTransport.authenticate(SMTPTransport.java:756) ~[mail-1.4.4-redhat-1.jar!/:1.4.4-redhat-1]
at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:669) ~[mail-1.4.4-redhat-1.jar!/:1.4.4-redhat-1]
at javax.mail.Service.connect(Service.java:295) ~[mail-1.4.4-redhat-1.jar!/:1.4.4-redhat-1]
-
SMTP mail authentication is unsuccessful. I have setup SMTP server in EAP 6
standalone.xml
file server is set up successfully in thestandalone.xml
file however it is giving me authentication failed while sending an email. -
javax.mail.AuthenticationFailedException occurred in EAP. I got this error. How to avoid it?
javax.mail.AuthenticationFailedException
at javax.mail.Service.connect(Service.java:306)
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 com.example.MailSender.sendMail(MailSender.java:201)
- We have a JBoss cluster with two nodes running on domain mode. For sending emails we are using "java:jboss/mail/Default" JNDI of the Mail subsystem. In each JBoss node, we have installed
Sendmail
.
<subsystem xmlns="urn:jboss:domain:mail:1.2">
<mail-session name="default" jndi-name="java:jboss/mail/Default">
<smtp-server outbound-socket-binding-ref="mail-smtp"/>
</mail-session>
</subsystem>
<outbound-socket-binding name="mail-smtp">
<remote-destination host="localhost" port="25"/>
</outbound-socket-binding>
Root Cause
According to official AuthenticationFailedException
document, this exception is thrown when the connect method on a Store or Transport object fails due to an authentication failure (e.g., bad user name or password).
Diagnostic Steps
-
Check the username and password for the SMTP server.
-
Set up the property -Dmail.debug=true when launching the EAP JVM process
-
Increase logging level for the
SMTP server
If usingSendmail
in RHEL please follow article: How to debug Sendmail and increase the log level? to increase logging level and try to get some more logs on the Sendmail side. -
Check if
SMTP server
requires authentication
If authentication is not required on theSMTP server
side, please try to remove any username/password settings on the mail client side (within Java application) and use mail.smtp.auth=false
If SMTP server does require authentication, please try to set mail.smtp.auth=true and use correct username/password to connect.
This solution is part of Red Hat’s fast-track publication program, providing a huge library of solutions that Red Hat engineers have created while supporting our customers. To give you the knowledge you need the instant it becomes available, these articles may be presented in a raw and unedited form.
Comments