[Dspace-tech] Email Setup Difficulties

1,591 views
Skip to first unread message

bryce ray

unread,
Aug 25, 2015, 1:46:53 PM8/25/15
to dspac...@lists.sourceforge.net
I've been trying unsuccessfully  for a week now to setup the email server for dspace.  Originally, I was using 1.5.2 but someone mentioned the dspace test-email function that was only in 1.6.0.  For this reason I intalled a fresh version of 1.6.0.  I'm now attempting to get the email working but am only getting errors.  There are two main errors I get but I'm not sure what they mean.  Also, I've censored my domain name and user-name/password for security purposes, but they are correct in my configuration.

Here is my dspace.cfg mail configuration:
##### Email settings ######

# SMTP mail server
mail.server=mail.mydomain.org

# SMTP mail server authentication username and password (if required)
mail.server.username = myusername
mail.server.password = mypassword

# SMTP mail server alternate port (defaults to 25)
mail.server.port = 25

# From address for mail
mail.from.address = nor...@mydomain.org

# Currently limited to one recipient!
feedback.recipient = admini...@mydomain.org

# General site administration (Webmaster) e-mail
mail.admin = admini...@mydomain.org

# Recipient for server errors and alerts
# alert.recipient = admini...@mydomain.org

# Recipient for new user registration emails
# registration.notify = admini...@mydomain.org

# Set the default mail character set. This may be over ridden by providing a line
# inside the email template "charset: <encoding>", otherwise this default is used.
#mail.charset = UTF8

# A comma separated list of hostnames that are allowed to refer browsers to email forms.
# Default behaviour is to accept referrals only from dspace.hostname
#mail.allowed.referrers = localhost

# Pass extra settings to the Java mail library. Comma separated, equals sign between
# the key and the value.
# mail.extraproperties = mail.smtp.socketFactory.port=465, \
#                       mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
#                       mail.smtp.socketFactory.fallback=false

# An option is added to disable the mailserver. By default, this property is set to false
# By setting mail.server.disabled = true, DSpace will not send out emails.
# It will instead log the subject of the email which should have been sent
# This is especially useful for development and test environments where production data is used when testing fun$
#mail.server.disabled = false

# Default language for metadata values
default.language = en_US

Here is the error I receive with this configuration when running dspace test-email:
About to send test email:
- To: admini...@mydomain.org
- Subject: DSpace test email
- Server: mail.mydomain.org

Error sending email:
- Error: javax.mail.SendFailedException: Invalid Addresses;
 nested exception is:
       com.sun.mail.smtp.SMTPAddressFailedException: 451 Temporary local problem - please try later


Please see the DSpace documentation for assistance.


I've tried changing the port to 465 and this changes the error message to:
About to send test email:
- To: admini...@mydomain.org
- Subject: DSpace test email
- Server: mail.mydomain.org

Error sending email:
- Error: javax.mail.MessagingException: Could not connect to SMTP host: mail.mydomain.org, port: 465, response: -1

Please see the DSpace documentation for assistance.


Is one of these closer to the right configuration? What does the error message indicate and what can I do to fix it?

Thanks for your help.

Mark Diggory

unread,
Aug 25, 2015, 1:46:54 PM8/25/15
to bryce ray, dspac...@lists.sourceforge.net
Check if your SMTP server requires TSL/SSL, if so you may need to
setup a certificate for ssl and enable TLS/SSL on a secure port (465).

http://www.mail-archive.com/dspace...@lists.sourceforge.net/msg01507.html
http://jira.dspace.org/jira/browse/DS-234

uncomment these two lines as well below if you are:

> # mail.extraproperties = mail.smtp.socketFactory.port=465, \

> #                       mail.smtp.socketFactory.fallback=false

...

> # Pass extra settings to the Java mail library. Comma separated, equals sign
> between
> # the key and the value.
> # mail.extraproperties = mail.smtp.socketFactory.port=465, \
> #
> mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
> #                       mail.smtp.socketFactory.fallback=false


> ------------------------------------------------------------------------------
>
> _______________________________________________
> DSpace-tech mailing list
> DSpac...@lists.sourceforge.net
> https://lists.sourceforge.net/lists/listinfo/dspace-tech
>
>



--
Mark R. Diggory
Head of U.S. Operations - @mire

http://www.atmire.com - Institutional Repository Solutions
http://www.togather.eu - Before getting together, get Tog@ther

bryce ray

unread,
Aug 25, 2015, 1:46:55 PM8/25/15
to Mark Diggory, dspac...@lists.sourceforge.net
I'm pretty sure it does not require SSL.  I have several other applications setup using the mail server using the same credentials.  None of these applications are setup to use SSL to my knowledge.

Does one of these error messages indicate the mail server is requiring SSL? Is there another possible reason the error could be occuring?

