So installieren Sie die Mailtrain Newsletter-Anwendung auf CentOS 7

Mailtrain ist eine Open Source selbst gehostete Newsletter-Anwendung, die auf Node.js geschrieben wurde. Es verwendet eine sehr beliebte Node.js Bibliothek Nodemailer, um die E-Mails zu versenden. Es bietet hervorragende Automatisierung und Analytik ohne jegliche Kosten. Sie können mit dem CSV-Dateiimport ganz einfach eine E-Mail-Liste mit einer Million E-Mail-Adressen erstellen oder importieren. Es unterstützt auch benutzerdefinierte Felder und Formulare. Es bietet Automatisierung durch Trigger, die bestimmte Nachrichten an bestimmte Benutzer senden können, wenn die Aktion ausgelöst wird. Sie können jeden E-Mail-Anbieter verwenden, um den Newsletter zu versenden, der das SMTP-Protokoll unterstützt, sowie Unterstützung für Amazon SES, ZoneMTA, SendGrid und Mailgun etc. Es bietet mehrere WYSIWYG-Editoren, um schöne Vorlagen für Newsletter zu erstellen.

In diesem Tutorial werden wir Mailtrain mit allen erforderlichen Abhängigkeiten zu CentOS 7 installieren. Wir werden Nginx auch als Reverse-Proxy einrichten, um die Anwendung auf dem Standard HTTP-Port zu bedienen.

Anforderungen

Die Datenbank benötigt mindestens 1 GB RAM. Alle erforderlichen Abhängigkeiten werden im gesamten Tutorial installiert. Sie benötigen eine minimale Installation von CentOS 7 mit Root-Zugriff darauf. Wenn du als Nicht-Root-Benutzer angemeldet bist, kannst du sudo -i ausführen, um zum Root-Benutzer zu wechseln.

Basis-System aktualisieren

Vor der Installation eines Pakets wird empfohlen, die Pakete und das Repository mit dem folgenden Befehl zu aktualisieren.

yum -y update

Node.js installieren

Node.js wird von Mailtrain benötigt, da es mit Nodemailer erstellt wird. Node.js ist eine sehr beliebte JavaScript-Laufzeit und Nodemailer ist ein Modul für Node.js-Anwendungen zum Senden von E-Mails.

Fügen Sie das Repository Node.js 8.x hinzu:

curl --silent --location https://rpm.nodesource.com/setup_8.x | sudo bash -

Installieren Sie Node.js.

yum -y install nodejs

MariaDB installieren

Um die Mailtrain-Datenbank zu speichern, müssen wir MariaDB installieren. MariaDB ist ein Fork von MySQL
MariaDB Repository in Ihrem System installieren.

nano /etc/yum.repos.d/mariadb.repo

Füge die folgenden Zeilen zur Datei hinzu.

[mariadb]
name = MariaDB
baseurl = http://yum.mariadb.org/10.2/centos7-amd64
gpgkey=https://yum.mariadb.org/RPM-GPG-KEY-MariaDB
gpgcheck=1

Installieren Sie nun die MariaDB, indem Sie sie ausführen.

yum -y install mariadb-server mariadb

So starten Sie MariaDB und ermöglichen Sie es, mit den folgenden Befehlen beim Booten zu starten.

systemctl start mariadb
 systemctl enable mariadb

Führen Sie nun die folgenden Befehle aus, um Ihre MySQL- oder MariaDB-Installation zu sichern.

mysql_secure_installation

Es wird ein kleines Skript ausführen, das Sie auffordert, das Root-Passwort für MariaDB anzugeben. Da wir gerade MariaDB installiert haben, ist das Root-Passwort nicht gesetzt, drücken Sie einfach die Eingabetaste, um fortzufahren. Es wird Sie fragen, ob Sie ein Root-Passwort für Ihre MariaDB-Installation festlegen möchten, wählen Sie y und setzen Sie ein sicheres Passwort für die Installation. Außerdem werden Sie aufgefordert, Testdatenbanken und anonyme Benutzer zu entfernen. Die meisten Fragen sind selbsterklärend und du solltest alle Fragen mit ja oder y beantworten.

Mailtrain benötigt zwei Datenbankbenutzer, um zu arbeiten, eine für die Verwaltung der Mailtrain-Datenbank und eine für die Erstellung der Mitarbeiterberichte.

