ニュースレターを安全に配信するための転送メール機能を備えたListmonk
概要
このガイドでは、強力なオープンソースのニュースレターおよびメーリングリスト管理ツールであるリストモンクを、SMTPプロバイダーとしてメールを転送するを使用するように設定する手順を開発者向けに段階的に説明します。この組み合わせにより、安全でプライバシーが確保され、信頼性の高いメール配信を確保しながら、キャンペーンを効果的に管理できます。
- Listmonk: 購読者管理、リストの整理、キャンペーンの作成、パフォーマンスの追跡を行います。
- メール転送: セキュアなSMTPサーバーとして機能し、SPF、DKIM、DMARC、TLS暗号化などのセキュリティ機能を組み込んでメールの送信処理を行います。
これら 2 つを統合することで、Forward Email の堅牢な配信システムを活用しながら、データとインフラストラクチャを完全に制御できます。
Listmonkとメール転送の理由
- オープンソース: Listmonk と Forward Email の理念は、どちらも透明性と制御性を重視しています。Listmonk はお客様ご自身でホストし、データの所有権を持ちます。
- プライバシー重視: Forward Email はプライバシーを最優先に設計されており、データ保持を最小限に抑え、安全な送信に重点を置いています。
- 費用対効果が高い: Listmonk は無料で、Forward Email は充実した無料プランと手頃な価格の有料プランを提供しているため、予算に優しいソリューションとなっています。
- スケーラビリティ: Listmonk は高性能で、Forward Email のインフラストラクチャは大規模な環境でも信頼性の高い配信を実現するように設計されています。
- 開発者向け: Listmonk は堅牢な API を提供し、Forward Email は簡単な SMTP 統合と Webhook を提供します。
前提条件
始める前に、次のものがあることを確認してください。
インストール
以下の手順では、Docker と Docker Compose を使用して VPS に Listmonk をインストールする方法について説明します。
1. サーバーを更新する
システムのパッケージ リストとインストールされているパッケージが最新であることを確認します。
sudo apt update && sudo apt upgrade -y
2. 依存関係をインストールする
Docker、Docker Compose、UFW (Uncomplicated Firewall) をインストールします。
sudo apt install -y docker.io docker-compose ufw
3. Listmonk設定をダウンロードする
Listmonk 用のディレクトリを作成し、公式の docker-compose.yml
ファイルをダウンロードします。
mkdir listmonk && cd listmonk
curl -Lo docker-compose.yml https://raw.githubusercontent.com/knadh/listmonk/master/docker-compose.yml
このファイルは、Listmonk アプリケーション コンテナーとそれに必要な PostgreSQL データベース コンテナーを定義します。
4. ファイアウォール(UFW)を構成する
ファイアウォールを通過する必須トラフィック(SSH、HTTP、HTTPS)を許可します。SSHが標準以外のポートで実行される場合は、それに応じて調整してください。
sudo ufw allow ssh
sudo ufw allow http
sudo ufw allow https
sudo ufw enable
プロンプトが表示されたら、ファイアウォールを有効にすることを確認します。
5. HTTPSアクセスを構成する
ListmonkをHTTPS経由で実行することはセキュリティ上非常に重要です。主に2つの選択肢があります。
オプションA: Cloudflareプロキシの使用(シンプルさのために推奨)
ドメインの DNS が Cloudflare によって管理されている場合は、プロキシ機能を活用して簡単に HTTPS を利用できます。
- DNS を指定: Cloudflare で、Listmonk のサブドメイン (例:
listmonk.yourdomain.com
) のA
レコードを作成し、VPS の IP アドレスを指定します。プロキシステータス が プロキシ済み (オレンジ色の雲マーク) に設定されていることを確認します。 - Docker Compose を変更: ダウンロードした
docker-compose.yml
ファイルを編集します。
sed -i 's/9000:9000/80:9000/' docker-compose.yml
これにより、Listmonk がポート 80 で内部的にアクセス可能になり、Cloudflare は HTTPS でプロキシし、セキュリティ保護できるようになります。
オプションB: リバースプロキシ(Nginx、Caddyなど)の使用
あるいは、VPS に Nginx や Caddy などのリバース プロキシを設定して、HTTPS 終了と Listmonk (デフォルトではポート 9000 で実行) へのプロキシ要求を処理することもできます。
- Listmonk がローカルからのみアクセスできるようにするため、
docker-compose.yml
にはデフォルトのports: - "127.0.0.1:9000:9000"
をそのまま使用します。 - 選択したリバースプロキシを、ポート 80 と 443 で listen し、SSL 証明書の取得(例:Let's Encrypt 経由)を行い、トラフィックを
http://127.0.0.1:9000
に転送するように設定します。 - リバースプロキシの詳細な設定はこのガイドの範囲外ですが、オンラインで多くのチュートリアルが利用可能です。
6. Listmonkを起動します
listmonk
ディレクトリに戻り (まだそこにいない場合は)、コンテナをデタッチ モードで起動します。
cd ~/listmonk # Or the directory where you saved docker-compose.yml
docker compose up -d
Dockerは必要なイメージをダウンロードし、Listmonkアプリケーションとデータベースコンテナを起動します。初回は1~2分かかる場合があります。
✅ Listmonk にアクセス: これで、設定したドメイン (例: https://listmonk.yourdomain.com
) 経由で Listmonk Web インターフェースにアクセスできるようになります。
7. Listmonkでメール転送SMTPを設定する
次に、転送メール アカウントを使用してメールを送信するように Listmonk を設定します。
- 転送メールでSMTPを有効にする:転送メールアカウントのダッシュボードでSMTP認証情報を生成していることを確認してください。まだ生成していない場合は、SMTP経由でカスタムドメインのメールを送信するためのメール転送ガイドの手順に従ってください。
- Listmonkを設定する:Listmonk管理パネルにログインします。
-
設定 -> SMTP に移動します。
-
Listmonkにはメール転送機能が組み込まれています。プロバイダーリストからForwardEmailを選択するか、以下の情報を手動で入力してください。
設定 | 価値 |
---|---|
ホスト | smtp.forwardemail.net |
ポート | 465 |
認証プロトコル | LOGIN |
ユーザー名 | 転送メールのSMTPユーザー名 |
パスワード | 転送メールのSMTPパスワード |
TLS | SSL/TLS |
メールから | ご希望のFrom アドレス(例:newsletter@yourdomain.com )。このドメインがメール転送に設定されていることを確認してください。 |
-
重要: メール転送機能で安全な接続を行うには、必ず
465
ポートとSSL/TLS
ポートを使用してください。STARTTLS(ポート587)は使用しないでください。 -
保存 をクリックします。
- テストメールを送信:SMTP設定ページ内の「テストメールを送信」ボタンを使用します。アクセスできる受信者のアドレスを入力し、送信 をクリックします。メールが受信者の受信トレイに届くことを確認します。
8. バウンス処理を設定する
バウンス処理により、Listmonk は配信できなかったメール(例:無効なアドレス)を自動的に処理できます。Forward Email は、バウンスを Listmonk に通知する Webhook を提供します。
メール転送設定
- メール転送ダッシュボード にログインします。
- ドメイン に移動し、送信に使用しているドメインを選択して、設定 ページに移動します。
- バウンス Webhook URL セクションまでスクロールします。
- 次の URL を入力します。
<your_listmonk_domain>
は、Listmonk インスタンスにアクセスできる実際のドメインまたはサブドメインに置き換えてください。
https://<your_listmonk_domain>/webhooks/service/forwardemail
例: https://listmonk.yourdomain.com/webhooks/service/forwardemail
5. さらに下にスクロールして、Webhook 署名ペイロード検証キー セクションに移動します。
6. 生成された検証キーをコピーします。このキーは Listmonk で必要になります。
7. 転送メールのドメイン設定で変更を保存します。
Listmonk セットアップ
- Listmonk 管理パネルで、「設定」->「バウンス」 に移動します。
- 「バウンス処理を有効にする」 を有効にします。
- 「バウンス Webhook を有効にする」 を有効にします。
- 「Webhook プロバイダー」 セクションまで下にスクロールします。
- 「メール転送」 を有効にします。
- 「メール転送」ダッシュボードからコピーした 「Webhook 署名ペイロード検証キー」 を「メール転送キー」** フィールドに貼り付けます。
- ページ下部の 「保存」 をクリックします。
- これでバウンス処理が設定されました。Forward Email が Listmonk から送信されたメールのバウンスを検出すると、Webhook 経由で Listmonk インスタンスに通知され、Listmonk はそれに応じて購読者にマークを付けます。
- テスト で以下の手順を完了し、すべてが機能していることを確認します。
テスト
以下は、Listmonk のコア機能の概要です。
メーリングリストを作成する
- サイドバーの「リスト」に移動します。
- 「新しいリスト」をクリックします。
- 詳細(名前、タイプ:公開/非公開、説明、タグ)を入力し、「保存」します。
購読者を追加
- **「購読者」**セクションに移動します。
- 購読者を追加するには、以下の方法があります。
- 手動: **「新しい購読者」**をクリックします。
- インポート: **「購読者のインポート」**をクリックしてCSVファイルをアップロードします。
- API: プログラムによる追加にはListmonk APIを使用します。
- 作成時またはインポート時に、購読者を1つ以上のリストに割り当てます。
- ベストプラクティス: ダブルオプトインプロセスを使用します。これは**[設定] -> [オプトインと購読]**で設定できます。
キャンペーンを作成して送信する
- キャンペーン -> 新しいキャンペーン に移動します。
- キャンペーンの詳細(名前、件名、送信元メール、送信先リスト)を入力します。
- コンテンツタイプ(リッチテキスト/HTML、プレーンテキスト、HTML)を選択します。
- メールの本文を作成します。
{{ .Subscriber.Email }}
や{{ .Subscriber.FirstName }}
などのテンプレート変数を使用できます。 - 必ず最初にテストメールを送信してください! 「テスト送信」オプションを使用して、受信トレイでメールをプレビューします。
- 問題がなければ、キャンペーンを開始 をクリックしてすぐに送信するか、後で送信するようにスケジュールを設定します。
検証
- SMTP配信: ListmonkのSMTP設定ページから定期的にテストメールを送信し、キャンペーンをテストして、メールが正しく配信されていることを確認してください。
- バウンス処理: 無効なメールアドレス(例:
bounce-test@yourdomain.com
。実際のメールアドレスがない場合は、bounce-test@yourdomain.com
。ただし、結果は異なる場合があります)にテストキャンペーンを送信します。しばらくしてからListmonkでキャンペーンの統計情報を確認し、バウンスが登録されているかどうかを確認してください。 - メールヘッダー: メールテスターなどのツールを使用するか、メールヘッダーを手動で検査して、SPF、DKIM、DMARCが適切に設定されていることを確認してください。これは、転送メールが適切に設定されていることを示しています。
- 転送メールログ: SMTPサーバーに起因する配信の問題が疑われる場合は、転送メールダッシュボードのログを確認してください。
開発者ノート
- テンプレート: Listmonk は Go のテンプレートエンジンを使用しています。高度なパーソナライゼーションについては、ドキュメント
{{ .Subscriber.Attribs.your_custom_field }}
をご覧ください。 - API: Listmonk は、リスト、購読者、キャンペーン、テンプレートなどを管理するための包括的な REST API を提供しています。API ドキュメントへのリンクは、Listmonk インスタンスのフッターにあります。
- カスタムフィールド: [設定] -> [購読者フィールド] でカスタム購読者フィールドを定義し、追加データを保存できます。
- Webhook: バウンス以外にも、Listmonk は他のイベント(購読など)に対して Webhook を送信できるため、他のシステムとの統合が可能です。
結論
Listmonkのセルフホスティング機能と、Forward Emailの安全でプライバシーに配慮した配信機能を統合することで、堅牢かつ倫理的なメールマーケティングプラットフォームを構築できます。高い配信率と自動化されたセキュリティ機能のメリットを享受しながら、オーディエンスデータの完全な所有権を維持できます。
このセットアップは、オープンソース ソフトウェアとユーザーのプライバシーの精神に完全に合致し、独自の電子メール サービスに代わる、スケーラブルでコスト効率が高く、開発者に優しい代替手段を提供します。
送信していただきありがとうございます!🚀