株式会社エクスブリッジ
メール配信システムをオープンソースで自社サーバーに|listmonk を実機で立てたら、日本語訳は全部あるのに「加入者」「都市」——411項目を直して導入キットにした記録

メール配信システムをオープンソースで自社サーバーに|listmonk を実機で立てたら、日本語訳は全部あるのに「加入者」「都市」——411項目を直して導入キットにした記録

2026年11月05日約10分で読めますメール配信システム オープンソース

メール配信のオープンソース listmonk(AGPL-3.0・v6.2.0)を Docker で立て、外部 SMTP につなぐ型で実測しました。起動からログイン画面まで11.6秒、待機時のメモリは本体42〜46MB+PostgreSQL 34〜44MB。日本語訳は713項目すべてにありますが「加入者」「ドラフト」「都市(Year の誤訳)」など業務の言葉になっていないため411項目を直して差し込みました。件名・差出人名・本文は髙・﨑・德・㈱・①まで化けず、Gmail のワンクリック配信停止も実測で動作。Excel の普通の CSV(Shift_JIS)が1件も入らない件、テキスト配信で HTML が生で見える件などの対処、特定電子メール法の表示を入れたテンプレートまで入れて導入キットにしました。

この記事の答え

listmonkを日本語で導入する際の注意点は?

listmonkは全項目に訳がありますが、機械的な誤訳が含まれるため、411項目の修正が必要です。また、CSVの文字コードや見出しの指定など、取り込みに関する注意点もいくつか存在します。

名古屋でAIシステムの開発をしている小嶋です。

当社のサイトには「メール配信システム オープンソース」「メルマガ 自社サーバー」という検索で来る人がいます。取引先へのお知らせや年末年始の案内を Outlook の BCC で送っていて、宛先が見えてしまう事故が怖い。かといって配信サービスの月額は通数が増えるほど上がっていく。そういう会社が探している言葉です。そこでメール配信のオープンソースを実機で立てて、日本語でどこまで使えるかを確かめ、足りないところを塞いだ状態を導入キットにしました。

結論:訳は全部ある。でも画面で読むと業務の言葉になっていない

対象は listmonk です。AGPL-3.0 のオープンソースで Go 製、有料版が無く全機能がそのまま使えます。購読者とリストを持ち、HTML やテキストのメールを配信し、開封・クリック・配信停止・バウンス(届かなかったメール)を記録します。2026年11月4日に v6.2.0 を Docker で立て、送信そのものは外部の SMTP(会社のメールサーバーや Amazon SES など)に任せる型で、テスト用の受け口(Mailpit)に配信して確かめました。

確かめたこと 結果
起動 up -d からログイン画面まで 11.6秒(初回・DB作成込み)。再起動は 0.8秒
管理者の作成 画面1枚。入力込みで約2分
待機時のメモリ 本体 42〜46MB+PostgreSQL 34〜44MB。1GB の VPS で動く
本体の日本語訳 713項目すべてに訳がある。ただし「加入者」「ドラフト」「都市(Year)」など機械的
直した訳 411項目。管理画面の主要な画面は日本語100%
メールの日本語 件名・差出人名・本文とも髙・﨑・德・〒・㈱・①・〜まで化けない
配信の速さ キャンペーン作成→配信開始→受信まで 3秒
Gmail のワンクリック配信停止 List-Unsubscribe-Post に POST すると画面を出さずに停止(実測 200)
復元テスト 別の compose プロジェクトで 11秒。購読者12・リスト12・キャンペーン7・テンプレート5が元と一致

日本語の実態:「訳が無い」ではなく「訳の質」の問題

listmonk の文言は全部、言語ごとの訳ファイルにあり、設定の「言語」で切り替わります。本体の日本語訳は 713項目すべてに訳が入っていて、英語のまま残っていたのは1項目だけでした。ここまでは優秀です。

ところが画面で読むと、Subscriber が「加入者」、Subscription が「サブスクリプション」、Draft が「ドラフト」、Views が「ビュー」、New が「新」。Year は「都市」と誤訳されていて、送信レートは「通信速度」、バウンスの対応は「作用」。購読者が開く配信停止ページのボタンは「登録を解除する。」と句点付きでした。社内の担当者が毎日触る画面としても、取引先が開くページとしても、これでは使いにくい。

キットでは 411項目を業務の言葉に直した訳ファイルを同梱しました。購読者・購読・配信停止・下書き・予約済み・開封にそろえ、設定画面の説明文は「契約している SMTP の上限(例: 1時間○通)を超えないよう…」のように、日本の会社の担当者が読んで意味が取れる文にしています。差し込みは起動の設定に入れてあるので、言語を「日本語」にするだけです。長い文の下訳はローカルの gemma4 で作り(10本・262秒)、そこから手で直しました。差し込み変数が原文と一致していることは機械で確かめています。

日本語を直した listmonk のリスト画面。「顧客(取引中)」「見込み客(資料請求・名刺交換)」「休眠顧客(1年以上取引なし)」「メルマガ購読者(公開フォーム)」が並び、種類は「非公開」「公開」、列は「購読者」「作成日時」「更新日時」

直したあとに画面ごとの日本語の割合を数えると、ダッシュボード・リスト・購読者・キャンペーン・テンプレート・分析・バウンス・ユーザー・役割・メンテナンスが 100%、キャンペーン作成が 99% でした。英語で残るのは、言語の選択肢(各言語の自称)、本体のログ行、CSV の例の行、送信手段の識別名「email」だけです。

メールそのものの日本語:化けない。ただしテキスト配信に落とし穴

