LASSIC Media らしくメディア
Listmonkでメール配信基盤をセルフホスト構築・外注
LASSIC IT事業部|元請(プライムベンダー)としてシステム保守・運用を受託
この記事のポイント
- Listmonkは、Goで書かれた単一バイナリとPostgreSQLだけで動く無料のセルフホスト型メール配信・ニュースレター管理システムです。
- SQLクエリによる購読者セグメンテーションやマルチSMTPキュー、バウンス自動処理など、Mailchimp/SendGrid的な機能を自社サーバー上で運用できます。
- 構築・SMTP接続・配信品質の維持には専門知識が必要になるため、内製と外注のどちらで進めるかを費用構造とリスクの両面から判断する必要があります。
目次
Listmonkとは?セルフホスト型メール配信・ニュースレター管理OSS
Listmonkとは、公式サイトが「self-hosted, high performance one-way mailing list and newsletter manager」と説明する、無料のセルフホスト型メール配信・ニュースレター管理システムです*1。バックエンドはGo言語による単一バイナリ、フロントエンドはVue(TypeScript)で構築されており、依存するミドルウェアはPostgreSQLのみというシンプルな構成が特徴です*1*3。GitHub公式リポジトリでは、本稿執筆時点(2026年7月)で22,000件を超えるスターを獲得しています*3。
Mailchimp・SendGridといった海外SaaS型のメール配信サービスは、購読者数や配信数に応じた従量課金が発生し、為替変動の影響も受けます。Listmonkはライセンス費用が発生しないOSSであり、自社サーバーに構築すれば配信基盤そのものの利用料は発生しません*4。ライセンスはGNU Affero General Public License version 3(AGPLv3)で、ソースコードは無料で利用・改変できます*4*5。ただしAGPLv3は、改変したソフトウェアをネットワーク経由でサービス提供する場合にもソースコード開示義務が及ぶ点で、一般的なGPLより適用範囲が広いライセンスです*5。自社改変を加えて外部提供する構想がある場合は、この条件を事前に確認しておく必要があります。
SQLクエリで大量の購読者をセグメント管理する仕組み
シングル/ダブルオプトインのリスト管理
公式サイトは、Listmonkについて「Manage millions of subscribers across single and double opt-in lists」と説明しており、シングルオプトイン・ダブルオプトインの両方のリスト形式で、数百万件規模の購読者を管理できるとしています*2。ダブルオプトインは、購読登録時に確認メールへの応答を求める方式で、誤登録やスパム的な登録を抑える運用に向いています。
SQL式による柔軟なセグメンテーション
特徴的なのは、購読者の検索・セグメンテーションにSQL式を直接使える点です*2。公式サイトは「Query and segment subscribers with SQL expressions」と紹介しており*2、属性や行動履歴に応じた条件を柔軟に組み合わせて配信対象を絞り込めます。あらかじめ用意されたテンプレートのセグメント機能だけでなく、SQLを直接扱える情報システム部門であれば、より複雑な抽出条件も設計しやすいでしょう。一方で、SQL構文に不慣れな担当者には運用のハードルになり得る仕組みでもあります。
テンプレート機能と配信フォーマットの柔軟性
Listmonkのテンプレート機能は、Goのテンプレート言語をベースにしており、公式サイトによれば件名や本文で100以上の関数を利用できます*2。作成方法もドラッグ&ドロップのビジュアルエディタ、WYSIWYG、Markdown、HTML、プレーンテキストと複数の選択肢が用意されています*2。デザインの自由度と実装のしやすさを、担当者のスキルに応じて選べる構成です。
加えて、テンプレート化されたメッセージをAPI経由で送信する「トランザクションメッセージ」機能も備えており、メール以外にSMS・WhatsAppといった複数チャネルへの送信にも対応するとされています*2。パスワードリセット通知や注文確認といった、ニュースレターとは異なる単発の自動送信をLPやアプリケーションから呼び出す用途にも活用できる設計です。
マルチSMTPキューとレート制限による高スループット配信
マルチスレッド・マルチSMTPキューの仕組み
Listmonkは、公式サイトが「Multi-threaded, multi-SMTP high-throughput email queues」と説明する配信エンジンを備えています*2。複数のSMTPサーバーを登録して並列に配信できる仕組みで、スループット制限とスライディングウィンドウ方式のレート制限にも対応するとされています*2。ただしListmonk自体はメール送信そのものを保証する配信インフラではなく、実運用では別途SMTPリレー(AWS SESやSendGrid、Postmark等)を用意し、そこへ配信を委ねる構成が一般的です*7。到達率・SPF/DKIM設定を含むメール到達性の担保は、接続先SMTP側の設定と運用に依存します。
公式サイトが示す配信実績の一例
公式サイトでは、あるプロダクション環境での事例として、700万通を超えるメール配信において「CPU usage is a fraction of a single core with peak RAM usage of 57 MB」(CPU使用率はシングルコアの一部にとどまり、ピーク時のメモリ使用量は57MB)という報告が紹介されています*2。あくまで特定環境における一事例であり、配信量やSMTP側の処理能力によって実際の負荷は変動する点に留意が必要です。
バウンス管理とブロックリスト自動化の仕組み
POP3スキャンとWebhookによるバウンス検知
公式ドキュメントによれば、Listmonkのバウンス検知には複数の方法があります。1つは、専用のバウンス受信用メールボックス、またはキャンペーンの差出人アドレス宛に届いた戻りメールをPOP3で監視する方法です*6。もう1つは、「/webhooks/bounce」というWebhookエンドポイントを使い、外部システムやカスタムスクリプトからバウンスイベントを受け取る方法です*6。AWS SES・Azure Communication Services・SendGrid・Postmark・Forward Email・Lettermintについては、専用のWebhook連携が組み込みで用意されています*6。
ソフト/ハード分類としきい値による自動アクション
受信したバウンスメールの内容やSMTPステータスコード(4.x.xと5.x.x)をヒューリスティックに解析し、「ソフトバウンス」「ハードバウンス」に分類する仕組みも備えています*6。既定値では、ソフトバウンスは2回発生するまでアクションなし、ハードバウンスと苦情(complaint)は1回発生した時点でブロックリスト登録という設定が案内されています*6。これらのしきい値は、AWS SES利用時の送信者評判維持を意識した設計であり、自社のメールドメインの評判を守るうえでも確認しておきたい設定項目です。
Docker Composeで構築する標準的な導入手順
docker compose upで起動する基本フロー
公式ドキュメントは、Dockerを使った導入を推奨手順として案内しています*3。付属のdocker-compose.ymlをダウンロードし、「docker compose up -d」を実行するとPostgreSQLコンテナとListmonk本体のコンテナが起動し、既定では「http://localhost:9000」でセットアップウィザードにアクセスできます*3。初回セットアップ時の管理者アカウントは、LISTMONK_ADMIN_USER・LISTMONK_ADMIN_PASSWORDといった環境変数で指定することもできます*3。
バイナリインストールという代替手段
Dockerを使わない場合は、バイナリを直接配置する方法も用意されています。あらかじめPostgreSQL 12以上を用意したうえで、リリースされたバイナリをダウンロードし、「./listmonk –new-config」で設定ファイルを生成、「./listmonk –install」でデータベーステーブルを作成してから起動する流れです*3。この場合、Postgresサーバーの用意・接続設定・OSごとの依存関係の解決は自社で担う必要があり、Docker構成に比べて構築の手間は増える傾向にあります。
セルフホスト内製と外注委託のコスト構造比較
セルフホストによる内製構築と、外部パートナーへの委託では、費用構造・必要スキル・リスク対応の重心が異なります。以下の表に主な違いを整理しました。
| 比較項目 | セルフホスト内製 | 外注委託 |
|---|---|---|
| ライセンス費用 | AGPLv3の無料ソフトウェアのため発生しません*4*5 | ソフトウェア自体は無料ですが、構築・保守を委託する分の費用が発生します |
| 必要な専門知識 | Docker運用・Postgres管理・SMTPリレー接続・バウンス設計が必要です*3*6 | 専門パートナーが構築・調整を担うため、社内での知識習得は最小限で済みます |
| メール到達性の維持 | SPF/DKIM設定・SMTPリレーの選定・送信者評判の監視を自社で設計・運用します*7 | 到達性を含む配信品質の監視までを含めて委託できます |
| バウンス・ブロックリスト運用 | しきい値設定やWebhook連携を含め自社で設計・調整します*6 | 運用ルールの設計から監視までを委託先が対応します |
内製構築に必要なスキルと外注との違い
Docker運用・SMTP接続・分類設計に求められる専門知識
Listmonkを内製で構築・運用する場合、求められる専門知識は複数分野にまたがります。Dockerコンテナの運用とPostgreSQLの管理、外部SMTPリレーとの接続設定、SQLによる購読者セグメント設計、バウンス処理のしきい値調整がその内容です。自社の情報システム部門・マーケティング部門だけでこれらを完結させるには、複数の担当者が連携する体制を整える必要があるでしょう。
判断を先延ばしにしたまま自己流で構築を進めると、SMTPリレーの選定を誤って到達率が上がらない、バウンス処理を設計しないままドメインの送信者評判が低下するといった問題に後から気づくケースが生じます。特にAGPLv3のソースコード開示義務を正しく理解しないまま改変・再配布を進めると、思わぬライセンス上のリスクにつながりかねません*5。
専門パートナーに委託した場合の違い
専門パートナーに依頼すると、Docker環境の構築からSMTPリレーの選定・接続、購読者セグメントの設計、バウンス処理のしきい値調整まで一連の工程を任せられます。自社では構成検討や動作検証だけで時間がかかる場面でも、複数のメール配信基盤を扱ってきた知見を活用すれば、稼働までの期間を圧縮しやすくなります。内製と外注のどちらでも、まずは自社の配信規模とセグメント要件の整理が出発点と言えるでしょう。
まとめ:Listmonkセルフホスト活用の3つの判断軸
本稿ではListmonkの機能とセルフホスト構築の要点を、公式ドキュメントとGitHubリポジトリの情報に基づいて整理しました。要点は次の3つに集約されるでしょう。第一に、SQLセグメンテーション・マルチSMTPキュー・バウンス自動処理はAGPLv3の無料OSSで実現でき、ライセンス費用は発生しません*4*5。第二に、Docker運用・SMTPリレー接続・バウンス設計には専門知識が必要であり、メール到達性の維持は接続先SMTP側の設定にも依存します*7。第三に、AGPLv3特有のソースコード開示義務を踏まえた運用判断が必要であり、構築・運用の実行は外部委託によってリスクを抑えやすくなります*5。
よくある質問
Listmonkは無料で商用利用できますか。
はい、AGPLv3ライセンスのOSSであり、ソースコードは無料で利用・改変できます*4*5。ただし改変したソフトウェアをネットワーク経由でサービス提供する場合、ソースコード開示義務が及ぶ点はGPLより適用範囲が広く、事前に条件を確認したうえで運用することが大切です*5。
MailchimpやSendGridの代わりにそのまま置き換えられますか。
Listmonkはリスト管理・セグメンテーション・配信・バウンス処理といった機能を備えていますが、実際のメール送信には別途SMTPリレー(AWS SESやSendGrid等)の接続が必要です*7。到達性やSPF/DKIMの設定は接続先SMTP側の運用にも依存するため、単体でSaaS配信サービスの全機能を代替するものではありません。
Listmonkの構築にはどのくらいの専門知識が必要ですか。
Docker Composeでのコンテナ管理、PostgreSQLの運用、SMTPリレーとの接続設定、SQLによる購読者セグメント設計など複数分野の知識が求められます*3。バイナリインストールを選ぶ場合はPostgreSQL 12以上を別途用意する必要があります*3。
バウンスメールへの対応はどのように行われますか。
POP3でバウンス受信用メールボックスを監視する方法と、Webhookエンドポイントで外部システムからバウンスイベントを受け取る方法があります*6。ソフト/ハードバウンスをしきい値に基づき自動判定し、ハードバウンスや苦情は既定で1回の発生でブロックリストに登録されます*6。
大量の購読者がいても運用できますか。
公式サイトは、シングル/ダブルオプトインのリストで数百万件規模の購読者を管理できるとしています*2。SQL式によるセグメンテーションにも対応しており、条件を組み合わせた配信対象の絞り込みが可能です*2。
著者:テレリモ総研編集部 鈴木 亮佑
ご不明な点はお問い合わせフォームからもご連絡いただけます。
- *1 出典:Listmonk公式サイト「Documentation」(https://listmonk.app/docs/)
- *2 出典:Listmonk公式サイト トップページ(https://listmonk.app/)
- *3 出典:Listmonk公式ドキュメント「Installation」(https://listmonk.app/docs/installation/)
- *4 出典:Listmonk公式GitHubリポジトリ「README」(https://github.com/knadh/listmonk)
- *5 出典:Listmonk公式GitHubリポジトリ「LICENSE」(https://github.com/knadh/listmonk/blob/master/LICENSE)
- *6 出典:Listmonk公式ドキュメント「Bounce processing」(https://listmonk.app/docs/bounces/)
- *7 出典:Listmonk公式ドキュメント「Bounce processing」記載のSMTPプロバイダ連携情報(https://listmonk.app/docs/bounces/)