If SSL is being required i'll have to contact my hosting provider and look into that.

bryce ray

unread,
Aug 25, 2015, 1:46:58 PM8/25/15
to Mark Diggory, dspac...@lists.sourceforge.net, Mark Diggory
Changing that email address did make a difference.  The test-email script now completes with the email successfully sending.  However, my problem is still not fixed.  When I go to register and submit an email address the system gives an internal system error.  So the email system says it works but when I try to send an email through the system I get an internal server error.  Suggestions?


I also see this error in my log but i'm not sure if it is relevant:
2010-04-24 16:01:25,499 WARN  org.dspace.app.webui.servlet.DSpaceServlet @ anonymous:session_id=8B096BC0E35E50C32D6CB5E61F823E85:ip_addr=99.195.197.103:database_error:org.postgresql.util.PSQLException\colon; permission denied for relation eperson
org.postgresql.util.PSQLException: ERROR: permission denied for relation eperson
        at org.postgresql.core.v3.QueryExecutorImpl.receiveErrorResponse(QueryExecutorImpl.java:1531)
        at org.postgresql.core.v3.QueryExecutorImpl.processResults(QueryExecutorImpl.java:1313)
        at org.postgresql.core.v3.QueryExecutorImpl.execute(QueryExecutorImpl.java:188)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.execute(AbstractJdbc2Statement.java:452)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeWithFlags(AbstractJdbc2Statement.java:354)
        at org.postgresql.jdbc2.AbstractJdbc2Statement.executeQuery(AbstractJdbc2Statement.java:258)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
        at org.apache.commons.dbcp.DelegatingPreparedStatement.executeQuery(DelegatingPreparedStatement.java:93)
        at org.dspace.storage.rdbms.DatabaseManager.queryTable(DatabaseManager.java:239)
        at org.dspace.storage.rdbms.DatabaseManager.querySingleTable(DatabaseManager.java:406)
        at org.dspace.storage.rdbms.DatabaseManager.findByUnique(DatabaseManager.java:550)
        at org.dspace.eperson.EPerson.findByEmail(EPerson.java:161)
        at org.dspace.app.webui.servlet.RegisterServlet.processEnterEmail(RegisterServlet.java:252)
        at org.dspace.app.webui.servlet.RegisterServlet.doDSPost(RegisterServlet.java:202)
        at org.dspace.app.webui.servlet.DSpaceServlet.processRequest(DSpaceServlet.java:147)
        at org.dspace.app.webui.servlet.DSpaceServlet.doPost(DSpaceServlet.java:105)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.dspace.utils.servlet.DSpaceWebappServletFilter.doFilter(DSpaceWebappServletFilter.java:112)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:235)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)


On Sat, Apr 24, 2010 at 2:41 PM, Mark Diggory <mdig...@gmail.com> wrote:
No, now that you mention it it does not look like SSL is the issue.  The SMTP server is either rejecting the address your sending to or from.  

I wonder if you smtp provider it rejecting noreply@... Try verifying with real addresses first.

Mark


bryce ray

unread,
Aug 25, 2015, 1:47:51 PM8/25/15
to Mark Diggory, dspac...@lists.sourceforge.net
I believe I fixed that error but It was probably irrelevant to the email problem.  I'm now getting this error message in my log file when trying to send an email.  It appears as if dspace is trying to connect to my mail server using SSL.  However, my mail server does not use SSL.  I've set my port to 25 for the mail server which should indicate a regular connection (as opposed to 465 which is typically SSL).  What can I do to force dspace to connect to the mail server without SSL.  Or is something else wrong here?

