Jump to content
Changes to the Jaspersoft community edition download ×

Can't EMail Reports from Jasper Server on AWS


tmccarty
Go to solution Solved by tmccarty,

Recommended Posts

We have an AWS JasperServer instance, but cannot get report emailing to work successfully.  We've searched this forum and StackOverflow and tried many different combinations of options.  The gmail account is used by our other servers to send outgoing mail, so we know the account setup is correctly.  (The submission form spam filter is rejecting my post so I'm going to start trimming content.  If something seems to be missing that is important, let me know).

Any pointers would be appreciated.

CONFIGURATION

/usr/share/tomcat7/webapps/jasperserver-pro/WEB-INF/js.quartz.properties
report.scheduler.web.deployment.uri=http://localhost/jasperserver-pro
 
report.scheduler.mail.sender.host=smtp.gmail.com
report.scheduler.mail.sender.username=username@gmail.com
report.scheduler.mail.sender.password=mypassword
report.scheduler.mail.sender.from=username@gmail.com
report.scheduler.mail.sender.protocol=smtp
report.scheduler.mail.sender.port=587
 
/usr/share/tomcat7/webapps/jasperserver-pro/WEB-INF/applicationContext-report-scheduling.xml 
        <property name="host" value="${report.scheduler.mail.sender.host}"/>
        <property name="username" value="${report.scheduler.mail.sender.username}"/>
        <property name="password" value="${report.scheduler.mail.sender.password}"/>
        <property name="protocol" value="${report.scheduler.mail.sender.protocol}"/>
        <property name="port" value="${report.scheduler.mail.sender.port}"/>
        <property name="javaMailProperties">
            <props>
                <prop key="mail.smtp.auth">true</prop>
                <prop key="mail.smtp.starttls.enable">true</prop>
                <prop key="mail.smtp.starttls.required">true</prop>  <!-- Tried with and without this line -->
            </props>
        </property>
 
Port 587:
2014-08-12 17:46:47,862 ERROR ReportExecutionJob,quartzScheduler_Worker-1:311 - The job error notification was not completed. An error occurred while sending it.
org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
        javax.net.ssl.SSLException: Server key. Failed messages: javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
        javax.net.ssl.SSLException: Server key; message exception details (1) are:
Failed message 1:
javax.mail.MessagingException: Can't send command to SMTP host;
  nested exception is:
        javax.net.ssl.SSLException: Server key
        at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1420)
<snip>
Caused by: javax.net.ssl.SSLException: Server key
        at sun.security.ssl.Handshaker.throwSSLException(Handshaker.java:1202)
<snip>
        at com.sun.mail.smtp.SMTPTransport.sendCommand(SMTPTransport.java:1418)
        ... 14 more
Caused by: java.security.spec.InvalidKeySpecException: key spec not recognised
        at org.bouncycastle.jcajce.provider.asymmetric.util.BaseKeyFactorySpi.engineGeneratePublic(Unknown Source)
        at org.bouncycastle.jcajce.provider.asymmetric.ec.KeyFactorySpi.engineGeneratePublic(Unknown Source)
        at java.security.KeyFactory.generatePublic(KeyFactory.java:334)
        at sun.security.ssl.HandshakeMessage$ECDH_ServerKeyExchange.<init>(HandshakeMessage.java:1057)
        at sun.security.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:218)
        ... 24 more
 
 
 
-------------------------
Port 465:
2014-08-12 17:54:44,413 ERROR ReportExecutionJob,quartzScheduler_Worker-1:311 - The job error notification was not completed. An error occurred while sending it.
org.springframework.mail.MailSendException: Mail server connection failed; nested exception is javax.mail.MessagingException: Exception reading response;
  nested exception is:
        javax.net.ssl.SSLException: Server key. Failed messages: javax.mail.MessagingException: Exception reading response;
  nested exception is:
        javax.net.ssl.SSLException: Server key; message exception details (1) are:
Failed message 1:
javax.mail.MessagingException: Exception reading response;
  nested exception is:
        javax.net.ssl.SSLException: Server key
 

 

 

Link to comment
Share on other sites

  • Replies 12
  • Created
  • Last Reply

Top Posters In This Topic

  • 3 weeks later...
  • 1 month later...
  • Solution

OUR FINAL FIX:  

  1. Installed PostFix as an SMTP relay on the Jasper box
  2. Configured Jasper instance in path /usr/share/tomcat7/webapps/jasperserver-pro/WEB-INF per the other links/articles here, using localhost as the mail host, protocol smtp, port 25
  3. Edited js.quartz.properties: to set the correct URL for the hyperlinks sent in reporting e-mails:
     
     
    OLD: report.scheduler.web.deployment.uri=http://jasper.clipinteractive.com013:8080/jasperserver-pro [/code]
    NEW: report.scheduler.web.deployment.uri=http://jasper.clipinteractive.com/jasperserver-pro[/code]

