GNU/Linux >> Linux の 問題 >  >> Ubuntu

MailtrainセルフホストニュースレターアプリをUbuntu16.04サーバーにインストールします

このチュートリアルでは、Ubuntu16.04サーバーにMailtrainをインストールする方法を説明します。 Mailtrainは、オープンソースのセルフホストニュースレターアプリであり、Mailchimpのような商用メールサービスプロバイダーに代わるものです。 Mailtrainを使用して、独自のメールサーバーを介して、またはSMTPリレーサービス(Mailjet、SendGrid、AmazonSES、Mailgunなど)を使用して、メールサブスクライバーにメールを送信できます。

Mailtrainは、Node.jsおよびMySQL/MariaDB上に構築されたGPLv3.0ライセンスの条件の下でリリースされます。最新バージョンはv1.24.1で、2018年9月28日にリリースされました。Mailtrainの機能は次のとおりです。

  • 大規模なメーリングリスト(100万人の加入者など)を簡単に管理できます。
  • APIを使用して手動でサブスクライバーを追加するか、CSVファイルからインポートできます。
  • カスタムフィールド(テキストフィールド、数値、ドロップダウン、またはチェックボックス)、マージタグ、カスタムフォームをサポートしています。
  • リストのセグメンテーション。
  • RSSキャンペーン:RSSフィードからニュースレターを自動生成し、購読者に送信します。
  • サブスクライバーはGPG公開鍵をアップロードでき、Mailtrainはニュースレターを暗号化します。
  • すべてのリンクの個々のクリック統計を確認できます。
  • 高度なメールテンプレートエディタとHTMLコードエディタ。
  • 自動化:ユーザーが事前定義されたトリガーをアクティブにしたときに特定のメールを送信します。
  • オープンメーリングリスト(公開サブスクリプションを許可)とクローズドメーリングリスト(サブスクライバーは管理者によってリストに追加されます)を作成できます。

Ubuntu16.04サーバーにMailtrainをインストールするための前提条件

Mailtrainを実行するには、少なくとも1GBのRAMを搭載したサーバーが必要です。この特別なリンクをクリックすると、DigitalOceanで100ドルの無料クレジットを獲得できます。 (新規ユーザーのみ)。すでにDigitalOceanユーザーである場合は、この特別なリンクをクリックして、Vultrで$ 50の無料クレジットを取得できます(新規ユーザーのみ)。 DigitalOceanまたはVultrでアカウントを取得したら、サーバーにUbuntu 16.04をインストールし、以下の手順に従います。

ドメイン名も必要です。ドメイン名をNameCheapから登録しました。これは、価格が低く、whoisのプライバシー保護が無料で提供されるためです。

ステップ1:MariaDBデータベースサーバーをインストールする

サブスクライバーデータはデータベースに保存されます。 MailtrainはMySQLとMariaDBをサポートしています。 MariaDBは、MySQLのドロップイン代替品です。これは、OracleがMySQLをクローズドソース製品に変える可能性があることを懸念しているMySQLチームの元メンバーによって開発されました。それでは、MariaDBデータベースサーバーをインストールしましょう。

次のコマンドを入力して、Ubuntu16.04にインストールします。

 sudo apt install mariadb-server mariadb-client 

インストール後、MariaDBサーバーは自動的に開始されます。 systemctlを使用します ステータスを確認します。

 systemctl status mysql 

サンプル出力:

●mariadb.service-MariaDB10.1.34データベースサーバーロード済み:ロード済み(/lib/systemd/system/mariadb.service;有効;ベンダープリセット:有効)アクティブ:アクティブ(実行中)2018年9月8日土曜日以降11 :13:27 UTC; 21秒前ドキュメント:man:mysqld(8)https://mariadb.com/kb/en/library/systemd/メインPID:3473(mysqld)ステータス:「SQLリクエストを今すぐ取得しています...」タスク:27(制限:505)CGroup:/system.slice/mariadb.service└─3473/ usr / sbin / mysqld 

実行されていない場合は、次のコマンドで開始します:

 sudo systemctl start mysql 

MariaDBがシステムの起動時に自動的に起動できるようにするには、