javax.mail.MessagingException: Exception reading response;
  nested exception is:
        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
        at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1462)
        at com.sun.mail.smtp.SMTPTransport.openServer(SMTPTransport.java:1260)
        at com.sun.mail.smtp.SMTPTransport.protocolConnect(SMTPTransport.java:370)
        at javax.mail.Service.connect(Service.java:297)
        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 org.dspace.core.Email.send(Email.java:362)
        at org.dspace.eperson.AccountManager.sendEmail(AccountManager.java:296)
        at org.dspace.eperson.AccountManager.sendInfo(AccountManager.java:256)
        at org.dspace.eperson.AccountManager.sendRegistrationInfo(AccountManager.java:101)
        at org.dspace.app.webui.servlet.RegisterServlet.processEnterEmail(RegisterServlet.java:287)

        at org.dspace.app.webui.servlet.RegisterServlet.doDSPost(RegisterServlet.java:202)
        at org.dspace.app.webui.servlet.DSpaceServlet.processRequest(DSpaceServlet.java:147)
        at org.dspace.app.webui.servlet.DSpaceServlet.doPost(DSpaceServlet.java:105)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:637)
        at javax.servlet.http.HttpServlet.service(HttpServlet.java:717)
        at org.apache.catalina.core.ApplicationFilterChain.internalDoFilter(ApplicationFilterChain.java:290)
        at org.apache.catalina.core.ApplicationFilterChain.doFilter(ApplicationFilterChain.java:206)
        at org.apache.catalina.core.StandardWrapperValve.invoke(StandardWrapperValve.java:233)
        at org.apache.catalina.core.StandardContextValve.invoke(StandardContextValve.java:191)
        at org.apache.catalina.core.StandardHostValve.invoke(StandardHostValve.java:128)
        at org.apache.catalina.valves.ErrorReportValve.invoke(ErrorReportValve.java:102)
        at org.apache.catalina.core.StandardEngineValve.invoke(StandardEngineValve.java:109)
        at org.apache.catalina.connector.CoyoteAdapter.service(CoyoteAdapter.java:293)
        at org.apache.jk.server.JkCoyoteHandler.invoke(JkCoyoteHandler.java:190)
        at org.apache.jk.common.HandlerRequest.invoke(HandlerRequest.java:291)
        at org.apache.jk.common.ChannelSocket.invoke(ChannelSocket.java:769)
        at org.apache.jk.common.ChannelSocket.processConnection(ChannelSocket.java:698)
        at org.apache.jk.common.ChannelSocket$SocketConnection.runIt(ChannelSocket.java:891)
        at org.apache.tomcat.util.threads.ThreadPool$ControlRunnable.run(ThreadPool.java:690)
        at java.lang.Thread.run(Thread.java:619)

Thanks for all your help.  This has been a long standing problem.

On Sun, Apr 25, 2010 at 10:52 AM, Mark Diggory <mdig...@gmail.com> wrote:
That looks like database user permissions.  Review your Postgresql
ownership on the "dspace" database and which username/permissions ou
are connecting with.

Debashree Pati

unread,
Aug 25, 2015, 1:47:53 PM8/25/15
to bryce ray, dspac...@lists.sourceforge.net, Mark Diggory
I don't know anything about DSpace 1.6 mail server, so I might be
completely offbase and stupid. But I was just going through your
dspace.cfg and see that the SSL part is uncommented:

>>> > # Pass extra settings to the Java mail library. Comma separated, equals
>>> > sign
>>> > between
>>> > # the key and the value.
>>> > # mail.extraproperties = mail.smtp.socketFactory.port=465, \
>>> > #
>>> > mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
>>> > # mail.smtp.socketFactory.fallback=false
>>> >


Wouldn't this mean that you are configuring DSpace mailserver to use SSL?
I understand from your postings that you don't want DSpace to use SSL.
Could this be the culprit?

-Debashree

bryce ray

unread,
Aug 25, 2015, 1:47:54 PM8/25/15
to dp...@oln.org, dspac...@lists.sourceforge.net, Mark Diggory
That is all actually commented out.  It just looks uncommented because of the formatting of the email. 

My main distribution is actually 1.5.2 if that helps.  I tried upgrading to 1.6 because I couldn't get email to work in 1.5.2 but that didn't help.  The error above is actually from 1.5.2 and it would be great if I could find a solution to that version.

Thanks.

bryce ray

unread,
Aug 25, 2015, 1:49:42 PM8/25/15
to Mark Diggory, dspac...@lists.sourceforge.net
I've spent some time working with my server hosting company.  We've determined that all server related mail functions are working fine.  This means it must be dspace but I can't discover the problem.  It continues to give me the error message that states:

Caused by: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification path to requested target
at sun.security.provider.certpath.SunCertPathBuilder.engineBuild(SunCertPathBuilder.java:174)
at java.security.cert.CertPathBuilder.build(CertPathBuilder.java:238)
at sun.security.validator.PKIXValidator.doBuild(PKIXValidator.java:280)

I've ensured that the certificate and private key have been properly added to the java key store.  So perhaps it has something to do with the way dspace is accessing the key store, and maybe java does not know where the key store is.  Are either of these possibilities? or any other suggestions?

-Bryce

Mark H. Wood

unread,
Aug 25, 2015, 1:49:45 PM8/25/15
to dspac...@lists.sourceforge.net
Do you also have a copy of the certificate used by your cert. vendor
to sign your server's certificate, and so on up to the selfsigned root
CA certificate? It looks like it is unable to build the complete trust
path.

Browsers and suchlike may come packed with big bundles of CA
certificates that most users just blindly trust, but a JKS truststore
is created empty -- annoying, but it's for a good reason. Common
practice is for a program asserting identity via certificate to
provide the entire chain up to the root. To do that, you need to
install those higher-level certificates.

