Email looks simple until you need it to arrive.

For self-hosted apps, email usually means one of three things:

  • password reset and invite emails
  • transactional notifications
  • newsletters and campaigns

Those use cases overlap, but they do not have the same operational risk.

Quick Choice

Goal Start Here
Send newsletters from your own dashboard listmonk
Run broader marketing automation Mautic
Configure app invites and alerts App-specific SMTP sections
Choose domain email hosting Static website self-hosting guide
Understand MX, SMTP, IMAP, POP3 Static website email section
Handle serious deliverability SMTP provider plus SPF/DKIM/DMARC

Newsletters and Campaign Email

listmonk is the focused newsletter and mailing-list tool.

Use it when you want:

  • subscribers and lists
  • campaign drafts and templates
  • SMTP delivery through your chosen provider
  • bounce handling
  • an API for transactional email
  • PostgreSQL-backed ownership of subscriber data

Useful guide:

Mautic is broader. It is the better fit when email is one part of a larger contact and campaign system.

Use it when you want:

  • contacts and segments
  • forms and landing pages
  • email campaigns
  • campaign automation
  • tracking and reporting
  • CRM-like marketing operations

Useful guide:

Transactional Email and App Notifications

Many self-hosted apps only need SMTP for account flows and alerts. Do not overbuild this.

Examples in the post archive:

App Email Use
Vito deployment notifications, team invitations, server alerts
Teable invitations and notifications
Chartbrew password reset and team invitations
Atria event invitations and notifications
Checkmate uptime alerts and notification templates
GeoPulse admin account bootstrap through configured email

Useful guides:

Domain Email Basics

The static-site self-hosting guide has the broadest domain-email overview in the current archive.

It covers:

  • choosing managed email hosting
  • self-hosted email server caveats
  • MX records
  • SMTP for sending
  • IMAP/POP3 for receiving
  • common providers such as Resend, Postmark, Mailgun, MailerLite, and SendGrid

Useful guide:

Deliverability Checklist

For any domain that sends email, check these before a real campaign:

  • MX records for receiving mail, if the domain receives mail.
  • SPF record allowing your chosen sender.
  • DKIM signing enabled at the provider.
  • DMARC policy published, even if it starts as monitoring-only.
  • Bounce handling configured for newsletter tools.
  • Unsubscribe links and list hygiene for campaigns.
  • A real From domain that matches the sender infrastructure.
  • Rate limits that match the SMTP provider and audience.

For small self-hosted apps, a transactional provider is often more pragmatic than running a full mail server.

SMTP Provider Pattern

Most apps want the same shape:

SMTP_HOST=smtp.example.com
SMTP_PORT=587
SMTP_USER=your-user
SMTP_PASSWORD=your-password
[email protected]
SMTP_TLS=true

Names vary by app. Some use MAIL_*, BACKEND_MAIL_*, or app-specific variables.

The operational model is the same: let the app generate the message, let a trusted SMTP provider deliver it, and keep DNS aligned with that provider.