Skip to content

Commit

Permalink
Add support and docs for SocketLabs email SMTP
Browse files Browse the repository at this point in the history
  • Loading branch information
dangtony98 committed Feb 22, 2023
1 parent 40250b7 commit 6ad70f2
Show file tree
Hide file tree
Showing 7 changed files with 67 additions and 10 deletions.
12 changes: 11 additions & 1 deletion backend/src/services/smtp.ts
Original file line number Diff line number Diff line change
@@ -1,6 +1,10 @@
import nodemailer from 'nodemailer';
import { SMTP_HOST, SMTP_PORT, SMTP_USERNAME, SMTP_PASSWORD, SMTP_SECURE } from '../config';
import { SMTP_HOST_SENDGRID, SMTP_HOST_MAILGUN } from '../variables';
import {
SMTP_HOST_SENDGRID,
SMTP_HOST_MAILGUN,
SMTP_HOST_SOCKETLABS
} from '../variables';
import SMTPConnection from 'nodemailer/lib/smtp-connection';
import * as Sentry from '@sentry/node';

Expand All @@ -27,6 +31,12 @@ if (SMTP_SECURE) {
ciphers: 'TLSv1.2'
}
break;
case SMTP_HOST_SOCKETLABS:
mailOpts.requireTLS = true;
mailOpts.tls = {
ciphers: 'TLSv1.2'
}
break;
default:
if (SMTP_HOST.includes('amazonaws.com')) {
mailOpts.tls = {
Expand Down
7 changes: 6 additions & 1 deletion backend/src/variables/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,11 @@ import {
ACTION_DELETE_SECRETS,
ACTION_READ_SECRETS
} from './action';
import { SMTP_HOST_SENDGRID, SMTP_HOST_MAILGUN } from './smtp';
import {
SMTP_HOST_SENDGRID,
SMTP_HOST_MAILGUN,
SMTP_HOST_SOCKETLABS
} from './smtp';
import { PLAN_STARTER, PLAN_PRO } from './stripe';
import {
MFA_METHOD_EMAIL
Expand Down Expand Up @@ -101,6 +105,7 @@ export {
INTEGRATION_OPTIONS,
SMTP_HOST_SENDGRID,
SMTP_HOST_MAILGUN,
SMTP_HOST_SOCKETLABS,
PLAN_STARTER,
PLAN_PRO,
MFA_METHOD_EMAIL,
Expand Down
4 changes: 3 additions & 1 deletion backend/src/variables/smtp.ts
Original file line number Diff line number Diff line change
@@ -1,7 +1,9 @@
const SMTP_HOST_SENDGRID = 'smtp.sendgrid.net';
const SMTP_HOST_MAILGUN = 'smtp.mailgun.org';
const SMTP_HOST_SOCKETLABS = 'smtp.socketlabs.com';

export {
SMTP_HOST_SENDGRID,
SMTP_HOST_MAILGUN
SMTP_HOST_MAILGUN,
SMTP_HOST_SOCKETLABS
}
Binary file added docs/images/email-socketlabs-credentials.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/email-socketlabs-dashboard.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/images/email-socketlabs-domains.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
54 changes: 47 additions & 7 deletions docs/self-hosting/configuration/email.mdx
Original file line number Diff line number Diff line change
Expand Up @@ -25,7 +25,8 @@ By default, you need to configure the following SMTP [environment variables](htt

Below you will find details on how to configure common email providers (not in any particular order).

## Twilio SendGrid
<AccordionGroup>
<Accordion title="Twilio SendGrid">

1. Create an account and configure [SendGrid](https://sendgrid.com) to send emails.
2. Create a SendGrid API Key under Settings > [API Keys](https://app.sendgrid.com/settings/api_keys)
Expand All @@ -47,11 +48,12 @@ [email protected] # your email address being used to send out em
SMTP_FROM_NAME=Infisical
```

<Info>
Remember that you will need to restart Infisical for this to work properly.
</Info>
<Info>
Remember that you will need to restart Infisical for this to work properly.
</Info>
</Accordion>

## Mailgun
<Accordion title="Mailgun">

1. Create an account and configure [Mailgun](https://www.mailgun.com) to send emails.
2. Obtain your Mailgun credentials in Sending > Overview > SMTP
Expand All @@ -70,7 +72,9 @@ [email protected] # your email address being used to send out em
SMTP_FROM_NAME=Infisical
```

## AWS SES
</Accordion>

<Accordion title="AWS SES">

1. Create an account and [configure AWS SES](https://aws.amazon.com/premiumsupport/knowledge-center/ses-set-up-connect-smtp/) to send emails in the Amazon SES console.
2. Create an IAM user for SMTP authentication and obtain SMTP credentials in SMTP settings > Create SMTP credentials
Expand All @@ -82,7 +86,6 @@ SMTP_FROM_NAME=Infisical
3. With your AWS SES SMTP credentials, you can now set up your SMTP environment variables:

```
SMTP_HOST=smtp.mailgun.org # obtained from credentials page
SMTP_HOST=email-smtp.ap-northeast-1.amazonaws.com # SMTP endpoint obtained from SMTP settings
SMTP_USERNAME=xxx # your SMTP username
SMTP_PASSWORD=xxx # your SMTP password
Expand All @@ -95,3 +98,40 @@ SMTP_FROM_NAME=Infisical
<Info>
Remember that you will need to restart Infisical for this to work properly.
</Info>
</Accordion>

<Accordion title="SocketLabs">

1. Create an account and configure [SocketLabs](https://www.socketlabs.com/) to send emails.
2. From the dashboard, navigate to SMTP Credentials > SMTP & APIs > SMTP Credentials to obtain your SocketLabs SMTP credentials.

![opening SocketLabs dashboard](../../images/email-socketlabs-dashboard.png)

![obtaining SocketLabs credentials](../../images/email-socketlabs-credentials.png)

3. With your SocketLabs SMTP credentials, you can now set up your SMTP environment variables:

```
SMTP_HOST=smtp.socketlabs.com
SMTP_USERNAME=username # obtained from your credentials
SMTP_PASSWORD=password # obtained from your credentials
SMTP_PORT=587
SMTP_SECURE=true
[email protected] # your email address being used to send out emails
SMTP_FROM_NAME=Infisical
```

<Note>
The `SMTP_FROM_ADDRESS` environment variable should be an email for an
authenticated domain under Configuration > Domain Management in SocketLabs.
For example, if you're using SocketLabs in sandbox mode, then you may use an
email like `[email protected]`.
</Note>

![SocketLabs domain management](../../images/email-socketlabs-domains.png)

<Info>
Remember that you will need to restart Infisical for this to work properly.
</Info>
</Accordion>
</AccordionGroup>

0 comments on commit 6ad70f2

Please sign in to comment.