Your CA probably has a page that provides its signing cert., as well
as their root cert. if they use the common practice of separating the
two functions. (Notice I didn't say the page will be easy to find.)-:

--
Mark H. Wood, Lead System Programmer mw...@IUPUI.Edu
Balance your desire for bells and whistles with the reality that only a
little more than 2 percent of world population has broadband.
-- Ledford and Tyler, _Google Analytics 2.0_

bryce ray

unread,
Aug 25, 2015, 1:49:58 PM8/25/15
to dspac...@lists.sourceforge.net
Is it possible to set this up to not use SSL? What configuration settings do I need to change?
When I changed the port of the mail configuration from 465 to 25 I continued to get the same SSL problem.  I never really intended to connect to the mail server through SSL it seems to be attempting to do so on its own or through some configuration setting I'm not aware of.

Thanks for your help.

bryce ray

unread,
Aug 25, 2015, 1:52:50 PM8/25/15
to dspac...@lists.sourceforge.net
I'm still having a problem with this.  I've gone ahead and purchased and configured SSL to work on the server.  I've made sure that the ssl certs are in the java key store.  The ssl and mail server work perfectly with the rest of the applications (all of which run on the same server but under apache).  Dspace runs on tomcat but uses the mod_jk connector to interact with apache.  I've tried every configuration I can think of in my dspace.cfg mail section.  The two main configurations that I think should work are also detailed below.  My dspace version is 1.5.2  Despite all of this I continue to receive the error below.

Any suggestions would be greatly appreciated.  I've been dealing with this issue for a very long time and am under pressure to get it fixed.

Config1:

##### Email settings ######
# SMTP mail server
mail.server=domain.org


# SMTP mail server authentication username and password (if required)
mail.server.username = ma...@domain.org
mail.server.password =password


# Pass extra settings to the Java mail library. Comma separated, equals sign between
# the key and the value.
mail.extraproperties = mail.smtp.socketFactory.port=465, \
          mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
         mail.smtp.socketFactory.fallback=false

mail.server.port = 465
#########################

Config2:

##### Email settings ######
# SMTP mail server
mail.server=domain.org


# SMTP mail server authentication username and password (if required)
mail.server.username = ma...@domain.org
mail.server.password =password

mail.server.port = 465
#########################

Error:

javax.mail.MessagingException: Exception reading response;
  nested exception is:
        javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
Caused by: javax.net.ssl.SSLHandshakeException: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
  at com.sun.net.ssl.internal.ssl.Alerts.getSSLException(Alerts.java:174)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.fatal(SSLSocketImpl.java:1611)
        at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:187)
        at com.sun.net.ssl.internal.ssl.Handshaker.fatalSE(Handshaker.java:181)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1035)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.processMessage(ClientHandshaker.java:124)
        at com.sun.net.ssl.internal.ssl.Handshaker.processLoop(Handshaker.java:516)
        at com.sun.net.ssl.internal.ssl.Handshaker.process_record(Handshaker.java:454)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readRecord(SSLSocketImpl.java:884)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.performInitialHandshake(SSLSocketImpl.java:1112)
        at com.sun.net.ssl.internal.ssl.SSLSocketImpl.readDataRecord(SSLSocketImpl.java:744)
        at com.sun.net.ssl.internal.ssl.AppInputStream.read(AppInputStream.java:75)
        at com.sun.mail.util.TraceInputStream.read(TraceInputStream.java:97)
        at java.io.BufferedInputStream.fill(BufferedInputStream.java:218)
        at java.io.BufferedInputStream.read(BufferedInputStream.java:237)
        at com.sun.mail.util.LineInputStream.readLine(LineInputStream.java:75)
        at com.sun.mail.smtp.SMTPTransport.readServerResponse(SMTPTransport.java:1440)
        ... 32 more
Caused by: sun.security.validator.ValidatorException: PKIX path validation failed: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
        at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:251)
        at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:234)
        at sun.security.validator.PKIXValidator.engineValidate(PKIXValidator.java:148)
        at sun.security.validator.Validator.validate(Validator.java:218)
        at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.validate(X509TrustManagerImpl.java:126)
        at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:209)
        at com.sun.net.ssl.internal.ssl.X509TrustManagerImpl.checkServerTrusted(X509TrustManagerImpl.java:249)
        at com.sun.net.ssl.internal.ssl.ClientHandshaker.serverCertificate(ClientHandshaker.java:1014)
        ... 44 more
Caused by: java.security.cert.CertPathValidatorException: Path does not chain with any of the trust anchors
        at sun.security.provider.certpath.PKIXCertPathValidator.engineValidate(PKIXCertPathValidator.java:195)
        at java.security.cert.CertPathValidator.validate(CertPathValidator.java:250)
        at sun.security.validator.PKIXValidator.doValidate(PKIXValidator.java:246)
        ... 51 more
Reply all
Reply to author
Forward
0 new messages