Configuring mailjet as email provider for Speckle server

Hi Community!

I have just deployed a Speckle droplet in DO and I have a ‘verification email’ banner that I can’t get rid of since I haven’t setup a mail server.

I’ve heard mailjet is a good option to use a service provider but I’m having some issues configuring it…

Can someone please give me some pointers as to how I need to setup mailjet to configure my speckle server? Thanks in advance!

1 Like

Hi @janx
Welcome to Speckle’s community!

You will need to edit the docker-compose file you used to run the server in the Digital Ocean droplet, and provide Speckle Server with the following environment variables. The values of which you can retrieve from your email server provider:

EMAIL: 'true'
EMAIL_HOST: 'yourhost.example.org'
EMAIL_PORT: 'emailport'
EMAIL_USERNAME: 'yourusername'
EMAIL_PASSWORD: 'yourpassword'

Hope this helps!

1 Like

thanks @iainsproat!

I’m not quite familiar with mailjet or mail providers and I was wondering if you could point me to a guide or with your experience of setting this up on the mailjet side to setup the required values?

I’m not personally familiar with mailjet, but I believe step 1 of their Getting Started guide to create an account and then create an API token is all you require:
https://dev.mailjet.com/email/guides/getting-started/

Once you create the account, I believe the following can be used in the environment variables:

EMAIL: 'true'
EMAIL_HOST: 'https://api.mailjet.com'
EMAIL_PORT: '443'
EMAIL_USERNAME: 'your_mailjet_api_key'
EMAIL_PASSWORD: 'your_mailjet_api_secret'

Though this is just an educated guess, and I may be proven wrong! (Maybe someone who is more familiar can correct me!)

Hey @janx

in your account settings, there is a page to SMTP and Send Api settings

Looks like this:

you need to create an api key first, that you will use as the email username and password

use the SMTP server as the EMAIL_HOST and make sure you are using the right port.

Also make sure, to verify your sender address in mailjet, it doesn’t let you send mails from an address that can’t be verified it belongs to you.

Hope this helps :slight_smile:

2 Likes

@gjedlicska thank you so much for this detailed info!

However it still doesn’t work :frowning: In spite of having validated the sender email address I keep getting an email form mailjet: A non-validated sender address was used on your account

Is there maybe any other way to validate emails in the server or manage invitations?

@janx - Mailjet suggest that validating the email should be sufficient

If you continue to have problems with MailJet email validation, you might need to reach out to their support channels directly.

I’m still struggling a bit with this. @gjedlicska @iainsproat Is it possible to manually add collaborators to the server without an email invitation? Or manually validate them if invited?

Hi @janx

Have you tried another email provider instead of MailJet? It may be the more straightforward way of resolving your issue.

As far as I know, we don’t have a way of listing invitation links (or the invitation tokens) in the UI. I think that you would have to send a graphql query to the /graphql endpoint of your server. The graphql definitions can be seen in our source code.

Hey @janx

Here are some alternatives for you to check out.
I suggest starting with mailgun, but unfortunately we have limited experience with these services.

I’m trying to setup a server using the one-click Digital Ocean droplet method. All seems to be working well except for this. I am definitely not an expert but I’ve tried a few ways of inputting email information using the setup.py method and none of them seem to work out. I can’t work out how to view the yaml file that is being used by the droplet. Any help/advice much appreciated.

Hi @jjsolly - I’ll investigate and see if I can set up the email using the script.

1 Like

When starting the Droplet, the script will generate a docker compose file. If you are ssh’d in to the DigitalOcean Droplet, this can be found at /opt/speckle-server/docker-compose.yml.

Both vim and nano are available as editors on the Droplet so you can run, for example, vim /opt/speckle-server/docker-compose.yml to view and edit the docker compose file.

The docker compose file should look somewhat similar to the following, depending on your own specific provider & account details:

To debug further, you can run docker ps -a on the command line to view all the running containers and view their status.

You can then view the logs for a specific container using its container ID, for example docker logs 5fbf9741c881 to view the server logs to determine if there are any reported issues with email. You can do more with Docker’s log command using the flags described on their website.

Iain

2 Likes

Thanks for the detailed answer @iainsproat. I’ll try this out and see what happens.

2 Likes

Have setup everything as best I understand the requirements. Have also tested the mailjet smtp setup separately (and it seems to be working). Still no emails being received from speckle for user invites etc. Can you kindly let me know which container log should i monitor to see whether the server is correctly sending? I am struggling to work out which one will report that behaviour.

Any errors would be reported by the container running the speckle/speckle-server:2 image.

Is everything else working; are you able to register and send data to your server?

1 Like

Yes it does all seem to be working for me at least. I’ll test with a colleague later today.

Another avenue of investigation: does your email service provide logs or statistics? Does it report that a request to send an email was received, or other similar statistics?

Hope this helps,
Iain

Hi @iainsproat I found this line in the server log:
{“level”:“warn”,“time”:“2023-10-30T10:41:47.765Z”,“msg”:“No email transport present. Cannot send emails.”}

1 Like

Ok, it’s not correctly configured somehow. Does your docker-compose.yml file look similar to my screenshot?