を実行します。
 sudo systemctl enable mysql 

次に、インストール後のセキュリティスクリプトを実行します。

 sudo mysql_secure_installation 

MariaDBのrootパスワードの入力を求められたら、rootパスワードがまだ設定されていないため、Enterキーを押します。次に、yと入力します MariaDBサーバーのルートパスワードを設定します。

次に、Enterキーを押して残りのすべての質問に答えることができます。これにより、匿名ユーザーが削除され、リモートrootログインが無効になり、テストデータベースが削除されます。このステップは、MariaDBデータベースセキュリティの基本的な要件です。 (文字Y 大文字で表示されます。これは、デフォルトの回答であることを意味します。)

ステップ2:Mailtrainのデータベースとユーザーを作成する

次に、MariaDBコンソールにログインして、Mailtrainのデータベースとユーザーを作成する必要があります。デフォルトでは、UbuntuのMaraiDBパッケージは unix_socketを使用します ユーザーログインを認証します。これは基本的に、OSのユーザー名とパスワードを使用してMariaDBコンソールにログインできることを意味します。したがって、次のコマンドを実行して、MariaDBのrootパスワードを指定せずにログインできます。

 sudo mysql -u root 

次のコマンドを使用して、Mailtrainのデータベースを作成します。 mailtrainという名前を付けました 、ただし、好きな名前を使用できます。 (セミコロンを省略しないでください。)

データベースメールトレインを作成します;

次に、以下のコマンドを入力してMailtrainのデータベースユーザーを作成し、mailtrainデータベースのすべての権限をユーザーに付与します。 mtuserを置き換えます およびyour-password ご希望のユーザー名とパスワードを使用してください。

mailtrain。*のすべての権限を'mtuser_password'で識別されるmtuser@localhostに付与します;

次に、mailtrainデータベースへの読み取り専用アクセス権を持つユーザーを作成します。このユーザーにmt_readonlyという名前を付けました 。

mailtrainでselectを付与します。*'mt_readonly_password'で識別されるmt_readonly@localhostに;

変更を有効にするために特権テーブルをフラッシュしてから、MariaDBコンソールを終了します。

フラッシュ特権;終了;

ステップ3:Node.jsをインストールする

MailtrainはNode.jsに基づいて構築されています。これは、人間が読めるJavaScriptコードをマシンコードに変換するJavaScriptランタイム環境です。したがって、Mailtrainを実行するには、Ubuntu16.04にNode.jsをインストールする必要があります。 MailtrainにはNode.js7以降が必要です。このチュートリアルでは、NodeSourceリポジトリからNode.js(V8.x)の現在のLTSリリースをインストールします。

 curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -sudo apt install -y nodejs 

nodejs パッケージにはnpm(Node.jsパッケージマネージャー)バイナリが含まれているため、個別にインストールする必要はありません。 Node.jsとnpmのバージョンを確認するには、

を実行します。
 node -vnpm -v 

出力:

npmからネイティブアドオンをコンパイルしてインストールするには、ビルドツールもインストールする必要があります:

 sudo apt install -y build-essential 

ステップ4:Mailtrainを実行する

/var/www/に移動します GithubからMailtrainファイルをフェッチします。

 cd / var / www / sudo git clone https://github.com/Mailtrain-org/mailtrain.git 

次のコマンドを使用して、初期SQLデータをmailtrainデータベースにインポートします。 mtuserのパスワードを入力する必要があります 。

 mysql -u mtuser -p mailtrain  

Production.toml構成ファイルを作成します。

 sudo nano /var/www/mailtrain/config/production.toml 

このファイルでは、/var/www/mailtrain/config/default.tomlのデフォルト構成を上書きする構成を追加できます。 ファイル。次の構成を追加するだけで済みます。

 user ="mailtrain" group ="mailtrain" [log] level ="error" [www] secret="これをランダムな文字に置き換えてください"[mysql]user ="mtuser" password ="mtuser_password" [queue]プロセス=5

ファイルを保存して閉じます。次に、mailtrainを作成します mailtrainデーモンを実行するためのユーザーとグループ。このユーザーのパスワードを作成する必要がないため、通常のユーザーではなくシステムユーザーを作成することに注意してください。

 sudo adduser --system --group mailtrain 

