Docker

Configure Email

Copy page

Set up SMTP email for team invitations and password resets

Configure email delivery so the platform can send team invitation emails and password reset links. Without email configured, these features degrade gracefully — invitation links are shown directly in the UI and password reset is disabled.

Note
Note

For a feature overview of invitations and password reset, see Access Control.

How It Works

The email system uses a priority-based transport selection:

PriorityTransportWhen used
1ResendRESEND_API_KEY is set
2Generic SMTPSMTP_HOST is set (and no Resend key)
3DisabledNeither is set — email features are turned off

Both transports require SMTP_FROM_ADDRESS to be set. If the from address is missing, email is disabled even when a transport is configured.

Environment Variables

VariableRequiredDescription
SMTP_FROM_ADDRESSYesSender email address (e.g., noreply@example.com)
SMTP_FROM_NAMENoSender display name (e.g., Inkeep). Defaults to the address.
SMTP_REPLY_TONoReply-to address. Defaults to the from address.

Resend provides a managed email delivery service with high deliverability.

VariableRequiredDescription
RESEND_API_KEYYesYour Resend API key
.env
RESEND_API_KEY=re_your_api_key
SMTP_FROM_ADDRESS=notifications@yourdomain.com
SMTP_FROM_NAME=Inkeep
Tip
Tip

When using Resend, you don't need to configure any SMTP host or port variables — the system connects to Resend's SMTP relay automatically.

Option B: Generic SMTP

Use any SMTP server (Amazon SES, SendGrid, Gmail, self-hosted Postfix, etc.).

VariableRequiredDescription
SMTP_HOSTYesSMTP server hostname
SMTP_PORTNoServer port. Default: 587
SMTP_SECURENoUse TLS/SSL. Auto-detected from port if not set (true for port 465).
SMTP_USERNoSMTP authentication username
SMTP_PASSWORDNoSMTP authentication password
.env
SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_SECURE=false
SMTP_USER=apikey
SMTP_PASSWORD=your-smtp-password
SMTP_FROM_ADDRESS=noreply@example.com
SMTP_FROM_NAME=Inkeep

Local Development with Mailpit

Mailpit captures outgoing email locally without sending it to real recipients. This is the recommended setup for development and testing.

Mailpit is included in the default Docker Compose configuration. Configure the SMTP environment variables to point to it:

Configure environment variables

.env
SMTP_HOST=localhost
SMTP_PORT=1025
SMTP_SECURE=false
SMTP_FROM_ADDRESS=noreply@inkeep.local
SMTP_FROM_NAME=Inkeep

Start services and verify

docker compose up -d

Open http://localhost:8025 to view the Mailpit inbox. Any emails sent by the platform (invitations, password resets) will appear here.

What Happens Without Email

When email is not configured, the platform adjusts its behavior:

FeatureWith emailWithout email
Team invitationsInvitation email sent to the recipientInvitation link shown directly in the UI
Password resetReset link emailed to the user"Forgot password?" link hidden from the sign-in page

No errors are thrown — the UI adapts automatically based on whether email is available.

Verifying Email Configuration

After configuring your environment variables, restart services and test:

  1. Go to Settings in the sidebar
  2. Click Invite and send a test invitation
  3. Verify the email arrives (in Mailpit for local dev, or the real inbox for production)

If using Mailpit, open http://localhost:8025 to see the captured email.

Troubleshooting

Emails not being sent

  • Verify SMTP_FROM_ADDRESS is set — this is required for all transports
  • Check the API server logs for [email] warnings about missing configuration
  • For Resend: confirm your API key is valid and the from address domain is verified in Resend
  • For generic SMTP: verify the host, port, and credentials are correct

This is expected behavior when email is not configured. Set up SMTP or Resend to enable email delivery.

"Password reset unavailable" message

The forgot-password page shows this when email is not configured. Configure email to enable self-service password resets.