I'm also documenting information we received from JasperSoft here for the sake of others who may be working on this issue.  Note that none of this resolved the issue for us.  We have multiple other AWS-hosted servers successfully emailing, some via our own exchange servers and some via Gmail.  This turnkey Jasper server is the only one that could not successfully send email out, so I disagree with the statement below that the issue is not related to Jaspersoft but rather to the AWS environment.  I think it is something unique about the way the Jasper servers are set up in AWS.  With that caveat, here are the recommended points from Jaspersoft:

As the the problem with your JRS not communicating with your Email Server - please make sure they are on the same VCP and security group within AWS - this issues is not related to the Jaspersoft Server but the AWS environment.   If your email server is in your own domain - you could purchase a VPN from amazon - or you could just spin up a email server on AWS in the same VCP and security group and use it just for communications from Jaspersoft

Scheduling via Gmail should work. Connections have to be checked at both JRS instance and network levels and ensured that no traffic is being blocked to access Gmail (and corresponding default ports used by Gmail)

Make sure that connections can be made at both 

  • JRS Instance level (Security Group / Route Table): eg, from traffic outside of VPC ("0.0.0.0"), send to the gateway

  • Network level (Network ACL)

 
Link to comment
Share on other sites

  • 2 weeks later...

Hi kashoory,

 

We just moved to version 5.6.1 in AWS and are using Amazon SES to send our report emails. We ran into the same issue with SSLException error. I found the following information when trying to debug this: http://www.gubatron.com/blog/2013/08/07/solved-java7-smtp-issue-caused-by-sun-security-pkcs11-wrapper-pkcs11exception/

 

It turns out that Jasper updated the AMI to use Java 7. After a few different attempts I found a solution that works. Here are my entries from js.quartz.properties and the applicable entries in applicationContext-report-scheduling.xml. Things could probably be cleaned up a little, but it works.

 

---------------------------

report.scheduler.mail.sender.host=email-smtp.us-east-1.amazonaws.com

report.scheduler.mail.sender.username=AWS_ACCESS_KEY (Use your value)

report.scheduler.mail.sender.password=AWS_SECRET_ACCESS_KEY (Use your value)

report.scheduler.mail.sender.from=amazonsesregisteredemailaddress (Use your value)

report.scheduler.mail.sender.protocol=smtp

report.scheduler.mail.sender.port=25

report.scheduler.mail.ssl.ciphersuites=SSL_RSA_WITH_RC4_128_MD5 SSL_RSA_WITH_RC4_128_SHA TLS_RSA_WITH_AES_128_CBC_SHA TLS_DHE_RSA_WITH_AES_128_CBC_SHA TLS_DHE_DSS_WITH_AES_128_CBC_SHA SSL_RSA_WITH_3DES_EDE_CBC_SHA SSL_DHE_RSA_WITH_3DES_EDE_CBC_SHA SSL_DHE_DSS_WITH_3DES_EDE_CBC_SHA SSL_RSA_WITH_DES_CBC_SHA SSL_DHE_RSA_WITH_DES_CBC_SHA SSL_DHE_DSS_WITH_DES_CBC_SHA SSL_RSA_EXPORT_WITH_RC4_40_MD5 SSL_RSA_EXPORT_WITH_DES40_CBC_SHA SSL_DHE_RSA_EXPORT_WITH_DES40_CBC_SHA SSL_DHE_DSS_EXPORT_WITH_DES40_CBC_SHA TLS_EMPTY_RENEGOTIATION_INFO_SCSV

---------------------------------------

 

true

true

true

true

"${report.scheduler.mail.ssl.ciphersuites}"

Link to comment
Share on other sites

Hi Ghayes,

 

Thanks for the response. I had the SSLException problem with both Gmail and Amazon SES on ports 465 and 587 even with the magic string for report.scheduler.mail.ssl.ciphersuites !

However, port 25 worked for me on both gmail and SES without the magic string because it is apparently not using SSL at all. I reckon the problem is with SSL only, I am not expert though.

 

For port 25, I did NOT use the following settings:

true

true

"${report.scheduler.mail.ssl.ciphersuites}"

 

My settings on are:

--------------------------------------------------

true

true

--------------------------------------------------

report.scheduler.mail.sender.host= AMAZON=> email-smtp.us-west-2.amazonaws.com , GOOGLE=> aspmx.l.google.com

report.scheduler.mail.sender.username=Amazon=> AWS_ACCESS_KEY , GOOGLE=> gmail account

report.scheduler.mail.sender.password=Amazon=> AWS_SECRET_ACCESS_KEY , GOOGLE=> gmail password

report.scheduler.mail.sender.from=Amazon=> amazon ses registered email address , GOOGLE= mail address

report.scheduler.mail.sender.protocol=smtp

report.scheduler.mail.sender.port=25

 

Te problem I faced with gmail was "Mail can only be sent to Gmail or Google Apps users" according to https://support.google.com/a/answer/176600?hl=en. As a result, I preferred to use Amazon SES.

 

Keivan

 

 

 

Link to comment
Share on other sites

  • 5 months later...

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...