Configure email service

ioChem-BD can be configured to send reset password emails when the Forgot your password? option is used on the login page. The service also sends notifications to new users with a welcome message and a link to set their password.

To perform these operations, the email service must be properly configured inside ioChem-BD.

Initial checks

Before configuring our service, will check that we can communicate with the mail server on its port. To do so we need the IP or DNS entry where the mail server resides, then the port number where it runs. The most common ones are:

  • 25: plain communication, no encoding
  • 465: using SSL protocol
  • 587: using STARTTLS protocol

The port numbers can change or have different types of protocols running on them, take this only as a guide and always talk with your IT team before configuring the service.

Having the IP or DNS entry, the port and protocol will now check that we have communication through this port. On the server where ioChem-BD resides will run the following telnet command (change the server name and the port to match your server configuration):

$ telnet smtp.gmail.com 465

If the telnet command connects the server, we can assess the connection is enabled and no firewall is blocking our communication, otherwise, the port must be opened on the network side.

Trying XXX.XXX.XXX.XXX...
Connected to smtp.gmail.com.
Escape character is '^]'.

telnet> quit
Connection closed

Now using the nmap command will determine the protocol used in the mail server to communicate:

$  nmap -Pn --script ssl-enum-ciphers -p 465 smtp.gmail.com

 map scan report for smtp.google.com (XXX.XXX.XXX.XXX)
 Host is up (0.000083s latency).

 PORT    STATE SERVICE
 465/tcp open  smtps
 | ssl-enum-ciphers:
 |   TLSv1.0:
 |     ciphers:
 |       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
 |       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
 |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
 |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
 |       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
 |       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
 |       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
 |     compressors:
 |       NULL
 |     cipher preference: server
 |     warnings:
 |       64-bit block cipher 3DES vulnerable to SWEET32 attack
 |   TLSv1.1:
 |     ciphers:
 |       TLS_ECDHE_ECDSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
 |       TLS_ECDHE_ECDSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
 |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (ecdh_x25519) - A
 |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (ecdh_x25519) - A
 |       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
 |       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
 |       TLS_RSA_WITH_3DES_EDE_CBC_SHA (rsa 2048) - C
 |     compressors:
 |       NULL
 |     cipher preference: server
 |     warnings:
 |       64-bit block cipher 3DES vulnerable to SWEET32 attack
 |   TLSv1.2:
 |     ciphers:
 |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA (secp256r1) - A
 |       TLS_ECDHE_RSA_WITH_AES_128_CBC_SHA256 (secp256r1) - A
 |       TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (secp256r1) - A
 |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA (secp256r1) - A
 |       TLS_ECDHE_RSA_WITH_AES_256_CBC_SHA384 (secp256r1) - A
 |       TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (secp256r1) - A
 |       TLS_ECDHE_RSA_WITH_CHACHA20_POLY1305_SHA256 (secp256r1) - A
 |       TLS_RSA_WITH_AES_128_CBC_SHA (rsa 2048) - A
 |       TLS_RSA_WITH_AES_128_CBC_SHA256 (rsa 2048) - A
 |       TLS_RSA_WITH_AES_128_GCM_SHA256 (rsa 2048) - A
 |       TLS_RSA_WITH_AES_256_CBC_SHA (rsa 2048) - A
 |       TLS_RSA_WITH_AES_256_CBC_SHA256 (rsa 2048) - A
 |       TLS_RSA_WITH_AES_256_GCM_SHA384 (rsa 2048) - A
 |     compressors:
 |       NULL
 |     cipher preference: client
 |_  least strength: A

The command outputs that it is offering the service in different protocols such as TLSv1.0, TLSv1.1, TLSv1.2. Always choose the highest protocol version, in this case, TLSv1.2, the lowest ones are no longer secure.

A different output can indicate that the service is closed/network communication blocked:

$ nmap -Pn --script ssl-enum-ciphers -p 465 smtp.gmail.com

 Starting Nmap 7.80 ( https://nmap.org ) at 2022-01-21 13:54 CET
 Nmap scan report for smtp.gmail.com (XXX.XXX.XXX.XXX)
 Host is up.
 Other addresses for smtp.gmail.com (not scanned): XXXX:XXXXX:XXXX:c07::6c
 rDNS record for XXX.XXX.XXX.XXX: aa-aa-aaaa.aaaaa.aaa

 PORT    STATE    SERVICE
 465/tcp filtered smtps

 Nmap done: 1 IP address (1 host up) scanned in 2.23 seconds

Now, we will apply this information to the configuration files of ioChem-BD. Edit BASE_PATH/browse/config/dspace.cfg to configure the email service, being BASE_PATH the base folder where ioChem-BD software is installed.

The properties starting with mail. are the ones devoted to this service.

# SMTP mail server
mail.server =

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

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

# From address for mail
mail.from.address =

# Currently limited to one recipient!
feedback.recipient =

# General site administration (Webmaster) e-mail
mail.admin =

# Recipient for server errors and alerts
alert.recipient =

# Recipient for new user registration emails
registration.notify =

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

# 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 =

mail.extraproperties =

The following configurations are basic guidelines of the configuration, please refer to this javax.mail reference page to explore further configurations, most of them will be added to mail.extraproperties property.

Warning

Every modification of the email parameters will require restarting the ioChem-BD service to load the new configuration.

STMP configuration per protocol

Plain text

Edit BASE_PATH/browse/config/dspace.cfg with the following properties:

mail.server.port = 25
#mail.extraproperties =

Comment mail.extraproperties property and set port equals 25. This option is not recommended because all information will travel plain, without encryption.

SSL

Edit BASE_PATH/browse/config/dspace.cfg with the following properties:

mail.server.port = 465
mail.extraproperties = mail.smtp.ssl.protocols=TLSv1.2, \
                   mail.smtp.socketFactory.port=465, \
                   mail.smtp.socketFactory.class=javax.net.ssl.SSLSocketFactory, \
                   mail.smtp.socketFactory.fallback=false

Specify the encryption protocol in the mail.extraproperties appending the mail.smtp.ssl.protocols with one that the mail server is using.

STARTTLS

Edit BASE_PATH/browse/config/dspace.cfg with the following properties:

mail.server.port = 587
mail.extraproperties = mail.smtp.starttls.enable=true, \
                   mail.smtp.socketFactory.port=587, \
                   mail.smtp.starttls.required=true

If this setup doesn’t work, try to set also the ssl protocol used:

mail.server.port = 587
mail.extraproperties = mail.smtp.starttls.enable=true, \
                   mail.smtp.socketFactory.port=587, \
                   mail.smtp.ssl.protocols=TLSv1.2, \
                   mail.smtp.starttls.required=true

Please contact us at contact@iochem-bd.org for further assistance if you have problems configuring the mail service.