Um eine Datenbank zu erstellen, müssen wir uns zuerst bei der MySQL-Befehlszeile anmelden. Führen Sie den folgenden Befehl aus.

mysql -u root -p

Dies wird Sie nach dem Passwort fragen, das Root-Passwort von MySQL angeben, das Sie zuvor festgelegt haben. Führen Sie nun die folgende Abfrage aus, um eine neue Datenbank für Ihre Mailtrain-Installation zu erstellen.

CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;

Die obige Abfrage erstellt eine Datenbank namens mailtrain. Achten Sie darauf, dass Sie am Ende jeder Abfrage Semikolon verwenden, da die Abfrage immer mit einem Semikolon endet. Sobald die Datenbank erstellt ist, können Sie einen neuen Benutzer anlegen und dem Benutzer alle Berechtigungen für die Datenbank erteilen. Die Verwendung von root-Benutzern wird für die Datenbanken nicht empfohlen. Um einen neuen Datenbankbenutzer anzulegen, führen Sie die folgende Abfrage aus.

CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'StrongPassword';

Die obige Abfrage erstellt einen Benutzer mit dem Benutzernamen mailtrain. Du kannst jeden beliebigen Benutzernamen anstelle von mailtrain verwenden. Ersetzen Sie StrongPassword durch ein sicheres Passwort. Geben Sie nun Ihrem Datenbankbenutzer die entsprechenden Berechtigungen für die von Ihnen erstellte Datenbank. Führen Sie den folgenden Befehl aus.

GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost';

Erstellen Sie nun einen neuen Benutzer für Mailtrain RO.

CREATE USER 'mailtrain_ro'@'localhost' IDENTIFIED BY 'StrongROPassword';

Bieten Sie dem RO-Benutzer Lesezugriff über die Mailtrain-Datenbank.

GRANT SELECT ON mailtrain.* TO 'mailtrain_ro'@'localhost';

Führen Sie nun den folgenden Befehl aus, um die Änderungen sofort auf die Datenbankberechtigungen anzuwenden.

FLUSH PRIVILEGES;

Verlassen Sie die MySQL-Eingabeaufforderung mit dem Befehl exit.

EXIT;

Abhängigkeiten installieren

Mailtrain benötigt nur wenige weitere Abhängigkeiten, um zu funktionieren. Installieren Sie die Abhängigkeiten durch Ausführen:

yum -y install ImageMagick git python redis bind-utils gcc-c++ make

ImageMagick ist ein Werkzeug zur Verarbeitung von Bitmap-Bildern und Git wird verwendet, um das Repository des Anwendungsprojekts zu klonen. Redis ist eine sehr beliebte Session-Cache-Anwendung und Python, bind-utils, gcc-c++ und make werden zur Kompilierung der Anwendungsdateien verwendet.

Starten Sie Redis und lassen Sie es automatisch starten:

systemctl start redis
 systemctl enable redis

Mailtrain herunterladen und installieren

Klonen Sie die Mailtrain-Installationsdateien mit Git.

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

Erstellen Sie einen neuen Mailtrain-Benutzer, um den Mailtrain-Daemon auszuführen. Dadurch wird sichergestellt, dass der Mailtrain in einer isolierten Umgebung läuft.

adduser mailtrain -d /opt/mailtrain

Der obige Befehl erstellt einen neuen Benutzer mailtrain und /opt/mailtrain wird als Heimatverzeichnis verwendet.

Wechseln Sie durch Ausführen in das Mailtrain-Verzeichnis:

cd /opt/mailtrain

Bevor Sie fortfahren, sollten Sie eine zufällige Zeichenkette generieren, die zur Verschlüsselung der Sitzungsdaten verwendet wird. Um die zufällige Zeichenkette zu generieren, können Sie das Dienstprogramm pwgen verwenden.

Führen Sie yum -y install pwgen aus, um das Dienstprogramm pwgen zu installieren. Führen Sie pwgen -1 64 aus, um eine Zeichenkette mit einer Länge von 64 Zeichen zu erzeugen. Du wirst sehen:

[[email protected] mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied

Erstellen Sie eine neue Konfigurationsdatei production.toml. Die in dieser Datei angegebene Konfiguration überschreibt die Standardkonfigurationsdatei default.toml. Wir sollten die Standardkonfigurationsdatei nicht ändern. Erstellen Sie eine neue Datei production.toml, um die übergeordnete Konfiguration zu speichern.

nano config/production.toml

Füllen Sie die Datei mit der folgenden Konfiguration.

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

Die obige Konfiguration ermöglicht es Mailtrain, als Benutzer mailtrain und Mailtrain Reports Worker als Benutzer nobody zu arbeiten. Weiterhin konfiguriert es den eingebauten Server so, dass er auf Port 3000 auf localhost hört. Wir werden Nginx als Reverse-Proxy einrichten, so dass die Mailtrain-Webschnittstelle über den Standard-HTTP-Port erreichbar ist.

Ersetzen Sie RandomString in secret= durch die oben generierte zufällige Zeichenkette. Setzen Sie den Proxy auf true, da wir den in Mailtrain integrierten Server hinter dem Nginx-Proxy ausführen werden.

Geben Sie den Benutzernamen, das Passwort und den Datenbanknamen der Datenbank ein, die Sie zum Speichern der Mailtrain-Daten erstellt haben.

Erstellen Sie außerdem eine neue Datei, um die Produktionskonfiguration für die Worker Reports zu speichern.

nano workers/reports/config/production.toml

Füllen Sie die Datei mit der folgenden Konfiguration.

[log]
level="error"

[mysql]
host="localhost"
user="mailtrain_ro"
password="StrongROPassword"
database="mailtrain"
port=3306
charset="utf8"
timezone="local"

Wählen Sie nun die erforderlichen Abhängigkeiten von Node.js und installieren Sie die Software:

npm install --production

Sobald die Anwendung installiert ist, können Sie sie sofort mit:

NODE_ENV=production npm start

Wenn der Server läuft, dann sollten Sie die folgende Ausgabe sehen.

[[email protected] mailtrain]# NODE_ENV=production npm start

> [email protected] start /opt/mailtrain
> node index.js
    
info Using local auth

Aber anstatt die Anwendung direkt zu starten, verwenden wir einen Systemdienst. Stoppen Sie die Ausführung, indem Sie Strg + C drücken.

Geben Sie dem Mailtrain-Benutzer das Eigentum an den Dateien und entfernen Sie alle Berechtigungen über die Konfiguration von anderen Nicht-Root-Benutzern des Systems:

chown -R mailtrain:mailtrain /opt/mailtrain
 chmod o-rwx /opt/mailtrain/config

Systemdienst einrichten

Erstellen Sie eine neue Systemd-Servicedatei. Die Verwendung von Systemd anstelle eines direkten Befehls zur Ausführung des Servers stellt sicher, dass der Server bei Ausfall und Neustart automatisch gestartet wird. Es macht die Verwaltung des Dienstes sehr einfach.

nano /etc/systemd/system/mailtrain.service

Füllen Sie die Datei mit der folgenden Konfiguration.

[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

Starten Sie Mailtrain und aktivieren Sie es so, dass es beim Booten automatisch startet:

systemctl enable mailtrain
 systemctl start mailtrain

Um den Status des Dienstes zu überprüfen, führen Sie run:

systemctl status mailtrain

Sie sollten sehen, dass der Dienst aktiv läuft.

[[email protected] ~]# 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

Einrichtung Logrotate

Logrotate ist ein sehr nützliches Dienstprogramm, um veraltete Protokolle zu aktualisieren. Wenn ein Dienst kontinuierlich ausgeführt wird, erzeugt er eine große Anzahl von Protokollen. Die Dateien, die die Protokolle enthalten, verbrauchen viel Speicherplatz. Logrotate löscht periodisch die alten Protokolle, so dass die Protokolleinträge durch neue Protokolle ersetzt werden können.

Erstellen Sie eine neue Logrotate-Konfigurationsdatei:

nano /etc/logrotate.d/mailtrain

Füllen Sie die Datei mit der folgenden Konfiguration:

/var/log/mailtrain.log {
daily
rotate 12
compress
delaycompress
missingok
notifempty
copytruncate
nomail
}

Nginx als Reverse Proxy einrichten

Wir haben die in Mailtrain eingebaute Webschnittstelle konfiguriert, um localhost auf Port 3000 zu hören, da es wichtig ist, einen produktiven Webserver zu betreiben, um die Website den Benutzern zur Verfügung zu stellen. In diesem Tutorial werden wir Nginx als Reverse-Proxy verwenden, so dass die Anwendung über den Standard-HTTP-Port angesprochen werden kann. Installieren Sie den Nginx-Webserver:

yum -y install nginx

Erstellen Sie einen neuen virtuellen Host für die Server-Blockdatei für Nginx:

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

Füllen Sie die Datei mit:

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;
    }
}

