インストールガイド · 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 update

Node.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 nodejs

MariaDBのインストール

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++ make

ImageMagickはビットマップ画像を処理するためのツールであり、Gitはアプリケーションプロジェクトリポジトリをクローンするために使用されます。Redisは非常に人気のあるセッションキャッシュアプリケーションであり、Python、bind-utils、gcc-c++、makeはアプリケーションファイルをコンパイルするために使用されます。

Redisを起動し、自動的に起動するように設定します:

systemctl start redis  
systemctl enable redis

Mailtrainのダウンロードとインストール

Gitを使用してMailtrainインストールファイルをクローンします。

git clone git://github.com/Mailtrain-org/mailtrain.git /opt/mailtrain

Mailtrainデーモンを実行するための新しい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/config

Systemdサービスの設定

新しい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 nginx

Nginxのサーバーブロックファイルの新しい仮想ホストを作成します:

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が有効かどうかを確認するには、次のコマンドを実行します:

getenforce

SELinuxが有効な場合は、次のコマンドを実行します:

setsebool -P httpd_can_network_connect 1

Webインターフェースへのアクセス

Mailtrainのインストールが完了しました。http://news.example.comでMailtrainサーバーにアクセスできます。次のインターフェースが表示されます。

Mailtrain

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

Mailtrain Login

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

Create account in Mailtrain

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

Mailtrain settings

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

Mailtrain campaign defaults

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

Mailer settings

最後に、最も重要な構成は、メールサーバーの資格情報を提供することです。任意の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公開鍵をアップロードできます。

Share: X/Twitter LinkedIn

新しい投稿を受信箱で受け取る

スパムはありません。いつでも購読を解除できます。