件名に「【株式会社サンプル】年末年始の営業と11月のお知らせ ― 山田様へ」、本文に 髙・﨑・德・〒・㈱・①・〜 を入れて配信し、受信した生のメールを開いて確かめました。件名と差出人名は規格どおりに符号化され、本文も UTF-8 で一字も化けません。HTML とテキストの両方を持たせると、テキストが先・HTML が後の順で入り、メールソフトがどちらかを選んで表示します。日本語のファイル名の添付も、ファイル名のまま届きました。

困ったのはテキスト形式で配信したときです。テキストを選んでも既定のテンプレート(HTML)がそのまま付き、受信者には <!doctype html> から始まる HTML の枠が生で見えてしまいます。キットではテキスト用に本文だけを差し込むテンプレートを付けて塞ぎました。

キットのテンプレートで配信したメールを受け口で開いたところ。本文の下に送信者の名称・住所・問い合わせ先・同意の経路・配信停止のリンク・ブラウザで見るリンクが入っている

業務としてどう組むか:リストは「誰に・どの同意で」の箱

listmonk は購読者が1人1行で、会社名や部署、登録の経路は属性として持ちます。リストは「誰に送るか」の箱で、1人が複数のリストに入れます。キットでは日本の会社でよくある形として、顧客(取引中)・見込み客(資料請求・名刺交換)・休眠顧客(1年以上取引なし)・メルマガ購読者(公開フォーム)の4つに分け、それぞれの入る人・送る物と頻度・出る条件を設計表にしました。公開フォームから来る人だけは、確認メールのリンクを押した人にだけ届くダブルオプトインにしています。

「どこで同意を得たか」を後から答えられるよう、名刺交換・展示会・Web フォーム・契約といった経路を必ず属性に残す決め方にしました。特定電子メール法の表示(送信者の名称・住所・問い合わせ先・配信停止の方法)は、テンプレートのフッターに固定で入れて、キャンペーンごとに書き忘れない作りです。条文は手順書で示していますが、法律の助言ではありません。自社の運用は顧問に確かめてください。

配信停止はリスト単位で自動に受け付けられます。購読者が開くと日本語のページで「配信を停止する」を押すだけで、「今後すべてのメール配信を停止する」にチェックを入れればどのリストからも送られなくなります。Gmail の「配信停止」ボタンからのワンクリック停止も実測で動きました。

購読者が見る配信停止ページ。「この配信リストからのメールを停止しますか?」「今後すべてのメール配信を停止する」「配信を停止する」「配信設定の変更」「自分のデータを受け取る/削除する」が日本語で出ている

listmonk には「登録7日後に2通目」のような自動シナリオの機能がありません。キットでは、条件でリストを動かす API を毎日 cron で叩き(実測で1回0.1秒)、2通目用のリストに向けた予約配信を週に1本作る組み方を、設計表とスクリプトで載せました。

踏んだ穴(7つ)

  1. Excel で普通に保存した CSV(Shift_JIS)は1件も取り込めない。「CSV UTF-8」で保存すれば BOM 付きでも入る
  2. CSV の見出し行が Email(大文字)や「メール」だと「email の列が無い」で失敗する。小文字の email,name,attributes に完全一致させる
  3. 全角のメールアドレスの行は、その行だけ黙って飛ばされて残りは続く。取り込みのログで飛んだ行を確かめる
  4. テキスト形式の配信で、既定テンプレートの HTML の枠が受信者にそのまま見える
  5. 本文の普通のリンクはクリックが計測されない。計測用の書き方(@TrackLink)を付けると転送されて件数が増える
  6. 配信停止した人を取り込みで「購読状態を上書き」にすると購読中に戻る。配信停止の人はリストから外さない
  7. 訳ファイルの置き場を指定するとき、日本語だけ置くと起動しない(本体は全言語を読む)。キットには全言語を置いてある

導入キットとして出しました

ここまでの手順書(00〜06)、411項目を直した訳ファイルと作り直しのスクリプト、テスト用の受け口を入れた compose、特定電子メール法の表示を入れた日本語のテンプレート(HTML とテキスト)、リスト設計表・ステップ配信の設計表・週次点検表・障害記録表、取り込み用 CSV の雛形、30日分を残すバックアップのスクリプト、API の実測ペイロードを1つにして、Kurage App Store に出しました。

メール配信システムを自社サーバーで — listmonk 日本語導入キット(特定電子メール法の表示・配信停止の型つき)

送信は外部の SMTP に任せる型なので、サーバーに載るのは本体と PostgreSQL の2つだけです。自社の顧客台帳や基幹からどう流し込むか、どのリストに分けるかを決めるところから手伝ってほしい場合は、業務システムの相談からどうぞ。

よくある質問

listmonkの日本語化はどの程度進んでいますか?

本体の713項目すべてに訳がありますが、一部が機械的な誤訳です。導入キットでは主要な画面をほぼ100%の日本語に修正しています。

メール配信時に文字化けはしますか?

件名や本文に特殊な記号や漢字を入れても、UTF-8で一字も化けません。ただし、テキスト形式での配信には注意が必要です。

CSVの取り込みで失敗しないための条件は?

「CSV UTF-8」形式で保存し、見出し行を小文字のemail,name,attributesに完全一致させる必要があります。

前後の記事

読んで、自分でやるか任せるか

記事のとおりに進めて詰まったら、そこから先は任せてください。名古屋の会社です。概算見積は無料です。

開発会社・IT販売の方へ

この記事に出てくるシステムは、御社の案件で売ったり、御社の製品に組み込んだりできます。ソースコードは MIT ライセンスで、御社のブランドでの販売もできます。販売手数料は、バイブプロトタイプ制作・バイブOSSで1件9万円(税別)、App Store の製品は本体価格の10%です。登録無料・ノルマなし。

Kurage.AIKurage.AI に相談AIが何でも答えます