Starten Sie den Nginx-Webserver neu und lassen Sie ihn beim Booten automatisch starten:

systemctl restart nginx
 systemctl enable nginx

Firewall und SELinux konfigurieren

Wenn Sie eine Firewall auf Ihrem Server betreiben, müssen Sie die Firewall so konfigurieren, dass sie eine Ausnahme für den HTTP-Dienst setzt. Erlauben Sie Nginx Reverse-Proxy, sich von außerhalb des Netzwerks zu verbinden.

firewall-cmd --zone=public --permanent --add-service=http
 firewall-cmd --reload

Wenn Sie SELinux auf Ihrem System aktiviert haben, müssen Sie einige Ausnahmen in den SELinux-Richtlinien hinzufügen.

Um zu überprüfen, ob SELinux aktiviert ist, führen Sie:

getenforce

Wenn Sie SELinux aktiviert haben, dann starten Sie:

setsebool -P httpd_can_network_connect 1

Zugriff auf das Web-Interface

Die Installation von Mailtrain ist nun abgeschlossen. Sie können nun auf den Mailtrain-Server unter http://news.example.com. zugreifen. Sie werden die folgende Schnittstelle sehen.

Mailtrain

Klicken Sie auf den Login-Button und melden Sie sich mit dem Benutzernamen admin und dem Passwort test an.

Mailtrain Login

Durchsuchen Sie den Abschnitt Account im Dashboard und aktualisieren Sie E-Mail-Adresse und Passwort. Es ist sehr wichtig, das Passwort so schnell wie möglich zu aktualisieren.

Konto in Mailtrain erstellen

Außerdem ist es wichtig, die Einstellungen zu aktualisieren, bevor Sie Mailtrain verwenden können.

Mailtrain-Einstellungen

Aktualisieren Sie die Site-URL und die Admin-E-Mail. Sie können auch die Google Analytics Tracking ID angeben, um die Erkenntnisse über Google Analytics zu verfolgen. Du kannst einen HTML-Code eingeben, der auf der Homepage deines Servers angezeigt wird.

Standardeinstellungen der Mailtrain-Kampagne

Legen Sie Kampagnenvorgaben fest, wie z.B. Ihren Sander-Namen, Standardadresse, Standard aus Name, E-Mail und URL usw. Wenn diese Optionen beim Senden der E-Mails nicht konfiguriert sind, werden die Standardwerte verwendet.

Mailer-Einstellungen

Schließlich ist die wichtigste Konfiguration die Bereitstellung von Anmeldeinformationen für den E-Mail-Server. Sie können jeden SMTP-Server oder Amazon SES (Simple Email Service) verwenden. Wenn Sie SMTP verwenden, geben Sie den Hostnamen, Port, Benutzernamen und das Passwort Ihres SMTP-Servers an. Wenn Sie Amazon SES verwenden, geben Sie den API-Schlüssel und andere Zugangsdaten an.

Sie können auch Ihren eigenen SMTP-Server einrichten. Folgen Sie einfach einer der folgenden Anweisungen:

Sie haben jetzt einen voll funktionsfähigen Mailtrain-Server auf Ihrem CentOS 7-Server installiert. Erstellen Sie Ihre erste Liste und starten Sie den Versand von Newslettern an die Abonnenten. Sie können mit dem WYSIWYG-Editor eine interaktive Vorlage erstellen und die E-Mails über die Kampagnen versenden. Mailtrain bietet auch Berichte über die gesendeten und geöffneten E-Mails. Sie können die Registerkarte Automatisierung verwenden, um Auslöser zu erstellen, die E-Mails senden, wenn eine bestimmte Aktion ausgeführt wird. Wenn eine Liste ein benutzerdefiniertes Feld für ein GPG Public Key-Set enthält, können Abonnenten ihren GPG Public Key hochladen, um verschlüsselte Nachrichten von der Liste zu erhalten.

Das könnte Dich auch interessieren …