レポートワーカーの構成ファイルを作成します。

 sudo nano /var/www/mailtrain/workers/reports/config/production.toml 

次の構成を追加します。このレポートワーカーは、メールトレインデータベースへの読み取り専用アクセス権を持ちます。

 [log] level ="error" [mysql] user ="mt_readonly" password ="mt_readonly_password" 

ファイルを保存して閉じます。次に、/var/www/mailtrain/の権限を変更します 。

 sudo chown mailtrain:mailtrain / var / www / mailtrain / -Rsudo chmod o-rwx / var / www / mailtrain / config / 

そして、必要なノードパッケージをインストールします。

 cd / var / www / mailtrainsudo npm install --no-progress --production --unsafe-perm =true 

systemdサービスユニットファイルを/etc/systemd/system/にコピーします ディレクトリ。

 sudo cp /var/www/mailtrain/setup/mailtrain.service / etc / systemd / system / 

このファイルを開きます。

 sudo nano /etc/systemd/system/mailtrain.service 

Mailtrainを/var/www/mailtrain/にダウンロードしたため ディレクトリなので、作業ディレクトリを/opt/mailtrainから変更します。 /var/www/mailtrainへ 。このファイルを保存して閉じます。次に、mailtrain.serviceを開始します 。

 sudo systemctl start mailtrain.service 

システムの起動時に自動起動を有効にします。

 sudo systemctl enable mailtrain.service 

ステータスを確認してください。実行されていることを確認してください。出力にアクティブ化(自動再起動)と表示されている場合は、Mailtrainが開始するまでしばらく待ちます。

 sudo systemctl status mailtrain.service 

Mailtrainが実行されたので、ポート3000を介してMailtrainWebインターフェースにアクセスできます。

 your-server-ip:3000 

リバースプロキシの設定とHTTPSの有効化

Mailtrain Webインターフェースを使用する前に、それをNginxの背後に置き、HTTPSを有効にしましょう。次のコマンドを使用して、Ubuntu16.04にNginxWebサーバーをインストールします。

 sudo apt install nginx 

これで、例のmailtrain-nginx.confをコピーできます。 /etc/nginx/conf.d/へのファイル ディレクトリ。

 sudo cp /var/www/mailtrain/setup/mailtrain-nginx.conf /etc/nginx/conf.d/ 

このファイルを開きます。

 sudo nano /etc/nginx/conf.d/mailtrain-nginx.conf 

次の行を見つけます。

 server_name mailtrain.org www.mailtrain.org; 

server_nameの値を変更します newsletter.your-domain.comのような独自のドメイン名へのパラメータ 。このサブドメインのAレコードを作成することを忘れないでください。

 server_name newsletter.linuxbabe.com; 

ファイルを保存して閉じます。次に、Nginx構成をテストします。

 sudo nginx -t 

テストが成功した場合は、変更を有効にするためにNginxをリロードします。

 sudo systemctl reload nginx 

これで、サブドメインnewsletter.your-domain.comを介してMailtrainWebインターフェースにアクセスできるようになります。 。

次に、/var/www/mailtrain/config/production.tomlを編集します ファイル。

 sudo nano /var/www/mailtrain/config/production.toml 

[www]で セクションに次の2行を追加して、mailtrainがNginxプロキシの背後にあることを示し、ローカルホストアドレスでのみリッスンするようにします。

 host ="127.0.0.1" proxy =true 

ファイルを保存して閉じます。次に、Mailtrainを再起動して、変更を有効にします。

 sudo systemctl restart mailtrain 

Let'sEncryptを使用したHTTPSの有効化

Let’s Encryptクライアント(certbot)をUbuntu16.04サーバーにインストールします。

 sudo apt install software-properties-commonsudo add-apt-repository ppa:certbot / certbotsudo aptupdatesudo apt install certbot python3-certbot-nginx 

次に、Nginxプラグインを使用して、次のコマンドを実行することにより、TLS証明書を自動的に取得してインストールできます。

 sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email your-email-address -d newsletter.your-domain.com 

