Issue with bulk email/Newsletter signup


I have my Ghost hosted on a Linode Instance. I have configured the Mailgun API and domain. I have also edited the SMTP settings in the config.production.json file.

Here is my SMTP setting in the file:

"mail": {
  "transport": "SMTP",
  "from": "'John Doe' <>",
  "options": {
    "service": "Mailgun",
    "host": "",
    "port": 587,
    "auth": {
      "user": "",
      "pass": "my super secret password"

Whenever tries to signup for my newsletter, they get a “Failed to signup, please try again error”.

Here is what I have in my ghost log:

[2021-07-23 17:34:51] ERROR

NAME: EmailError
MESSAGE: Failed to send email. Reason: connect ETIMEDOUT

level: normal

"Please see for instructions on configuring email."
EmailError: Failed to send email. Reason: connect ETIMEDOUT
    at createMailError (/var/www/ghost/versions/4.10.1/core/server/services/mail/GhostMailer.js:58:12)
    at MailComposer.returnCallback (/var/www/ghost/versions/4.10.1/core/server/services/mail/GhostMailer.js:113:28)
    at SMTPConnectionPool._onConnectionError (/var/www/ghost/versions/4.10.1/node_modules/simplesmtp/lib/pool.js:334:17)
    at SMTPClient.emit (events.js:375:28)
    at SMTPClient.emit (domain.js:470:12)
    at SMTPClient._onError (/var/www/ghost/versions/4.10.1/node_modules/simplesmtp/lib/client.js:373:10)
    at Socket.emit (events.js:375:28)
    at Socket.emit (domain.js:470:12)
    at emitErrorNT (internal/streams/destroy.js:106:8)
    at emitErrorCloseNT (internal/streams/destroy.js:74:3)
    at processTicksAndRejections (internal/process/task_queues.js:82:21)

Error: connect ETIMEDOUT
    at TCPConnectWrap.afterConnect [as oncomplete] (net.js:1148:16)

How can I resolve this issue? Am I missing something?

You may need to use TLS (“secureConnection”: true) and the associated port(465)
I just signed up for a new Mailgun account and tried to send. I am successful with the following settings. So give it a try

  "mail": {
     "transport": "SMTP",
     "from": "******",
     "options": {
     "service": "Mailgun",
    "secureConnection": true,
    "host": "",
    "port": 465,
     "auth": {
      "user": "*******",
      "pass": "*******"

I did the same. Enabled the port 465 as well. I am still facing the same issue.


In Linode (Where I have Ghost hosted) by default keeps the mail ports blocked. After trying and spending on as many solutions I can find, I was still facing the same issue.
Finally I reached out to Linode support team and raised a ticket to open port 465 and 587. once they opened the ports, my transactional email service is working fine as of now.