ピラーガイド · 22 分で読了 · 更新日 May 2026

2026 年のセルフホスト型メールマーケティング — リスト、配信、コストを自社で所有する。

セルフホスト型メールマーケティングとは、キャンペーン管理ソフトウェア、購読者データベース、配信パイプラインを Mailchimp や Brevo といった SaaS から借りるのではなく、自社が管理するインフラ上で稼働させることを指します。トレードオフは明確で、devops を自社で担う代わりに、送信通数に対して線形なコスト、完全なデータ所在地の管理、そしてプラットフォーム任せではなく自社ドメインのレピュテーションで伸びる到達率を手に入れます。本ガイドでは、アーキテクチャ、コストの計算、到達率の基礎、主要プラットフォームを順に解説します。すべての主張は、ファイルパスまたは公開された情報源に紐付けられています。

本ガイドの目次

  1. セルフホスト型メールマーケティングとは
  2. 仕組み — アーキテクチャ
  3. なぜチームはセルフホストへ移行するのか
  4. 5K → 200K 購読者規模でのコスト比較
  5. 配信アーキテクチャの選び方
  6. オープンソースプラットフォームの客観比較
  7. セットアップロードマップ (サーバー → DNS → ウォームアップ)
  8. 到達率の基礎
  9. GDPR とデータ所在地
  10. セルフホストが不適切な場面
  11. FAQ
  12. 次に読むべきページ

§1 · 定義

セルフホスト型メールマーケティングとは

セルフホスト型メールマーケティングとは、メールマーケティングアプリケーション (リスト管理、キャンペーンビルダー、オートメーションフロー、分析) を自社サーバー上で稼働させ、配信パイプラインも自社で管理する方式です。対極にあるのが SaaS モデルで、ベンダー (Mailchimp、Brevo、Constant Contact、Klaviyo、ConvertKit、MailerLite、Campaign Monitor) がアプリケーション配信インフラを代行ホスティングし、購読者数に応じた月額料金を請求します。

セルフホスト構成は 3 つのコンポーネントで成り立ち、下 2 つは自社が所有します:

  1. アプリケーション層。インストール可能な Web アプリ — 通常は PHP/Laravel、Go、Ruby、Node — が、購読者リスト、キャンペーン下書き、オートメーショントリガー、クリック/開封トラッキング、マーケターが使うダッシュボードを担います。例: AcelleMail、Listmonk、Mautic、Sendy。
  2. 配信パイプライン。キューに入ったメッセージを受け取り、受信側メールサーバーと SMTP で会話する Mail Transfer Agent (MTA) に引き渡す仕組みです。自前の MTA (Postfix、Postal、Haraka) を運用する、relay-as-a-service (Amazon SES、SendGrid、Mailgun、Postmark、SparkPost) を使う、あるいはその両方を組み合わせる — 送信量と IP レピュテーション管理に割けるリソース次第で選択します。
  3. インフラ。Linux VPS、マネージドの Postgres/MySQL インスタンス、Redis または beanstalkd のキュー、自社で管理するドメイン、そして SPF、DKIM、DMARC、PTR レコードを扱える DNS 権限。小規模なリスト (購読者 50K 未満) であれば月額 $5〜$20 の VPS で十分に動作し、より大規模なリストはキューワーカーの増設と読み取りレプリカ DB で水平にスケールできます。

ここで交換しているのは、運用作業と引き換えに得る「送信あたりコスト」と「データ所在地」です。SaaS ベンダーは手順 2 と 3 を完全に抽象化する代わりに、購読者数に応じてスケールする月額料金という「抽象化税」を課します。セルフホストはその税金を取り戻す代わりに、サーバーのプロビジョニング、DNS 設定、配信リレーのセットアップに時間を投じます — 経験者なら 1 時間以内、初めての方でもドキュメントを参照しながら週末で完了するレベルの作業です。

「セルフホスト」を「すべてをゼロから自作する」と混同してはいけません。主要なオープンソースプラットフォームはすべてターンキー形式のインストーラーで配布されており、アップロードして DB 認証情報を設定し、ドメインを向けるだけです。自分でやる部分は配信リレーと DNS のみで、Amazon SES (または任意の SMTP リレー) を使えば、最初に一度フォームを記入するだけに縮まります。

§2 · アーキテクチャ

セルフホスト型メールマーケティングシステムは実際にどう動くのか

キャンペーン配信は 5 つのステージを経ます。これを理解しておくことは、プラットフォーム選定、配信リレーの選定、そして到達率が振るわないときの調査の前提となります。

