このチュートリアルでは、 Mailtrain v2をインストールする方法を説明します。 DockerなしのUbuntu20.04で。 Mailtrainは、オープンソースのセルフホストニュースレターアプリであり、Mailchimpのような商用メールサービスプロバイダーに代わるものです。 Mailtrainを使用して、独自のメールサーバーを介して、またはSMTPリレーサービス(Sendinblue、SendGrid、AmazonSES、Mailgunなど)を使用して、メールサブスクライバーにメールを送信できます。
Mailtrainは、Node.jsおよびMySQL/MariaDB上に構築されたGPLv3.0ライセンスの条件の下でリリースされます。最新バージョンはv2で、2021年6月にリリースされました。Mailtrainの機能は次のとおりです。
- 大規模なメーリングリスト(100万人の加入者など)を簡単に管理できます。
- APIを使用して手動でサブスクライバーを追加するか、CSVファイルからインポートできます。
- カスタムフィールド(テキストフィールド、数値、ドロップダウン、チェックボックス)、マージタグ、カスタムフォームをサポートしています。
- リストのセグメンテーション。
- RSSキャンペーン:RSSフィードからニュースレターを自動生成し、購読者に送信します。
- サブスクライバーはGPG公開鍵をアップロードでき、Mailtrainはニュースレターを暗号化します。
- すべてのリンクの個々のクリック統計を確認できます。
- 高度なメールテンプレートエディタとHTMLコードエディタ。
- 自動化:ユーザーが事前定義されたトリガーをアクティブにしたときに特定のメールを送信します。
- オープンメーリングリスト(公開サブスクリプションを許可)とクローズドメーリングリスト(サブスクライバーは管理者によってリストに追加されます)を作成できます。
- きめ細かいユーザー権限と柔軟な共有で複数のユーザーを作成します。
- エンタープライズレベルの状況での階層的な名前空間
- ユーザーごとにユーザーインターフェースをローカライズする
- リストのエクスポート
- 二重配信を防止して複数のリストに送信する機能。
- 複数の送信構成
- SMTPスロットリングにより、サーバーが短時間に大量のメールを送信しないようにします。これにより、メールの配信可能性が向上します。
ステップ1:適切なホスティングプロバイダーを選択する
セルフホスティングはあなたにたくさんのお金を節約することができます。 Mailtrainは無料のオープンソースソフトウェアです。フル機能のメールサーバーとMailtrainメールマーケティングプラットフォームを実行できるVPS(仮想プライベートサーバー)に月額26ドルを支払うだけで済みます。何百万ものサブスクライバーを簡単に処理できます。したがって、サブスクライバーの数に関係なく、合計コストは常に月額$26です 。 MailChimpで数百万のサブスクライバーを所有している場合、コストは1か月あたり数千ドルになります。
メールホスティングやメールマーケティングに適したVPS(仮想プライベートサーバー)プロバイダーを見つけるのは簡単なことではありません。 DigitalOceanのような多くのホスティング会社はポート25をブロックします。DigitalOceanはポート25のブロックを解除しないため、ブロックをバイパスするようにSMTPリレーを設定する必要があり、追加の費用がかかる可能性があります。 Vultr VPSを使用する場合、ポート25はデフォルトでブロックされます。サポートチケットを開くとブロックを解除できますが、メール送信アクティビティが許可されていないと判断した場合は、いつでもブロックを解除できます。 Vultrのサーバーを使用してニュースレターを送信すると、Vultrは実際に再ブロックする可能性があります。
もう1つの問題は、DigitalOceanやVultrなどの有名なホスティングプロバイダーがスパマーに悪用されていることです。多くの場合、サーバーのIPアドレスはいくつかのブラックリストに含まれています。 Vultrでは、IP範囲全体がブラックリストに登録されています。
ScalaHostingは、メールサーバーを実行するための非常に優れたオプションです。
- ポート25をブロックしません。
- IPアドレスはメールのブラックリストに含まれていません。 (少なくとも私の場合はそうです。ダラスのデータセンターを選択しました。)恐ろしいMicrosoftOutlookIPブラックリストまたはSpamRatsブラックリストにリストされたくないことは間違いありません。一部のブラックリストはIP範囲全体をブロックし、この種のブラックリストからIPアドレスを除外する方法はありません。
- PTRレコードを編集して、メールの配信可能性を向上させることができます。
- noでメール購読者にニュースレターを送信できます 時間制限または日制限、何でも。 未承諾とも呼ばれるスパムを送信することは許可されていないことに注意してください。 バルクメール。受信者が明示的にメール送信の許可を与えておらず、あなたがメールを送信した場合、それは迷惑メールです。
以下にリンクされているチュートリアルに従って、ScalaHostingでLinuxVPSサーバーを適切にセットアップすることをお勧めします。クーポンコードlinuxbabe2021
を使用する ScalaHosting支払いページ 100ドル節約 12か月前払いを選択した場合。
- ScalaHostingでLinuxVPSサーバーを作成する方法
ドメイン名も必要です。 NameCheapからドメイン名を登録したのは、価格が安く、whoisのプライバシー保護が一生無料になるからです。
独自のメールサーバーをまだお持ちでない場合は、無料のiRedMailプログラムを使用して、Mailtrainをインストールする前に独自のメールサーバーをすばやくセットアップすることをお勧めします。これにより、商用SMTPリレーサービスにお金をかける必要がなくなります。
ステップ2:Sudoユーザーを追加する
Ubuntu20.04にsudoユーザーを使用してMailtrainをインストールしました。最良の結果を得るには、rootではなくsudoユーザーを使用してこのチュートリアルに従う必要があります。 sudoユーザーを追加するには、サーバーで次のコマンドを実行するだけです
sudo adduser username sudo adduser username sudo
次に、新しいユーザーに切り替えます。
su - username
ステップ3:MariaDBデータベースサーバーをインストールする
注 :私のiRedMailチュートリアルに従ってメールサーバーを設定した場合は、MariaDBがすでに稼働しているはずなので、この手順をスキップできます。
サブスクライバーのデータはデータベースに保存されます。 MailtrainはMySQLとMariaDBをサポートしています。 MariaDBは、MySQLのドロップイン代替品です。これは、OracleがMySQLをクローズドソース製品に変える可能性があることを懸念しているMySQLチームの元メンバーによって開発されました。それでは、MariaDBデータベースサーバーをインストールしましょう。
次のコマンドを入力して、Ubuntu20.04にMariaDBをインストールします。
sudo apt install mariadb-server mariadb-client
インストール後、MariaDBサーバーが自動的に起動します。 systemctlを使用します ステータスを確認します。
systemctl status mariadb
出力:
● mariadb.service - MariaDB 10.3.22 database server Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: enabled) Active: active (running) since Fri 2020-04-10 14:19:16 UTC; 18s ago Docs: man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Main PID: 9161 (mysqld) Status: "Taking your SQL requests now..." Tasks: 31 (limit: 9451) Memory: 64.7M CGroup: /system.slice/mariadb.service └─9161 /usr/sbin/mysqld
実行されていない場合は、次のコマンドで開始します:
sudo systemctl start mariadb
起動時にMariaDBを自動的に起動できるようにするには、
を実行します。sudo systemctl enable mariadb
次に、インストール後のセキュリティスクリプトを実行します。
sudo mysql_secure_installation
MariaDBのrootパスワードの入力を求められたら、rootパスワードがまだ設定されていないため、Enterキーを押します。次に、 yと入力します MariaDBサーバーのルートパスワードを設定します。
次に、Enterキーを押して残りのすべての質問に答えることができます。これにより、匿名ユーザーが削除され、リモートrootログインが無効になり、テストデータベースが削除されます。このステップは、MariaDBデータベースセキュリティの基本的な要件です。 (Yが大文字になっていることに注意してください。これは、デフォルトの回答であることを意味します。)
ステップ4:Mailtrainのデータベースとユーザーを作成する
次のコマンドを実行して、MariaDBコンソールにログインします。
sudo mysql -u root
次のコマンドを使用して、Mailtrainのデータベースを作成します。 mailtrainv2
という名前を付けました 、ただし、好きな名前を使用できます。 (セミコロンを省略しないでください。)
create database mailtrainv2;
次に、以下のコマンドを入力してMailtrainのデータベースユーザーを作成し、mailtrainデータベースのすべての権限をユーザーに付与します。 mailtrain
を置き換えます およびmailtrain_password
ご希望のユーザー名とパスワードを使用してください。
grant all privileges on mailtrainv2.* to mailtrain@localhost identified by 'mailtrain_password';
変更を有効にするために特権テーブルをフラッシュしてから、MariaDBコンソールを終了します。
flush privileges; exit;
ステップ5:Node.jsをインストールする
Mailtrainは、人間が読めるJavaScriptコードをマシンコードに変換するJavaScriptランタイム環境であるNode.js上に構築されています。したがって、Mailtrainを実行するには、UbuntuにNode.jsをインストールする必要があります。 Mailtrainv2にはNode.js14以降が必要です。このチュートリアルでは、アップストリームリポジトリからNode.jsとパッケージマネージャー(npm)をインストールします。
curl -sL https://deb.nodesource.com/setup_14.x | sudo -E bash - sudo apt install nodejs
Node.jsとnpmのバージョンを確認するには、
を実行します。node -v npm -v
出力:
Nodesource.comリポジトリから最新のLTSバージョンのNode.js(v16)をインストールすることはお勧めしません。これは、Mailtrainv2との互換性が低いためです。 npmからネイティブアドオンをコンパイルしてインストールするには、ビルドツールもインストールする必要があります:
sudo apt install -y build-essential
メールテンプレートエディタとHTMLエディタで画像を編集するには、ImageMagickをインストールする必要があります。
sudo apt install imagemagick
ステップ6:Redisキャッシュをインストールする
セッションキャッシュ用にRedisサーバーをインストールできます。これにより、Mailtrainはデフォルトの単一プロセスの代わりに5つのプロセスを実行できるようになり、多数の電子メールサブスクライバーがいる場合に電子メール配信が高速化されます(これにより、約250MBのようにメモリ使用量が増加することに注意してください)。
sudo apt install redis
インストール後、Redisが自動的に起動します。次のコマンドでステータスを確認できます:
systemctl status redis
サンプル出力:
● redis-server.service - Advanced key-value store Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled) Active: active (running) since Wed 2021-10-27 20:01:10 HKT; 4 days ago Docs: http://redis.io/documentation, man:redis-server(1) Main PID: 1359 (redis-server) Tasks: 4 (limit: 15514) Memory: 10.8M CGroup: /system.slice/redis-server.service └─1359 /usr/bin/redis-server 127.0.0.1:6379
実行されていない場合は、次のコマンドで開始できます:
sudo systemctl start redis
起動時に自動起動を有効にする:
sudo systemctl enable redis
ステップ7:Mailtrainを実行する
この手順では、ホームディレクトリで作業する必要があります。
cd ~
次に、GithubからMailtrainファイルをフェッチします。 (sudo
は使用しないでください gitコマンドを実行するとき。)
sudo apt install git git clone https://github.com/Mailtrain-org/mailtrain.git cd mailtrain/ git checkout v2
次のコマンドを使用して、初期SQLデータをmailtrainデータベースにインポートします。 mailtrain
のパスワードを入力する必要があります 手順4で作成したユーザー。
mysql -u mailtrain -p mailtrainv2 < ~/mailtrain/server/setup/sql/mailtrain.sql
production.yaml
を作成します Nanoなどのコマンドラインテキストエディタを使用した構成ファイル。
nano ~/mailtrain/server/config/production.yaml
このファイルでは、~/mailtrain/server/config/default.yaml
のデフォルト構成をオーバーライドする構成を追加できます ファイル。次の構成を追加するだけで済みます。各コロンの後にスペース文字が必要であることに注意してください。
user: mailtrain group: mailtrain roUser: nobody roGroup: nobody www: host: 127.0.0.1 proxy: true secret: "Replace this with some random characters" trustedUrlBase: http://mailtrain.example.com sandboxUrlBase: http://sbox-mailtrain.example.com publicUrlBase: http://newsletter.example.com mysql: user: mailtrain password: mailtrain_password database: mailtrainv2 redis: enabled: true log: level: info builtinZoneMTA: enabled: false queue: processes: 5
Mailtrainでは、3つのURLエンドポイントを使用する必要があります。
-
mailtrain.example.com
:ログインしたユーザーが使用する信頼できるURL。 -
sbox-mailtrain.example.com
:これはテンプレートエディタをホストするために使用され、どのユーザーにも表示されません。 -
newsletter.example.com
:訪問者から見た公開URL。
ファイルを保存して閉じます。次に、mailtrain
を作成します mailtrainデーモンを実行するためのユーザーとグループ。このユーザーのパスワードを作成する必要がないため、通常のユーザーではなくシステムユーザーを作成することに注意してください。
sudo adduser --system --group --no-create-home mailtrain
レポートワーカーの構成ファイルを作成します。
nano ~/mailtrain/server/services/workers/reports/config/production.yaml
次の構成を追加します。
log: level: warn mysql: user: mailtrain password: mailtrain_password database: mailtrainv2
ファイルを保存して閉じます。
ここで、~/mailtrain/
にいることを確認してください ディレクトリ。
cd ~/mailtrain
必要なノードパッケージをインストールします。以下は単一のコマンドです。 sudo
は使用しないでください 。
for idx in client shared server mvis/client mvis/server mvis/test-embed mvis/ivis-core/client mvis/ivis-core/server mvis/ivis-core/shared mvis/ivis-core/embedding; do (cd $idx && npm install) done
次のエラーメッセージが表示された場合は、無視してかまいません。
-bash: cd: mvis/ivis-core/client: No such file or directory -bash: cd: mvis/ivis-core/server: No such file or directory -bash: cd: mvis/ivis-core/shared: No such file or directory -bash: cd: mvis/ivis-core/embedding: No such file or directory
~/mailtrain/client/
に変更します ディレクトリ。
cd ~/mailtrain/client
ノードパッケージをビルドします。
npm run build
mailtrainフォルダーを/var/www/にコピーします。
sudo mkdir -p /var/www/ cd ~ sudo cp ~/mailtrain /var/www/mailtrainv2 -r
次に、/var/www/mailtrainv2/
の権限を変更します 。
sudo chown mailtrain:mailtrain /var/www/mailtrainv2/ -R sudo chmod o-rwx /var/www/mailtrainv2/server/config/
mailtrain用のsystemdサービスユニットファイルを作成します。
sudo nano /etc/systemd/system/mailtrainv2.service
このファイルに次の行を追加します。
[Unit] Description=Mailtrain server After=syslog.target network.target mariadb.service redis-server.service [Service] Environment="NODE_ENV=production" WorkingDirectory=/var/www/mailtrainv2/server ExecStart=/usr/bin/node index.js Type=simple Restart=always RestartSec=10 [Install] WantedBy=multi-user.target
このファイルを保存して閉じます。次に、mailtrainv2.service
を開始します 。
sudo systemctl enable --now mailtrainv2.service
ステータスを確認してください。実行されていることを確認してください。
sudo systemctl status mailtrainv2.service
サンプル出力:
● mailtrainv2.service - Mailtrain server Loaded: loaded (/etc/systemd/system/mailtrainv2.service; enabled; vendor preset: enabled) Active: active (running) since Mon 2021-11-01 16:42:10 HKT; 8s ago Main PID: 2794663 (mailtrain) Tasks: 25 (limit: 15514) Memory: 258.0M CGroup: /system.slice/mailtrainv2.service ├─2794663 mailtrain ├─2794693 mailtrain: worker executor └─2794701 /usr/bin/node /var/www/mailtrainv2/server/services/importer.js
実行されていない場合は、ログを確認できます。
sudo journalctl -eu mailtrainv2
mailtrainv2.serviceが実行されている場合は、次のコマンドで使用しているポートを確認できます。
sudo netstat -lnpt | grep mailtrain
ステップ8:リバースプロキシの設定
Nginxを使用できます またはApache リバースプロキシを設定するWebサーバー。
Nginx
iRedMailを使用する場合は、Nginxを選択する必要があります。
NginxWebサーバーをインストールします。
sudo apt install nginx
3つのURLエンドポイント用に3つのNginx仮想ホストを作成します。
sudo nano /etc/nginx/sites-enabled/mailtrain.example.com.conf sudo nano /etc/nginx/sites-enabled/sbox-mailtrain.example.com.conf sudo nano /etc/nginx/sites-enabled/newsletter.example.com.conf
3つのファイルの内容は次のとおりです。
mailtrain.example.com.conf
server { listen 80; server_name mailtrain.example.com; access_log /var/log/nginx/mailtrain.access; error_log /var/log/nginx/mailtrain.error; location / { proxy_pass http://127.0.0.1:3000; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
sbox-mailtrain.example.com
server { listen 80; server_name sbox-mailtrain.example.com; access_log /var/log/nginx/sbox-mailtrain.access; error_log /var/log/nginx/sbox-mailtrain.error; location / { proxy_pass http://127.0.0.1:3003; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
newsletter.example.com.conf
server { listen 80; server_name newsletter.example.com; access_log /var/log/nginx/newsletter.access; error_log /var/log/nginx/newsletter.error; location / { proxy_pass http://127.0.0.1:3004; proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; } }
ファイルを保存して閉じます。次に、Nginx構成をテストします。
sudo nginx -t
テストが成功した場合は、Nginxをリロードします。
sudo systemctl reload nginx
Apache
ApacheWebサーバーをインストールします。
sudo apt install apache2
3つのURLエンドポイント用に3つのApache仮想ホストを作成します。
sudo nano /etc/apache/sites-enabled/mailtrain.example.com.conf sudo nano /etc/apache/sites-enabled/sbox-mailtrain.example.com.conf sudo nano /etc/apache/sites-enabled/newsletter.example.com.conf
3つのファイルの内容は次のとおりです。
mailtrain.example.com
<VirtualHost *:80> ServerName mailtrain.example.com ServerSignature Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:3000/ ProxyPassReverse / http://127.0.0.1:3000/ ErrorLog /var/log/apache2/mailtrain.linuxbabe.org.error </VirtualHost>
sbox-mailtrain.example.com
<VirtualHost *:80> ServerName sbox-mailtrain.example.com ServerSignature Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:3003/ ProxyPassReverse / http://127.0.0.1:3003/ ErrorLog /var/log/apache2/sbox.mailtrain.linuxbabe.org.error </VirtualHost>
newsletter.example.com.conf
<VirtualHost *:80> ServerName newsletter.example.com ServerSignature Off ProxyPreserveHost On ProxyPass / http://127.0.0.1:3004/ ProxyPassReverse / http://127.0.0.1:3004/ ErrorLog /var/log/apache2/newsletter.linuxbabe.org.error </VirtualHost>
ファイルを保存して閉じます。 Apacheで3つのモジュールを有効にする必要があります。
sudo a2enmod proxy proxy_http headers
次に、3つの仮想ホストを有効にします。
sudo a2ensite mailtrain.example.com.conf newsletter.example.com.conf sbox-mailtrain.example.com.conf
ApacheWebサーバーを再起動します。
sudo systemctl restart apache2
ステップ6:HTTPSを有効にする
外部からPlexサーバーにアクセスするときにHTTPトラフィックを暗号化するために、Let’sEncryptから発行された無料のTLS証明書をインストールしてHTTPSを有効にすることができます。次のコマンドを実行して、Let’s Encryptクライアント(certbot)をUbuntuにインストールします。
sudo apt install certbot
Nginxを使用する場合 Webサーバーの場合は、CertbotNginxプラグインもインストールする必要があります。
sudo apt install python3-certbot-nginx
次に、次の3つのコマンドを実行して、TLS証明書を取得してインストールします。
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mailtrain.example.com sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d sbox.mailtrain.example.com sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d newsletter.example.com
Apacheを使用する場合 Webサーバーの場合は、CertbotApacheプラグインもインストールする必要があります。
sudo apt install python3-certbot-apache
次に、次のコマンドを実行してTLS証明書を取得してインストールします。
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d mailtrain.example.com sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d sbox.mailtrain.example.com sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email protected] -d newsletter.example.com
場所:
-
--nginx
:nginxプラグインを使用してください。 -
--apache
:Apacheプラグインを使用してください。 -
--agree-tos
:利用規約に同意します。 --redirect
:301リダイレクトでHTTPSを強制します。-
--hsts
:すべてのHTTP応答にStrict-Transport-Securityヘッダーを追加します。ドメインに常にTLSを使用するようにブラウザを強制します。 SSL/TLSストリッピングから防御します。 -
--staple-ocsp
:OCSPステープリングを有効にします。有効なOCSP応答は、TLS中にサーバーが提供する証明書にホチキス止めされます。 --email
:アカウントの復旧やその他の重要な通知メッセージに使用されるメールアドレス。
これで、証明書が取得され、自動的にインストールされます。
次に、/var/www/mailtrainv2/server/config/production.yaml
を編集する必要があります ファイルを作成してhttp
を変更します https
へ 。次に、メールトレインサービスを再起動します。
sudo systemctl restart mailtrainv2
ステップ7:Mailtrain Configuratin
https://mailtrain.example.com
にアクセスします 。ユーザー名admin
でログインします とパスワードtest
。
次に、Administration
に移動します ->Users
アカウントのメールアドレスとパスワードを変更するページ。
admin
から変更することをお勧めします 他の何かに。 Mailtrain Webインターフェースにはそのようなオプションはありませんが、SQLコマンドを使用してMariaDBデータベースのユーザー名を変更できます。
Administration
に移動します ->Global Settings
デフォルト設定を変更するページ。サービスアドレスをhttp://localhost:3000/
から変更する必要があります サブドメイン(https://newsletter.example.com
。
次に、Administration
に移動します ->send configurations
Mailtrainが電子メールを送信できるようにSMTP設定を構成します。デフォルトでは、MailtrainはZoneMTAを使用するように構成されています。 [編集]ボタンをクリックして、デフォルト設定を変更します。
Mailer Settings
、独自のメールサーバーがある場合またはAmazon SESを使用している場合は、SMTPを使用できます。実際には、SMTP
で他のSMTPリレーサービスを使用することもできます タブ。下のスクリーンショットでは、自分のメールサーバーを使用しています。メールはSTARTTLS暗号化を使用してポート587で送信されます。
メールサーバーがメールサーバーにインストールされている場合は、次のSMTP設定を使用する必要があります。ホスト名は127.0.0.1
である必要があります ポートは25
である必要があります 。ローカルホストと通信するときに暗号化や認証を有効にする必要はありません。
設定を保存します。次に、Mailtrainの機能をテストするためのリストを作成できます。
ユーザーと役割の管理
Mailtrain v2は、きめ細かいユーザー権限と柔軟な共有により、複数のユーザーをサポートします。 MailtrainWebインターフェースで追加のユーザーを作成できます。デフォルトでは、ユーザーが引き受けることができる役割は3つあります。
- グローバルマスター:これはスーパー管理者ユーザーです。
- キャンペーン管理者
- なし
各ロールに関連付けられている権限は、/var/www/mailtrainv2/server/config/default.yaml
で定義されています ファイル。