これで、ドメイン名と安全なHTTPS接続を介してMailtrainWebインターフェースにアクセスできます。

ユーザー名adminでログインします とパスワードtest 。次に、アカウントのメールアドレスとパスワードを変更します。 settingsに移動します デフォルト設定を変更するページ。サービスアドレスをhttp://localhost:3000/から変更する必要があります サブドメイン(https://newsletter.your-domain.com

注:管理者アカウントは、ハッカーにとって簡単な標的です。最高のセキュリティを確保するために、ユーザー名をadminから変更することをお勧めします 他の何かに。 Mailtrain Webインターフェースにはそのようなオプションはありませんが、SQLコマンドを使用してMariaDBデータベースのユーザー名を変更できます。

Mailer Settings 、独自のメールサーバーがある場合、またはAmazon SESを使用している場合は、SMTPを使用できます。実際には、SMTPで他のSMTPリレーサービスを使用することもできます タブ。下のスクリーンショットでは、自分のメールサーバーを使用しています。メールはSTARTTLS暗号化を使用してポート587で送信されます。

設定を保存します。次に、Mailtrainの機能をテストするためのリストを作成できます。

メールトレインでバウンスメッセージを処理する方法

遅かれ早かれ、メーリングリストにはメールを送信できないアドレスが含まれるようになります。たとえば、会社の電子メールアドレスを使用する加入者が会社を辞めると、その電子メールアドレスは削除されます。そのため、メールサーバーはメールを配信できないことを示すバウンスメッセージを受信します。

SMTPリレーサービスを使用して電子メールを送信する場合、SMTPリレーサービスがバウンスメッセージを処理します。独自のメールサーバーを使用してメールを送信する場合は、Mailtrainでバウンスメッセージを処理する必要があります。 Mailtrainには、バウンスメッセージを処理する2つの方法があります。

  • VERP経由
  • Postfixログ経由

私は個人的にVERP方式を使用しています。これは、メールコミュニティで広く使用されており、2番目の方式ではサーバーのCPU使用率が高くなるためです。

VERPバウンス処理

VERP(可変エンベロープリターンパス)を使用すると、メーリングリストマネージャーはサブスクライバーごとに一意のエンベロープアドレスを使用します。 VERPを有効にするには、production.tomlを編集します ファイル。

 sudo nano /var/www/mailtrain/config/production.toml 

MailtrainホストでSMTPサーバーが実行されていない場合は、次のテキストを追加します。

 [verp] enabled =trueport =25disablesenderheader =true 

MailtrainサーバーでPostfixなどのSMTPサーバーが実行されている場合は、次のテキストを追加します。バウンス処理サーバーは127.0.0.1:2525でリッスンします 。

 [verp] enabled =true port =2525 host ="127.0.0.1" disablesenderheader =true 

ファイルを保存して閉じます。次に、Mailtrainを再起動して、変更を有効にします。

 sudo systemctl restart mailtrain 

Mailtrain Webインターフェースで、settingsに移動します ->VERP Bounce HandldingUse VERP to catch bouncesを確認します 。設定を保存します。

次に、サーバーのホスト名(bounces.your-domain.com)のMXレコードを作成する必要があります )次に、このホスト名のAレコードを追加し、Mailtrainホストを指すようにして、バウンスメッセージをMailtrainホストに送信できるようにします。リスト内の各サブスクライバーには、[email protected]のような一意のエンベロープアドレスがあります。 。

ドメイン名にDMARCレコードをデプロイした場合は、SPFアライメントをリラックスモードに設定する必要があることに注意してください。厳密モードに設定されている場合、ニュースレターはDMARCチェックに失敗する可能性があります。

Mailtrainバウンス処理サーバーが127.0.0.1のポート2525でリッスンしていて、Postfix SMTPサーバーがパブリックIPアドレスのポート25でリッスンしている場合、PostfixがバウンスメッセージをMailtrainに中継できるようにトランスポートマップを設定する必要があります。路線図ファイルを作成します。

 sudo nano / etc / postfix /transport 

