Configure a mail provider for workspace invitations, email verification, password resets, and notifications. Use a sender address the provider is authorized to send as.
Without a mail provider, Sim skips delivery and reports success. At INFO log level it records recipient, subject, and sender, but not the message body. Invitations and password resets will not arrive; the message cannot be recovered from those logs. Email verification is enforced only when a provider is configured.
Provider selection
There is no provider-selection flag. Every configured, usable provider participates in this fallback order:
Resend → AWS SES → SMTP → Azure Communication Services → Gmail
The first provider handles normal traffic. Later providers are tried only after a failure. Configure a single provider or verify the sender and permissions for every fallback you enable.
Shared settings
Configure a provider
Apply configuration
For Compose, save provider settings in .env beside the Compose file and recreate the app:
docker compose -f docker-compose.prod.yml up -d --force-recreate simstudioFor a source checkout, save them in apps/sim/.env and restart the app.
Kubernetes
Choose one of the chart's secret strategies:
- Inline mode: set credentials under
app.env; Helm writes them to a Secret but also retains them in release values. Do not commit secret values to Git. - Existing Secret: add the provider keys to the pre-created app Secret. Credentials set explicitly under
app.envin this mode are inlined into pod specs. - ESO: map each credential under
externalSecrets.remoteRefs.app; the chart-managed inline Secret is disabled. Useapp.envDefaultsfor non-secret sender settings.
For example, merge this into a complete ESO configuration whose store and core secrets are already configured:
app:
envDefaults:
FROM_EMAIL_ADDRESS: "Sim <noreply@yourdomain.com>"
externalSecrets:
remoteRefs:
app:
RESEND_API_KEY: "sim/app/resend-api-key"Restart the affected app pods after the credentials have synchronized:
kubectl rollout restart deployment/sim-app -n simstudioVerify delivery
Invite a test member from workspace settings, confirm the message arrives, and accept it. If verification is required, also test a new account's verification message and a password reset.
Set LOG_LEVEL=INFO and restart/recreate the app before using logs to diagnose skipped delivery. The production default is ERROR; log-level values are uppercase.
kubectl logs -n simstudio -l app.kubernetes.io/component=app --tail=100 | grep -i mailFor Compose, use docker compose -f docker-compose.prod.yml logs simstudio.
| Signal | Diagnosis |
|---|---|
| No-provider log with recipient, subject, and sender | Sim skipped delivery. Configure a usable provider. |
| Provider error | Check the named provider's credentials, sender, permissions, and quotas. Later configured providers may be tried. |
| Provider acceptance but no message | Check delivery status in its dashboard, recipient filtering, SPF, DKIM, and DMARC. Acceptance does not prove inbox delivery. |
