Configuring mailjet as email provider for Speckle server

Here we go. I’ve checked that the mailjet settings work through thunderbird. After I updated these settings in the yml file I hit “reboot” in terminal. Is that enought to make sure the settings are adopted?
image

Your configuration looks suitable.

Before you updated the settings were there empty or broken values? Was our startup user interface that prompts you to enter information broken somehow?

Rebooting the droplet will work, though you should be able to achieve the same slightly quicker with the command: docker compose --file /opt/speckle-server/docker-compose.yml up --detach.

No there were no incomplete variables. Only I think I had a port incorrect or something. That’s now updated and I’ve rebooted but still no email correspondence working. I have just double-checked and i still see {“level”:“warn”,“time”:“2023-10-30T13:23:51.386Z”,“msg”:“No email transport present. Cannot send emails.”}

1 Like

@iainsproat just in case you didn’t see my edit to the above… there is still the “no email transport” issue remaining. I’m unclear if this is to do with something specific to DigitalOcean or to the current server release… or something else.

Would you be able to try running docker compose --file /opt/speckle-server/docker-compose.yml up --detach?

I’m wondering if the Droplet restart wasn’t actually enough, and it requires the updated docker-compose.yml file to be provided to it again.

Iain

I tried the above and got:

I have also tried running the setup.py function again on the basis that this surely must force a revisit of the information provided . I re-entered all the information as per the screenshot.

Outcome is that the yml file looks to have generated correctly but I still get the following message in the docker log:
{“level”:“warn”,“time”:“2023-10-31T08:50:01.831Z”,“msg”:“No email transport present. Cannot send emails.”}

Hey @jjsolly I think you may be missing a compose argument right after the first docker

docker compose --file FILE_PATH up --detach

Hi @AlanRynne i get exactly the same error when I try that but apologies for the confusion.

Hi @jjsolly

Can you run the following, which should show you a list of environment variables in the running server container.

Firstly, get the container ID of the speckle/speckle-server:2 image, as before:

docker ps -a

Then use that ID, replacing yourcontainerid in the below, to get the environment variables:

docker exec yourcontainerid env | grep EMAIL_

The environment variables should match your configuration file.

Iain

Additionally, in the container logs (somewhere very near the top, when the server was started) do you see either of the following messages?

📧 Email provider is not configured. Server functionality will be limited.

or

📧 Email provider is misconfigured, check config variables.

Yes - they do seem to.

After learning how to do back in time in docker logs I found:
{“level”:“error”,“time”:“2023-10-31T08:49:43.763Z”,“err”:{“type”:“Error”,“message”:“read ECONNRESET”,“stack”:“Error: read ECONNRESET\n at TCP.onStreamRead (node:internal/stream_base_commons:217:20)”,“errno”:-104,“code”:“ESOCKET”,“syscall”:“read”,“command”:“CONN”},“msg”:“:e-mail: Email provider is misconfigured, check config variables.”}
{“level”:“warn”,“time”:“2023-10-31T08:49:43.764Z”,“component”:“modules”,“msg”:“:e-mail: Email provider is not configured. Server functionality will be limited.”}

So @iainsproat you were right - that does seem to be an issue. BUT just to confirm - I setup an SMTP server in Thunderbird with the same credentials, host, port etc. and it works fine.

It’s good that the environment variables are correct at least :slight_smile:

ECONNRESET typically means that the destination server closed the connection; which indicates that we were able to connect to the server, if somewhat briefly, which is good. Possibly something else was misconfigured. I’m wondering if it has to do with the protocol we’re using (possibly Thunderbird defaults to a secure connnection, which is why it worked?)

In your docker-compose.yml file, can you amend EMAIL_SECURE=false to be EMAIL_SECURE=true?

Then run docker compose --file /opt/speckle-server/docker-compose.yml up --detach again.

Then take a look at the environment variables on the container, to ensure the changes were applied correctly. Then take a look at the logs once more.

Thanks,

Iain

1 Like

@iainsproat I have updated the .yml but that docker compose command doesn’t work at all for me. It just says “unknown flag: – file”.

Also for reference, I tried “reboot” and that definitely doesn’t update the env variables from the yml.

An update:

1 Like

Apologies, I was missing a hyphen in the command. It should be docker-compose and not docker compose.

docker-compose --file /opt/speckle-server/docker-compose.yml up --detach

I’ve deployed a DigitalOcean Droplet and configured it with Mailjet settings. It is working for me, so I’ve been unable to replicate your issue unfortunately.

Can you try port 587 and EMAIL_SECURE=false? This might work instead of the SMTPS protocol port 465. Which SMTP Port Should I Use with Mailjet? | Mailjet

Iain

Will give this a whirl!

When you say you have configured the droplet with mailjet settings - you mean as we have discussed through this thread? There aren’t other settings to know about that I might have missed?

Also - have you setup the mailjet settings through the standard python script setup? Or through editing the .yml

Hi all - by way of an update - I never managed to get mailjet to work for me. But I setup a SendGrid account and it works perfectly! Thanks for the assistance all and especially @iainsproat.

2 Likes

Great, you found a solution - we can keep track of anyone else attempting Mailjet and if we find something that is a gotcha, be sure to document it.

2 Likes