このファイルに次の行を追加します。これにより、Postfixは[email protected]のようなアドレスのメールを中継するようになります。 Mailtrainバウンス処理サーバーに送信します。

 bounces.your-domain.com smtp:[127.0.0.1]:2525 

ファイルを保存して閉じます。次に、インデックスファイルを生成します。

 sudo postmap / etc / postfix /transport 

Postfixのメイン設定ファイルを編集します。

 sudo nano /etc/postfix/main.cf 

次の行をファイルに追加します。

transport_maps =hash:/ etc / postfix /transport 

ファイルを保存して閉じます。次に、変更を有効にするためにPostfixを再起動します。

 sudo systemctl restart postfix 

未購読の電子メールアドレスを自動的にクリーンアップするcronジョブ

購読していないメールアドレスは、MailtrainのWebベースの管理パネルで手動で削除できますが、MySQL / MariaDBコマンドを使用して削除する方がはるかに効率的で、Cronジョブを作成するだけでこのタスクを自動化できます。

まず、MySQL/MariaDBデータベースサーバーにログインします。

 sudo mysql -u root 

次に、メールトレインデータベースに接続します。

メールトレインを使用する;

サブスクライバーの情報はsubscriptionに保存されます テーブル。複数のメーリングリストがある場合は、複数のsubscriptionがあります。 テーブル。次のSQLコマンドを使用して、これらすべてのテーブルを一覧表示できます。

'subscription%'のようなテーブルを表示します; 

サーバーに出力します。

 + ------------------------------------- + | Tables_in_mailtrain(subscription%)| + ------------------------------------- + |サブスクリプション||サブスクリプション__1|| Subscription__2 | + ------------------------------------- + 

最初のテーブルは空のテーブルです。 Mailtrainには2つのリストがあります。それらはsubscription__1に保存されます およびsubscription__2 テーブル。購読しているメールアドレスのステータスコードは1に設定されています 。未登録のメールアドレスのステータスコードは2に設定されています 。したがって、サブスクライブされていない電子メールアドレスを削除するには、次のSQLコマンドを実行できます。

 DELETE FROM Subscription__1 where status ='2'; DELETE FROM Subscription__2 where status ='2'; 

MySQL / MariaDBデータベースサーバーを終了するには、

を実行します。
終了;

次に、rootユーザーのcrontabファイルを開きます。

 sudo crontab -e 

次の2行を追加します。

#未購読のメールアドレスをメーリングリストから毎日削除@ daily @ usr / bin / mysql -u root mailtrain -Bse "DELETE FROM Subscription__1 where status ='2'; DELETE FROM Subscription__2 where status ='2';" 

ファイルを保存して閉じます。これで完了です。

悪意のあるサインアップへの対処

何もすることがない人がいますが、偽のメールアドレスを使用してメーリングリストに登録します。そのため、登録確認メールが偽のメールアドレスに送信され、受信トレイに未配信のメールレポートが届く場合があります。

このようなroundcubeのWebメールを使用して、この種の電子メールメッセージを自動的に削除するフィルターを作成できます。次のスクリーンショットでは、次の場合にメッセージを自動的に削除するフィルターを作成したことがわかります

  • 件名に「未配信のメールが送信者に返送されました」が含まれています
  • 未配信のメッセージレポートが私のアドレスに送信されます。
  • 本文には「サブスクリプションを確認してください」が含まれています。 (サインアップ確認メールにこのフレーズが含まれているためです。)


Ubuntu
  1. SSHサーバーUbuntu22.04をインストールします

  2. Ubuntu14.04にMariaDB10.1Stableをインストールします

  3. Ubuntu 22.04 に MariaDB をインストールする方法

  1. Ubuntu18.04にMariaDBをインストールする方法

  2. Ubuntu20.04にMariaDBをインストールする方法

  3. Ubuntu18.04にMailtrainニュースレターソフトウェアをインストールする方法

  1. Ubuntu20.04にPowerDNSサーバーとPowerDNS管理者をインストールする方法

  2. Ubuntu 18.04 /Ubuntu16.04にMariaDBをインストールする方法

  3. WordPress + Apache、MariaDB、およびHHVMをUbuntu16.04にインストールします