diff --git a/backend/src/services/smtp.ts b/backend/src/services/smtp.ts index 4bd58020b..b067d499a 100644 --- a/backend/src/services/smtp.ts +++ b/backend/src/services/smtp.ts @@ -2,9 +2,10 @@ import nodemailer from "nodemailer"; import { SMTP_HOST_GMAIL, SMTP_HOST_MAILGUN, + SMTP_HOST_OFFICE365, SMTP_HOST_SENDGRID, SMTP_HOST_SOCKETLABS, - SMTP_HOST_ZOHOMAIL, + SMTP_HOST_ZOHOMAIL } from "../variables"; import SMTPConnection from "nodemailer/lib/smtp-connection"; import * as Sentry from "@sentry/node"; @@ -15,6 +16,7 @@ import { getSmtpSecure, getSmtpUsername, } from "../config"; +import { getLogger } from "../utils/logger"; export const initSmtp = async () => { const mailOpts: SMTPConnection.Options = { @@ -58,6 +60,12 @@ export const initSmtp = async () => { ciphers: "TLSv1.2", } break; + case SMTP_HOST_OFFICE365: + mailOpts.requireTLS = true; + mailOpts.tls = { + ciphers: "TLSv1.2" + } + break; default: if ((await getSmtpHost()).includes("amazonaws.com")) { mailOpts.tls = { @@ -73,10 +81,12 @@ export const initSmtp = async () => { const transporter = nodemailer.createTransport(mailOpts); transporter .verify() - .then((err) => { + .then(async () => { Sentry.setUser(null); Sentry.captureMessage("SMTP - Successfully connected"); - console.log("SMTP - Successfully connected") + (await getLogger("backend-main")).info( + "SMTP - Successfully connected" + ); }) .catch(async (err) => { Sentry.setUser(null); diff --git a/backend/src/variables/smtp.ts b/backend/src/variables/smtp.ts index 8a0e752eb..4ad68c356 100644 --- a/backend/src/variables/smtp.ts +++ b/backend/src/variables/smtp.ts @@ -3,3 +3,4 @@ export const SMTP_HOST_MAILGUN = "smtp.mailgun.org"; export const SMTP_HOST_SOCKETLABS = "smtp.socketlabs.com"; export const SMTP_HOST_ZOHOMAIL = "smtp.zoho.com"; export const SMTP_HOST_GMAIL = "smtp.gmail.com"; +export const SMTP_HOST_OFFICE365 = "smtp.office365.com"; \ No newline at end of file diff --git a/docs/self-hosting/configuration/email.mdx b/docs/self-hosting/configuration/email.mdx index 4c6e13a49..15797d73b 100644 --- a/docs/self-hosting/configuration/email.mdx +++ b/docs/self-hosting/configuration/email.mdx @@ -3,12 +3,12 @@ title: "Configure email service" description: "How to configure your email when self-hosting Infisical." --- -By default, the core functions of Infisical work without any email service configuration. Without email service, basic sign up/login and secret operations will function without any issue. +By default, the core functions of Infisical work without any email service configuration. Without email service, basic sign up/login and secret operations will function without any issue. However, the following functionality will be disabled. -- Multi-factor authentication +- Multi-factor authentication - Sending invite links via email for projects to teammates -- Sending alerts such as suspicious login attempts +- Sending alerts such as suspicious login attempts ## General configuration @@ -157,11 +157,30 @@ SMTP_FROM_NAME=Infisical As per the [notice](https://support.google.com/accounts/answer/6010255?hl=en) by Google, you should note that using Gmail credentials for SMTP configuration will only work for Google Workspace or Google Cloud Identity customers as of May 30, 2022. - Put differently, the SMTP configuration is only possible with business (not personal) Gmail credentials. +Put differently, the SMTP configuration is only possible with business (not personal) Gmail credentials. + + + +1. Create an account and configure [Office365](https://www.office.com/) to send emails. + +2. With your login credentials, you can now set up your SMTP environment variables: + +``` +SMTP_HOST=smtp.office365.com +SMTP_USERNAME=username@yourdomain.com # your username +SMTP_PASSWORD=password # your password +SMTP_PORT=587 +SMTP_SECURE=true +SMTP_FROM_ADDRESS=username@yourdomain.com +SMTP_FROM_NAME=Infisical +``` + + + 1. Create an account and configure [Zoho Mail](https://www.zoho.com/mail/) to send emails.