インストールガイド · 2 min read · Sep 29, 2025
CentOS 7にMailtrainニュースレターアプリケーションをインストールする方法
Mailtrainは、Node.jsで書かれたオープンソースの自己ホスト型ニュースレターアプリケーションです。メールを送信するために非常に人気のあるNode.jsライブラリNodemailerを使用しています。優れた自動化と分析を無料で提供します。CSVファイルのインポートを使用して、100万のメールアドレスのメールリストを簡単に作成またはインポートできます。また、カスタムフィールドやフォームもサポートしています。トリガーを通じて自動化を提供し、アクションがトリガーされると特定のユーザーに特定のメッセージを送信できます。SMTPプロトコルをサポートする任意のメールプロバイダーを使用してニュースレターを送信できます。また、Amazon SES、ZoneMTA、SendGrid、Mailgunなどもサポートしています。美しいニュースレターのテンプレートを作成するために複数のWYSIWYGエディターを提供します。
このチュートリアルでは、CentOS 7にMailtrainとすべての必要な依存関係をインストールします。また、標準HTTPポートでアプリケーションを提供するためにNginxをリバースプロキシとして設定します。
要件
Mailtrainは少なくとも1GBのRAMを必要とします。必要な依存関係はチュートリアル全体でインストールされます。rootアクセスのある最小限のCentOS 7のインストールが必要です。非rootユーザーとしてログインしている場合は、sudo -iを実行してrootユーザーに切り替えることができます。
基本システムの更新
パッケージをインストールする前に、次のコマンドを使用してパッケージとリポジトリを更新することをお勧めします。
yum -y updateNode.jsのインストール
MailtrainにはNodemailerを使用して構築されているため、Node.jsが必要です。Node.jsは非常に人気のあるJavaScriptランタイムであり、Nodemailerはメールを送信するためのNode.jsアプリケーション用のモジュールです。
Node.js 8.xリポジトリを追加します:
curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -Node.jsをインストールします。
yum -y install nodejsMariaDBのインストール
Mailtrainデータベースを保存するためにMariaDBをインストールする必要があります。MariaDBはMySQLのフォークです。 MariaDBリポジトリをシステムにインストールします。
nano /etc/yum.repos.d/mariadb.repoファイルに次の行を追加します。
[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1
次に、次のコマンドを実行してMariaDBをインストールします。
yum -y install mariadb-server mariadb次のコマンドを使用してMariaDBを起動し、ブート時に自動的に起動するように設定します。
systemctl start mariadb
systemctl enable mariadb次のコマンドを実行してMySQLまたはMariaDBのインストールを保護します。
mysql_secure_installationこれにより、MariaDBのrootパスワードを提供するように求められる小さなスクリプトが実行されます。MariaDBをインストールしたばかりなので、rootパスワードは設定されていません。次に進むにはEnterを押してください。MariaDBインストールのrootパスワードを設定するかどうかを尋ねられます。yを選択し、インストール用の強力なパスワードを設定してください。また、テストデータベースや匿名ユーザーを削除するかどうかも尋ねられます。ほとんどの質問は自己説明的であり、すべての質問に「はい」または「y」と答えるべきです。
Mailtrainは、Mailtrainデータベースを管理するための1つと、ワーカーレポートを生成するためのもう1つのデータベースユーザーを必要とします。
データベースを作成するには、まずMySQLコマンドラインにログインする必要があります。同じコマンドを実行します。
mysql -u root -pこれにより、パスワードが求められます。以前に設定したMySQLのrootパスワードを提供してください。次に、Mailtrainインストール用の新しいデータベースを作成するために次のクエリを実行します。
CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;上記のクエリは、mailtrainという名前のデータベースを作成します。各クエリの最後にセミコロンを使用することを確認してください。クエリは常にセミコロンで終了します。データベースが作成されたら、新しいユーザーを作成し、そのユーザーにデータベースへのすべての権限を付与できます。データベースにはrootユーザーを使用しないことをお勧めします。新しいデータベースユーザーを作成するには、次のクエリを実行します。
CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';上記のクエリは、ユーザー名mailtrainのユーザーを作成します。mailtrainの代わりに任意の好みのユーザー名を使用できます。StrongPasswordを強力なパスワードに置き換えてください。次に、作成したデータベースに対してデータベースユーザーに適切な権限を付与します。次のコマンドを実行します。
GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';次に、Mailtrain RO用の新しいユーザーを作成します。
CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';Mailtrainデータベースに対してROユーザーに読み取りアクセスを提供します。
GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';次に、データベースの権限に変更を即座に適用するために次のコマンドを実行します。
FLUSH PRIVILEGES;exitコマンドを使用してMySQLプロンプトから退出します。
EXIT;依存関係のインストール
Mailtrainには、動作するためにいくつかの依存関係が必要です。次のコマンドを実行して依存関係をインストールします:
yum -y install ImageMagick git python redis bind-utils gcc-c++ makeImageMagickはビットマップ画像を処理するためのツールであり、Gitはアプリケーションプロジェクトリポジトリをクローンするために使用されます。Redisは非常に人気のあるセッションキャッシュアプリケーションであり、Python、bind-utils、gcc-c++、makeはアプリケーションファイルをコンパイルするために使用されます。
Redisを起動し、自動的に起動するように設定します:
systemctl start redis
systemctl enable redisMailtrainのダウンロードとインストール
Gitを使用してMailtrainインストールファイルをクローンします。
git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrainMailtrainデーモンを実行するための新しいMailtrainユーザーを作成します。これにより、Mailtrainが隔離された環境で実行されることが保証されます。
adduser mailtrain -d /opt/mailtrain上記のコマンドは、新しいユーザーmailtrainを作成し、/opt/mailtrainをホームディレクトリとして使用します。
次のコマンドを実行してMailtrainディレクトリに移動します:
cd /opt/mailtrainさらに進む前に、セッションデータを暗号化するために使用されるランダムな文字列を生成する必要があります。ランダムな文字列を生成するには、pwgenユーティリティを使用できます。
yum -y install pwgenを実行してpwgenユーティリティをインストールします。pwgen -1 64を実行して64文字の長さの文字列を生成します。次のように表示されます:
[root@liptan-pc mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied
新しい構成ファイルproduction.tomlを作成します。このファイルに提供された構成は、デフォルト構成ファイルdefault.tomlを上書きします。デフォルト構成ファイルを変更してはいけません。上書き構成を保存するために新しいファイルproduction.tomlを作成します。
nano config/production.toml次の構成でファイルを埋めます。
language="en"
user="mailtrain"
group="mailtrain"
rouser="nobody"
rogroup="nobody"
[log]
level="error"
[www]
host="localhost"
port="3000"
secret="RandomString"
remember=604800
proxy=true
tmpdir="/tmp"
[mysql]
user="mailtrain"
password="StrongPassword"
database="mailtrain"
port=3306
charset="utf8"
[redis]
enabled=true
[queue]
processes=5
[reports]
enabled=true
上記の構成により、Mailtrainはユーザーmailtrainとして実行され、Mailtrain Reports Workerユーザーはユーザーnobodyとして実行されます。さらに、組み込みサーバーがlocalhostのポート3000でリッスンするように構成されます。MailtrainのWebインターフェースに標準HTTPポートを介してアクセスできるようにするために、Nginxをリバースプロキシとして設定します。
secret=のRandomStringを上記で生成したランダムな文字列に置き換えます。Nginxプロキシの背後でMailtrain組み込みサーバーを実行するため、proxyをtrueに設定します。
Mailtrainデータを保存するために作成したデータベースのユーザー名、パスワード、データベース名を設定します。
また、ワーカーリポートのための生産構成を保存するために新しいファイルを作成します。
nano workers/reports/config/production.toml次の構成でファイルを埋めます。
[log]
level="error"
[mysql]
host="localhost"
user="mailtrain_ro"
password="StrongROPassword"
database="mailtrain"
port=3306
charset="utf8"
timezone="local"
次に、必要なNode.js依存関係をダウンロードし、ソフトウェアをインストールします:
npm install --productionアプリケーションがインストールされたら、次のコマンドを使用してすぐに開始できます:
NODE_ENV=production npm startサーバーが実行中の場合、次の出力が表示されます。
[root@liptan-pc mailtrain]# NODE_ENV=production npm start
> [email protected] start /opt/mailtrain
> node index.js
info Using local auth
ただし、アプリケーションを直接起動するのではなく、systemdサービスを使用します。ctrl + Cを押して実行を停止します。
ファイルの所有権をMailtrainユーザーに付与し、システムの他の非rootユーザーからconfigへのすべての権限を削除します:
chown -R mailtrain:mailtrain /opt/mailtrain
chmod o-rwx /opt/mailtrain/configSystemdサービスの設定
新しいSystemdサービスファイルを作成します。サーバーを直接コマンドで実行する代わりにSystemdを使用することで、サーバーが自動的に失敗や再起動時に起動することが保証されます。サービスの管理が非常に簡単になります。
nano /etc/systemd/system/mailtrain.service次の構成でファイルを埋めます。
[Unit]
Description=Mailtrain Server
Requires=mariadb.service
After=syslog.target network.target
[Service]
user=mailtrain
group=mailtrain
Environment="NODE_ENV=production"
WorkingDirectory=/opt/mailtrain
ExecStart=/usr/bin/node index.js
Type=simple
Restart=always
RestartSec=10
StandardOutput=syslog
StandardError=syslog
SyslogIdentifier=mailtrain
[Install]
WantedBy=multi-user.target
Mailtrainを起動し、ブート時に自動的に起動するように設定します:
systemctl enable mailtrain
systemctl start mailtrainサービスのステータスを確認するには、次のコマンドを実行します:
systemctl status mailtrainサービスがアクティブに実行されていることが表示されるはずです。
[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Mailtrain Server
Loaded: loaded (/etc/systemd/system/mailtrain.service; enabled; vendor preset: disabled)
Active: active (running) since Mon 2017-10-09 11:15:40 UTC; 9s ago
Main PID: 18092 (mailtrain)
CGroup: /system.slice/mailtrain.service
??18092 mailtrain
??18105 /usr/bin/node /opt/mailtrain/services/executor.js
??18112 /usr/bin/node /opt/mailtrain/services/sender.js
??18117 /usr/bin/node /opt/mailtrain/services/sender.js
??18125 /usr/bin/node /opt/mailtrain/services/sender.js
??18131 /usr/bin/node /opt/mailtrain/services/sender.js
??18136 /usr/bin/node /opt/mailtrain/services/sender.js
Oct 09 11:15:40 liptan-pc systemd[1]: Started Mailtrain Server.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Mailtrain Server...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth
Logrotateの設定
Logrotateは、古いログを更新するための非常に便利なユーティリティです。サービスが継続的に実行されていると、大量のログが生成されます。ログを含むファイルは多くのディスクスペースを消費します。Logrotateは定期的に古いログを削除し、ログエントリを新しいログで置き換えることができます。
新しいlogrotate構成ファイルを作成します:
nano /etc/logrotate.d/mailtrain次の構成でファイルを埋めます:
/var/log/mailtrain.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate
nomail
}
Nginxをリバースプロキシとして設定
Mailtrainの組み込みWebインターフェースをlocalhostのポート3000でリッスンするように構成しました。ユーザーにウェブサイトを提供するために本番Webサーバーを実行することが重要です。このチュートリアルでは、Nginxをリバースプロキシとして使用して、アプリケーションに標準HTTPポートを介してアクセスできるようにします。Nginx Webサーバーをインストールします:
yum -y install nginxNginxのサーバーブロックファイルの新しい仮想ホストを作成します:
nano /etc/nginx/conf.d/mailtrain.conf次の内容でファイルを埋めます:
server {
listen 80;
listen [::]:80;
server_name news.example.com www.news.example.com ;
access_log /var/log/nginx/mailtrain.log;
location / {
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header HOST $http_host;
proxy_set_header X-NginX-Proxy true;
proxy_pass http://127.0.0.1:3000;
proxy_redirect off;
}
}
Nginx Webサーバーを再起動し、ブート時に自動的に起動するように設定します:
systemctl restart nginx
systemctl enable nginxファイアウォールとSELinuxの設定
サーバーでファイアウォールを実行している場合は、HTTPサービスの例外を設定するためにファイアウォールを構成する必要があります。Nginxリバースプロキシがネットワークの外部から接続できるようにします。
firebase-cmd --zone=public --permanent --add-service=http
firebase-cmd --reloadシステムでSELinuxが有効になっている場合は、SELinuxポリシーにいくつかの例外を追加する必要があります。
SELinuxが有効かどうかを確認するには、次のコマンドを実行します:
getenforceSELinuxが有効な場合は、次のコマンドを実行します:
setsebool -P httpd_can_network_connect 1Webインターフェースへのアクセス
Mailtrainのインストールが完了しました。http://news.example.comでMailtrainサーバーにアクセスできます。次のインターフェースが表示されます。

ログインボタンをクリックし、ユーザー名adminとパスワードtestを使用してログインします。

ダッシュボードのアカウントセクションをブラウズし、メールアドレスとパスワードを更新します。できるだけ早くパスワードを更新することが非常に重要です。

また、Mailtrainを使用する前に設定を更新することも重要です。

サイトのURLと管理者のメールを更新します。Google AnalyticsのトラッキングIDを提供して、Google Analyticsを介してインサイトを追跡することもできます。サーバーのホームページに表示されるHTMLコードをいくつか入力できます。

キャンペーンのデフォルトを設定します。たとえば、送信者名、デフォルトアドレス、デフォルトの送信者名、メールアドレス、URLなどです。メールを送信する際に、これらのオプションが設定されていない場合は、デフォルトが使用されます。

最後に、最も重要な構成は、メールサーバーの資格情報を提供することです。任意のSMTPサーバーまたはAmazon SES(Simple Email Service)を使用できます。SMTPを使用している場合は、メールサーバーのホスト名、ポート、ユーザー名、およびSMTPサーバーのパスワードを提供します。Amazon SESを使用している場合は、APIキーやその他の資格情報を提供します。
独自のSMTPサーバーを設定することもできます。次のいずれかのガイドに従ってください:
- Postalを使用して完全機能のメールサーバーを作成する方法
- CentOS 6でPostfix、Dovecot、PostgreSQLを使用して完全機能のメールサーバーを構築する
- DebianでExim4、Clamav、Dovecot、SpamAssassinなどを使用してメールサーバーを設定する
これで、CentOS 7サーバーに完全に機能するMailtrainサーバーがインストールされました。最初のリストを作成し、購読者にニュースレターを送信を開始してください。WYSIWYGエディターを使用してインタラクティブなテンプレートを作成し、キャンペーンを使用してメールを送信できます。Mailtrainは、送信されたメールと開封されたメールのレポートも提供します。Automationタブを使用して、特定のアクションが行われたときにメールを送信するトリガーを作成できます。また、GPG暗号化を設定することもできます。リストにGPG公開鍵のカスタムフィールドが設定されている場合、購読者は暗号化されたメッセージを受信するためにGPG公開鍵をアップロードできます。
新しい投稿を受信箱で受け取る
スパムはありません。いつでも購読を解除できます。