[Marketer's browser]
        │
        ▼  HTTPS POST /campaigns
[Web app — Laravel/Symfony/Go]  ◀── REST API also lands here
        │
        ▼  enqueue per-recipient job
[Job queue — Redis / beanstalkd / DB]
        │
        ▼  worker picks job, renders MIME
[Sending driver — SES/Mailgun/SMTP]
        │
        ▼  TLS, AUTH, DATA, .
[Mail Transfer Agent (MTA)]
        │
        ▼  SMTP to recipient MX
[Recipient mail server — Gmail/O365/Yahoo]
        │
        ▼  open pixel · click redirect · bounce · complaint
[Webhook back to web app] ◀── reputation feedback loop

ステージ 1 — キャンペーン作成。マーケターが Web UI 上でキャンペーンを作成します: 件名、送信者名、リストの選択、コンテンツエディター (ドラッグ&ドロップ、MJML、または生の HTML)。「送信」ボタンを押した時点で、アプリケーションはキャンペーンレコードを作成し、受信者ごとのジョブをバックグラウンドキューに投入します。この時点ではまだサーバーから何も外に出ていません。

ステージ 2 — キュー + ワーカー。バックグラウンドワーカーがキューに設定されたレート (通常はワーカー 1 台あたり 5〜50 通/秒) でジョブを取り出します。ワーカーは購読者レコードを取得し、カスタムフィールドをテンプレートにマージし、message-id をキーにしたトラッキングピクセルを埋め込み、すべてのリンクをクリック計測リダイレクトに書き換えます。出力は、配信ドライバーに渡せる完全にパーソナライズ済みの MIME メッセージです。

ステージ 3 — 配信ドライバー。ドライバーはアプリケーションと選択したトランスポート (Amazon SES の API 呼び出し、Mailgun への HTTPS POST、SendGrid Web API 呼び出し、自前 Postal MTA への生の SMTP AUTH PLAIN ハンドシェイクなど) を仲介するアダプターです。たとえば AcelleMail の配信ドライバーパターンは、すべてのドライバーが実装する 5 メソッド契約 (connect, send, getDeliveryStatus, getCapabilities, validateConfig) を定義しています — 完全なドライバーガイドラインは /developers/sending-drivers を参照してください。標準で Amazon SES、SendGrid、Mailgun、SparkPost、Elastic Email、Gmail SMTP、汎用 SMTP サーバー向けのドライバーが同梱されています (8 ベンダーが app/SendingServers/Drivers/Vendors/ 配下に実装されています)。

ステージ 4 — MTA → 受信者。MTA (自社のもの、またはリレーのもの) が受信者の MX サーバーに SMTP 接続を開き、HELO/EHLO で自己紹介し、STARTTLS をネゴシエートし、DKIM 署名鍵で認証し、メッセージを送信します。受信側メールサーバーはスパムスコアリング、SPF/DKIM/DMARC の検証、List-Unsubscribe ヘッダーの処理を行い、受信トレイに振り分けるか拒否するかを決定します。

ステージ 5 — フィードバックループ。3 種類のシグナルがすべて非同期で返ってきます。バウンスは SMTP 経由 (ハードバウンスは 5xx、ソフトは 4xx) またはリレーの Webhook 経由で届きます。苦情 (受信者が「迷惑メール」を押した場合) はメールボックスプロバイダーの Feedback Loop、もしくはこちらもリレーの Webhook 経由で届きます。エンゲージメント (開封ピクセルへのアクセス、クリック用リダイレクトのリクエスト) は通常の HTTP として Web アプリに戻ります。アプリケーションはこれらを使ってサプレッションリストを更新し、無効なアドレスを退避し、キャンペーン分析にフィードします。AcelleMail の Webhook イベントカタログは config/webhook_events.php にあり、アプリケーションが発火・受信するイベントの公式一覧となっています。

どのセルフホストプラットフォームでも全体像は同じで、変動するのはキューと MTA がどこに置かれるかだけです。AcelleMail のワーカーはデフォルトで Web アプリと同じマシン上で動作します。Listmonk も同様で、Mautic は Symfony Messenger を採用し、別マシンのワーカーもサポートします。メールリレーはローカル (同一マシン上の Postal、別マシンの Postfix) でもリモート (SES、Mailgun) でも構いません — その判断は §5 のテーマです。

§3 · 動機

なぜチームは SaaS からセルフホストへ移行するのか

1. 送信あたりコストが線形になる

SaaS の料金は送信頻度に関係なくコンタクト数でスケールします。セルフホストはこの 2 つを切り離します: ソフトウェアは固定費 (Listmonk/Mautic は無償、AcelleMail Standard は $80 の買い切り、Sendy は $59)、送信費用はリレーの公開料金で受信者ごとに課金されます (Amazon SES は 1,000 通あたり $0.10)。50,000 購読者に週 1 回キャンペーンを送る場合、プラットフォーム料金は Mailchimp Standard の月 $385 から、おおよそ月 $20 の送信費用へ移ります — 詳細は §4 の表をご覧ください。

2. 購読者データが自社サーバーに残る

メールアドレス、カスタムフィールド、セグメントタグ、クリック履歴、開封履歴、苦情 — すべてが自社で管理するデータベースに格納されます。第三者のデータ処理者は介在しません。マーケティング・データファブリック連携を口実にしたプラットフォーム側のデータダンプもありません。スキーマは自社で書いた (あるいは読める) ので CSV エクスポートですべてカバーできます。監査義務のある SaaS 課金構成にとって、このデータ所有権はコンプライアンスの土台です。

3. 到達率は自社ドメインとともにスケールする

SaaS プラットフォームでは、自社の送信者レピュテーションは他のテナントと混在します。隣のテナントの苦情が自社ドメインの到達率に波及することもあります。Amazon SES のようなリレーを使ったセルフホストなら、専用 IP のオプション (または共有 IP、どちらでも) を選択でき、メールボックスプロバイダーが実際にスコアリングする From ドメインのレピュテーションは自社単独のものになります。ウォームアップ、スロットリング、IP ローテーションは目に見える操作レバーであって、プラットフォーム側の隠された挙動ではありません。

4. 構造上ベンダーロックインがない

スキーマ、テンプレート、オートメーションフロー、(オープンソースの場合は) ソースコードまで、すべてが自社のディスク上に存在します。セルフホストからの移行はデータエクスポートで済み、統合プロジェクトにはなりません。配信リレー間の移行は設定変更だけです。出口コストは「1 つのフォームを差し替えるコスト」であり、「新しいベンダーのエディターで 9 か月分のオートメーショントリガーを作り直すコスト」ではありません。

5. コンプライアンス姿勢を自社で定義できる

リージョンを選ぶ (eu-west-1、us-east-1、ap-southeast-1)。保持期間を選ぶ。どのカスタムフィールドを保存時に暗号化するか選ぶ。欧州司法裁判所の Schrems II 判決により、SaaS でホストされたリストに対する越境データ転送は法的に頭痛の種であり続けています。EU リージョンのインフラ上でセルフホストすれば、その問題自体がテーブルから消えます。詳細は §9 を参照してください。

6. 拡張性は機能要望ではなくコードで実現する

プラットフォームがサポートしないカスタムセグメント、CRM へつなぐ Webhook、リセラー向け請求の地域別ペイメントゲートウェイ、業種特化レポート — どれもロードマップに登録するのではなく、200 行のプラグインや SQL クエリで実装できます。AcelleMail はプラグイン SDK を提供し、フック、ライフサイクル、ドライバー、ゲートウェイ、テストを網羅した 11 本のソース根拠付き開発者ドキュメントが揃っています。

§4 · コスト計算

5K、10K、50K、200K 購読者規模での実コスト

前提: 購読者 1 人につき週 1 回のキャンペーン (コンタクトあたり月 4.33 通)、Amazon SES の公開料金 1,000 通 $0.10、アプリケーション用に月額 $5〜$20 の VPS、そして AcelleMail の $80 買い切り Standard ライセンスを 36 か月で按分するか、無償のオープンソースを使うかのいずれか。Mailchimp Standard ティアの価格は May 2026 時点の公開料金です。

購読者数 Mailchimp Standard / 月 セルフホスト SES + VPS / 月 3 年間の節約額
5,000$100約 $7約 $3,300
10,000$135約 $9約 $4,500
50,000$385約 $25約 $13,000
200,000$1,310約 $90約 $44,000

「セルフホスト」列は SES の送信費用 + 月額 $5〜$20 の VPS + 月額 $2 で按分したライセンスを含みます。セットアップ時間は含めていません。Mailchimp Standard 料金は 2026 年 5 月時点の mailchimp.com/pricing/marketing に準拠します。

計算式に含まれない要素

この表は 2 つの軸で控えめに、1 つの軸で強気に算定しています。控えめその 1: 週 1 通を前提としていますが、多くのリストは週 2〜4 通を送っており、これだけで節約額は 2〜4 倍になります (送信費用は通数に対して線形ですが SaaS プランの上限は変わらないため)。控えめその 2: トランザクションメール (パスワードリセット、領収書メール) の節約は反映していません。SaaS の場合これらは Mailchimp Transactional / Postmark / SendGrid といった別プランに乗りがちですが、セルフホストなら同じ SES の請求にまとまります。

強気な点: 初期セットアップや継続メンテに割く工数を計上していません。妥当な見積もりとしては、初回インストールにエンジニアの 8〜16 時間、その後は OS パッチ、証明書更新、キュー監視、バウンスリストの整備に月 1〜2 時間です。社内人件費を時給 $100 とすれば月 $200 のオーバーヘッドで、購読者 5,000 では大きく、50,000 では微々たるもの、200,000 では十分に利益が出ます。

もっとも分かりやすい見方は: セルフホストは「送信あたり固定費型」、SaaS は「購読者課税型」のアーキテクチャである、というものです。両者がクロスする地点はチームごとに異なりますが、毎週コンスタントに配信する 10,000 通超のリストではどこでも、SaaS プレミアムが支出の中で支配的になります。機能粒度の対比は /vs/mailchimp でご覧いただけます。

§5 · 配信アーキテクチャ

配信パイプラインの選び方

セルフホストでは「マーケティングアプリ」と「SMTP を話す存在」を切り離せます。主流は 3 つのアーキテクチャで、それぞれコスト、制御性、レピュテーションのプロファイルが異なります。

A. クラウド SMTP リレー (多くのチームに推奨)

Amazon SES、Mailgun、SendGrid、Postmark、SparkPost、Elastic Email — いずれも API または SMTP でメッセージを受け取り、受信者との実際の SMTP トランザクションを代行する商用リレーです。IP プールの公開、ウォームアップのデフォルト設定、ブロックリスト監視、Feedback Loop レポート対応もまとめて担います。AcelleMail のベンダードライバーは主要 5 社 (app/SendingServers/Drivers/Vendors/{Amazon, Mailgun, SendGrid, SparkPost, ElasticEmail}) をすぐに使えるかたちで同梱しており、それ以外のリレー向けには汎用 SMTP ドライバーが用意されています。

これがデフォルトである理由: SES は 1,000 通あたり $0.10、月額の最低料金はありません。リレー側が rDNS、MX バックアップ、リトライ制御、苦情フィードバックのパースといった面倒な部分を引き受けます。自社で保有するのはドメインのレピュテーションで、外部に委ねるのは IP レピュテーションです。95% のチームにとって、この分担が正解です。

B. 自前の MTA を運用する (Postal / Postfix + DKIM)

Postal は自社サーバーにインストールし、マーケティングアプリから SMTP ターゲットとして扱えるオープンソースのメールプラットフォームです。Postfix は長年の実績がある Unix MTA で、柔軟性は高い反面、設定項目も多くなります。いずれも送信 IP を完全に自社管理できるため、特定の到達率要件 (銀行、医療事業者、専属のアビューズデスクを持つ大量送信者) では正しい選択になります。

難易度が高い理由: IP ウォームアップ、苦情フィードバックのパース、ブロックリスト除外申請、ポート 25 が 5xx を返し始めたときのオンコール対応まで自社で持つことになります。大手クラウドプロバイダー (DigitalOcean、AWS) はデフォルトでアウトバウンドの 25 番ポートを制限するため、コロケーション、専用 MTA ホスト、または直接送信を明示的に許可するプロバイダーが必要です。月 10M 通超、もしくは規制業界では検討に値しますが、それ以外のチームにはオーバーエンジニアリングです。

C. ハイブリッド (複数リレーの自動ローテーション)

AcelleMail (および成熟したセルフホストプラットフォームの大半) は、複数の送信サーバー構成をサポートしています。トランザクションは Postmark、マーケティングは SES、再エンゲージメントキャンペーンは Mailgun といったルーティングが可能で、それぞれ独自の 1 日クォータ、IP プール、DKIM 鍵を持てます。これは大量送信者の構成で、リレー多様化により 1 社の IP プールがブロックされた際の影響範囲を抑えつつ、送信あたりコストと緊急度をマッチさせられます。ドライバーレジストリ (app/SendingServers/DriverRegistry.php) が中央のカタログです。

判断の指針

  • 月 100 万通未満、運用負荷を最小化したい → Amazon SES (ダッシュボード重視なら Mailgun も可)。
  • 月 100 万〜1,000 万通、専用 IP が必要 → SES の専用 IP (IP 1 本あたり月 $24.95) または SendGrid Pro
  • 月 1,000 万通超、規制要件で完全な IP コントロールが必要 → 自社管理インフラ上の Postal
  • 顧客ごとに専用の送信ドメインが必要なマルチテナント SaaS → SES のドメイン別 Configuration Set または SendGrid Subuser 複数を、アプリ内で複数の sending-server レコードとして構成。

§6 · プラットフォーム

主要なオープンソース・セルフホストプラットフォームの客観比較

開示事項。本ページの発行元は AcelleMail です。自社のコードパスは透明性をもって引用し、競合の事実関係については各社の公開ドキュメントへリンクしています。下表はライセンスモデル、言語、配信モデル、訴求ターゲットを記録したもので、優劣の判断ではありません。

プラットフォーム ライセンス スタック 標準対応の配信先 訴求ポイント
AcelleMail $80 買い切り、ソース閲覧可 PHP 8.3、Laravel 11、MySQL SES、Mailgun、SendGrid、SparkPost、Elastic、Gmail、汎用 SMTP マルチテナント SaaS 課金 + プラグイン SDK
Listmonk AGPL v3 Go 単一バイナリ、Postgres 汎用 SMTP、サーバーごとに設定可能 軽量なニュースレター + トランザクション
Mautic GPL v3 PHP 8、Symfony、MySQL SMTP、Amazon SES、SendGrid (プラグイン経由) マーケティングオートメーション中心、CRM 寄り
Sendy $59 買い切り、クローズドソース PHP、MySQL Amazon SES (主要)、汎用 SMTP SES を介したニュースレター配信、最小限の UI
Postal MIT Ruby、MariaDB、RabbitMQ 自身が MTA として動作 (AcelleMail/Listmonk/Mautic と組み合わせて利用) セルフホスト MTA + リレー (キャンペーンツールではない)

実運用でこれらのプラットフォームを差別化する主要な軸は以下のとおりです:

  • マルチテナント性。AcelleMail と Mautic はテナントごとに送信量を制御する Customer/Plan モデルを備えており、メールマーケティングをサービスとして再販する場合や、マルチブランド構成を運用する場合に有用です。Listmonk と Sendy はシングルテナントです。
  • マーケティングオートメーション。Mautic はリードスコアリング + ドリップフロー + CRM 連携を念頭に設計されています。AcelleMail は条件分岐とイベントトリガーを備えたオートメーションフローを提供しています (オートメーションページ参照)。Listmonk は意図的にニュースレター型に寄せており、キャンペーンとトランザクションのみでフロービルダーは持ちません。
  • ライセンスモデル。Listmonk (AGPL v3) と Mautic (GPL v3) は派生著作物のソース公開をライセンス条件で要求します。AcelleMail は CodeCanyon Regular License (自社管理インストールで無制限利用) または Extended License (再販権付き) のソース閲覧可ライセンスです。Sendy はクローズドソースのバイナリ配布です。
  • プラグイン / 拡張モデル。AcelleMail はフック、ライフサイクル、ドライバー、ゲートウェイをカバーするドキュメント完備のプラグイン SDK を同梱しています。Mautic は CRM 連携を主眼としたプラグインをサポートします。Listmonk と Sendy はプラグイン機構を持たず、拡張はフォークが前提です。

選択はプロジェクトの形に依存するもので、「どれが最良か」という問いには答えがありません。購読者 5,000 人でプラグインの必要もない個人ニュースレターには Listmonk が適しています。顧客ごとのプラン、REST API、課金 Webhook 連携プラグインを必要とする SaaS チームには AcelleMail が向きます。リードをスコアリングする B2B セールスチームには Mautic が刺さります。Postal は配管役で、上記のどれかと組み合わせて使います。

§7 · Setup roadmap

From zero to first campaign — the seven-step roadmap.

A first-time setup with Amazon SES as the relay typically lands in 4–8 hours, with DNS propagation eating most of the wall-clock time. Subsequent installs (the second tenant, a staging environment) are 30 minutes.

1

Provision a Linux VPS

A $5–$10/month droplet (DigitalOcean, Hetzner, Vultr, OVH, AWS Lightsail) is enough for under 50K subscribers. Pick a region that matches your data-residency story — eu-west for EU customers, us-east for US, ap-southeast for APAC. Ubuntu 22.04 LTS or 24.04 LTS is the path of least surprise for any PHP-Laravel platform.

2

Install the runtime + database

For AcelleMail: PHP 8.3 with the imagick / mbstring / xml / curl / mysql extensions; MySQL 8 (or MariaDB 10.6+); Redis or beanstalkd for the queue; nginx as the reverse proxy. The standard Laravel deployment guide applies. For Listmonk: just the single Go binary plus Postgres. For Mautic: PHP 8, Symfony's extension list, MySQL, plus a queue worker.

3

Issue TLS + point your domain

Let's Encrypt via certbot covers TLS for free. Point an A record (or AAAA) at your droplet's IP. Add the application's domain (e.g. email.example.com) and a separate DKIM domain (e.g. mail.example.com — the bounced-from address) so reputation segments correctly.

4

Open a sending account (Amazon SES recommended)

Sign up to AWS, enable SES in the region of your choice, request production-mode access (24h turnaround), generate SMTP credentials. SES costs $0.10 per 1,000 emails and includes the first 62K/month free if you send from an EC2 instance — most setups won't qualify but the published rate is the rate. Configure a configuration set for tracking events (opens, clicks, bounces, complaints) and point its SNS topic at your application's webhook endpoint.

5

Set DNS authentication records

Three TXT records, plus DKIM-signing CNAMEs from SES. SPF: v=spf1 include:amazonses.com -all (or ~all for a softer first run). DKIM: 3 CNAMEs SES generates for you; copy them into your DNS. DMARC: v=DMARC1; p=none; rua=mailto:dmarc@yourdomain.com for the first month while you watch the reports, tighten to p=quarantine then p=reject as confidence builds. PTR (reverse DNS) is your hosting provider's setting — for SES, AWS handles it.

6

Connect application → relay

In the platform's admin UI, add a sending server: pick "Amazon SES" (or "SMTP" for any other relay), paste credentials, set daily quota at 80% of your relay's published limit. Most platforms include a "Send test" button that fires a single message to a verified address — use it before any real campaign. AcelleMail's verification flow walks the validation pipeline at /developers/sending-drivers.

7

Warm the IP, watch the metrics

If you're on a fresh dedicated IP (rare for first-time SES), warm over 4–6 weeks: 50 sends day 1, doubling every 2–3 days, capped at the relay's daily limit. On SES shared IPs, this is handled for you. Watch bounce rate (target < 2%), complaint rate (target < 0.1%), and the Mailbox Provider deliverability dashboards (Google Postmaster Tools, Microsoft SNDS). Day 30: if metrics are stable, tighten DMARC; day 60: review send cadence and segment-level engagement.

§8 · Deliverability

The deliverability fundamentals every self-hosted sender owns.

Mailbox providers — Gmail, Outlook, Yahoo, Apple Mail — score every incoming message against a stack of authentication and reputation signals before deciding inbox vs. spam vs. reject. On SaaS the platform abstracts these signals; self-hosted you tune them yourself. The good news: the standards are public and stable.

SPF — Sender Policy Framework (RFC 7208)

A TXT record on your sending domain that lists the IPs allowed to send mail "as" that domain. Mailbox providers check the envelope-from against the SPF record; mismatches degrade reputation. With SES the record is one line: v=spf1 include:amazonses.com -all. For multi-relay setups, chain includes: v=spf1 include:amazonses.com include:mailgun.org -all. The -all tail says "anything not listed should be rejected"; for the first month use ~all (soft-fail) until you're confident the record is exhaustive.

DKIM — DomainKeys Identified Mail (RFC 6376)

A cryptographic signature on every outgoing message, signed by a key whose public half is published as a DNS TXT record at {selector}._domainkey.{domain}. The receiver fetches the public key and verifies the signature; tamper-evident header + body chain. SES generates three CNAMEs for you to add — done. Self-hosted MTAs need OpenDKIM or rspamd configured. DKIM failures don't usually trigger immediate rejection, but they erode the domain reputation score that drives placement.

DMARC — alignment + reporting (RFC 7489)

The policy on top of SPF + DKIM. DMARC says "the From-header domain must align with the SPF or DKIM domain, and here's what to do if alignment fails: monitor (p=none), quarantine (p=quarantine), or reject (p=reject)." Plus an rua address that gets daily aggregate reports of who's sending mail "as" you. Start at p=none for a month, read the reports, fix any forgotten subdomains, then move to p=quarantine, then p=reject. As of February 2024, Google and Yahoo require DMARC for bulk senders (5K+ sends/day) — not optional.

List hygiene — the suppression habit

Hard bounces (5xx codes — invalid mailbox, domain doesn't exist) must be suppressed permanently after the first occurrence; otherwise mailbox providers treat your list as poorly maintained. Soft bounces (4xx — full mailbox, temporary failure) are retried with exponential backoff and suppressed after 3–5 retries. Complaints — recipient hit "spam" — suppress immediately and forever. Re-engagement campaigns should target the engaged half of your list every 90 days; non-openers in 180+ days come off entirely. Every self-hosted platform exposes this; AcelleMail's per-list suppression model integrates with the bounce-handler webhook hooked up at step 4 above.

Engagement signals + IP reputation

Mailbox providers increasingly weight recipient engagement: opens, clicks, "not spam" gestures, replies. Sending the same message to your most-engaged 10% drives reputation up; sending to your dead 50% drags it down. Self-hosted means you have raw access to engagement data — segment campaigns to the engaged half, suppress the long-cold half, and watch the bounce + complaint rates. Tools to monitor: Google Postmaster Tools (free), Microsoft SNDS (free), the relay's own dashboard. Acelle's automation flows can branch on engagement-score custom fields, which is the cleanest place to encode the rule.

§9 · Compliance

GDPR, data residency, and the Schrems II question.

GDPR (EU 2016/679) treats subscriber email addresses + custom fields as personal data, with seven principles that bind the data controller (you) and the data processor (your hosting + sending vendors). The big practical implications:

  • Lawful basis. For marketing email, consent or legitimate interest. Both require a record (timestamp, IP, source) and an unsubscribe path. The List-Unsubscribe RFC 8058 one-click header is non-negotiable since Feb 2024 for Gmail/Yahoo bulk senders.
  • Data subject rights. Right of access (export their record), right to erasure (delete on request), right to portability. All three are SQL queries on a self-hosted setup; on SaaS they're vendor support tickets.
  • Data Processing Agreement (DPA). Your relationship with each processor needs a written agreement specifying retention, security measures, sub-processors. SaaS platforms publish theirs; self-hosted you have one (with the host) plus one (with the sending relay) — fewer parties, simpler audit trail.
  • International transfers (Schrems II). The 2020 Court of Justice decision invalidated Privacy Shield as the legal basis for EU→US personal data transfers, making cross-border SaaS storage a moving target. Self-hosted on EU infrastructure (Hetzner Falkenstein, OVH Strasbourg, AWS Frankfurt with EU-only configuration) sidesteps the question; the data never crosses a border.

Practical residency checklist:

  • VPS region matches your customers' jurisdiction (eu-west-1 / Frankfurt for EU, us-east-1 for US).
  • Sending relay region pinned (SES region selector — switching from us-east-1 to eu-west-1 is one config field).
  • Backups stored in the same region (S3 with a region-locked bucket, encrypted at rest).
  • Database backups, log retention, and tracking-pixel hosts all on the same continent as the application.
  • Sub-processors documented in your privacy policy (e.g. "We use AWS SES eu-west-1 for email delivery; data does not leave the EU").

For more on AcelleMail's security posture and the underlying audit-log + RBAC model, see /security. None of this constitutes legal advice — engage a privacy lawyer for the DPA review.

§10 · Honest trade-offs

When self-hosted is the wrong call.

Self-hosted is not strictly better than SaaS — it's better for specific shapes of team and use case, and worse for others. Three patterns where the SaaS option is the right answer:

Under 1,000 subscribers, no engineering on hand

A 500-contact list on Mailchimp Free costs $0/month. Self-hosted at that scale costs the same in dollars but adds an evening of setup and ongoing OS-patch maintenance. Below the 1K subscriber line, the SaaS free-tier is rational. Re-evaluate above 5K (when the SaaS pricing kicks in) or when you outgrow the free tier's feature ceiling.

No devops, no plans to acquire it

The application self-updates monthly. The OS needs patches. TLS certs renew. Queue workers crash and need restart. None of this is heavy lifting, but it requires someone who's comfortable with SSH and a runbook. If your team is marketers-only and you have no path to a contractor or a managed-Laravel service, the abstraction tax of SaaS is paying for someone else's on-call.

Regulated industry needing certified processors

HIPAA-regulated US healthcare, certain financial-services frameworks, government contractors — these sometimes require their email vendor to hold a specific certification (HITRUST, FedRAMP, SOC 2 Type II), with penalties for using non-certified processors. Some SaaS platforms have those certifications; self-hosted you're outsourcing certification to your hosting provider + sending relay, which works for AWS-backed deployments but adds audit overhead. Check first; pivot to SaaS if the cert requirement is binding.

The honest framing: self-hosted shifts the work, it doesn't eliminate it. If shifted-to-you is the wrong place for that work, SaaS is correct. For the much larger group where shifted-to-you means "shifted to your existing devops capacity," self-hosted compounds the longer you run it.

§11 · FAQ

Frequently asked questions.

Is self-hosted email marketing free?

The software can be free (Listmonk, Mautic) or one-time paid (AcelleMail $80, Sendy $59). The hosting and sending relay are paid: a $5–$20/month VPS plus Amazon SES at $0.10 per 1,000 sends. At 10,000 subscribers sending one campaign per week, total operating cost is roughly $9/month — versus $135/month on Mailchimp Standard. See §4.

Do I need to run my own SMTP server?

Almost never. The standard architecture pairs a self-hosted application (AcelleMail, Listmonk, Mautic) with a cloud sending relay (Amazon SES, Mailgun, SendGrid). The relay handles the SMTP transactions, IP reputation, and bounce feedback; you keep the list, the campaigns, and the analytics on your server. Running your own MTA (Postal, Postfix) only makes sense above ~10M sends/month or for specific regulatory requirements — see §5.

How long does setup take for a first-time installer?

A weekend including DNS propagation. The application install is 15–30 minutes (download, upload, configure DB credentials, run the installer). Setting up SES with verified identities is another 30 minutes plus 24h for AWS to flip your account out of sandbox mode. DNS records (SPF, DKIM, DMARC) are 10 minutes plus 0–48h for propagation. Sending the first test campaign is the next 15 minutes.

Will mailbox providers treat my self-hosted sends as spam?

Only if you treat your list poorly. SPF, DKIM, DMARC alignment plus low bounce rate (< 2%) and low complaint rate (< 0.1%) are the inputs Gmail/Outlook score on. A self-hosted setup behind a major sending relay (SES, SendGrid) inherits the relay's IP reputation; your job is keeping the From-domain reputation healthy through hygiene and engagement-targeted sends — see §8.

Can I migrate my Mailchimp list to a self-hosted platform?

Yes. Mailchimp Audience exports cover contacts, merge fields, tags, and campaign history as CSV. Most self-hosted platforms have a CSV importer that maps merge fields to custom fields. Plan a one-week parallel-run window: send through both providers to a cohort, compare deliverability, switch primary. Automation flows are rebuilt manually but typically take an afternoon for a five-step sequence.

Is self-hosted email marketing GDPR-compliant?

It can be — compliance is determined by how you operate, not the deployment model. Self-hosted makes some GDPR obligations easier (data subject rights are SQL queries; data residency is hosting region; sub-processors are countable on one hand). It doesn't remove your obligations as the data controller. See §9 for the residency checklist; consult a privacy lawyer for the DPA review.

What's the difference between AcelleMail, Listmonk, and Mautic?

Project shape. AcelleMail is multi-tenant SaaS-shaped (Customer + Plan model, plugin SDK, REST API, payment gateways) — fits resellers and SaaS founders. Listmonk is single-tenant newsletter-shaped (Go single binary, lean UI) — fits solo creators and high-volume newsletter teams. Mautic is automation-shaped (lead scoring, CRM bridges, drip flows) — fits B2B sales-driven teams. See the §6 platform table.

Can I send unlimited emails from a self-hosted setup?

"Unlimited" by the application — yes, the software has no contact or send caps. Bounded by your sending relay's published rate (SES is $0.10 per 1,000 sends, no cap; production-mode quotas start at 50K/24h and scale on request) and your queue worker throughput. For practical purposes, self-hosted has no platform-imposed ceiling — only the cost-per-send and the time it takes the queue to drain.

Does self-hosted include marketing automation and drip campaigns?

Yes on AcelleMail and Mautic — both ship visual flow builders with conditional branches, time delays, and event triggers. Listmonk is intentionally newsletter-only (campaign + transactional, no flow builder). Sendy has basic auto-responders. The AcelleMail automation page walks the flow surface in detail.

What happens if my server goes down during a campaign?

Campaign jobs sit in the queue (Redis or DB) and resume when the worker comes back online. SES holds your API quota until you make the call; you don't lose paid send credits. Practical mitigations: monitoring (Uptime Kuma, healthcheck.io) for the queue worker process; a database-backed queue (atomic, survives restarts) if you can't run Redis with persistence; one warm standby box for high-stakes lists. The blast radius of a 30-minute outage is "campaign delivery slips by 30 minutes," not "campaign lost."

Stop renting your subscriber list. Start owning it.

AcelleMail is a self-hosted email-marketing platform with multi-tenant billing, a documented plugin SDK, and built-in drivers for Amazon SES, Mailgun, SendGrid, SparkPost, and any generic SMTP. Standard licence $80 one-time. Lifetime updates. Try the live demo before you buy.

Get AcelleMail — $80 Try Live Demo