GNU/Linux >> LINUX-Kenntnisse >  >> Ubuntu

Installieren Sie die selbstgehostete Mailtrain-Newsletter-App auf dem Ubuntu 16.04-Server

Dieses Tutorial zeigt Ihnen, wie Sie Mailtrain auf einem Ubuntu 16.04-Server installieren. Mailtrain ist eine selbst gehostete Open-Source-Newsletter-App, eine Alternative zu kommerziellen E-Mail-Dienstanbietern wie Mailchimp. Sie können Mailtrain verwenden, um E-Mails über Ihren eigenen E-Mail-Server oder einen beliebigen SMTP-Relay-Dienst (Mailjet, SendGrid, AmazonSES, Mailgun usw.) an Ihre E-Mail-Abonnenten zu senden.

Mailtrain wird unter den Bedingungen der GPL v3.0-Lizenz veröffentlicht, die auf Node.js und MySQL/MariaDB basiert. Die neueste Version ist v1.24.1, veröffentlicht am 28. September 2018. Funktionen von Mailtrain sind wie folgt:

  • Es ermöglicht Ihnen die einfache Verwaltung großer Mailinglisten (z. B. 1 Million Abonnenten).
  • Sie können Abonnenten manuell über die API hinzufügen oder aus einer CSV-Datei importieren.
  • Es unterstützt benutzerdefinierte Felder (Textfelder, Zahlen, Dropdown-Menüs oder Kontrollkästchen), Merge-Tags und benutzerdefinierte Formulare.
  • Listensegmentierung.
  • RSS-Kampagne:Newsletter automatisch aus RSS-Feed generieren und an Abonnenten senden.
  • Abonnenten können ihre öffentlichen GPG-Schlüssel hochladen und Mailtrain verschlüsselt den Newsletter für sie.
  • Ermöglicht es Ihnen, individuelle Klickstatistiken für jeden Link zu überprüfen.
  • Erweiterte Editoren für E-Mail-Vorlagen und HTML-Code-Editor.
  • Automatisierung:Senden Sie bestimmte E-Mails, wenn der Benutzer Ihren vordefinierten Auslöser aktiviert.
  • Sie können eine offene E-Mail-Liste (öffentliche Anmeldung zulassen) und eine geschlossene E-Mail-Liste erstellen (Abonnenten werden der Liste vom Administrator hinzugefügt).

Voraussetzungen für die Installation von Mailtrain auf Ubuntu 16.04 Server

Um Mailtrain auszuführen, benötigen Sie einen Server mit mindestens 1 GB RAM. Sie können auf diesen speziellen Link klicken, um 100 $ kostenloses Guthaben auf DigitalOcean zu erhalten. (Nur für neue Benutzer). Wenn Sie bereits DigitalOcean-Benutzer sind, können Sie auf diesen speziellen Link klicken, um ein kostenloses Guthaben von 50 $ für Vultr zu erhalten (nur für neue Benutzer). Sobald Sie ein Konto bei DigitalOcean oder Vultr haben, installieren Sie Ubuntu 16.04 auf Ihrem Server und folgen Sie den Anweisungen unten.

Sie müssen auch einen Domänennamen haben. Ich habe meinen Domainnamen bei NameCheap registriert, weil der Preis niedrig ist und sie Whois-Datenschutz kostenlos bieten.

Schritt 1:MariaDB-Datenbankserver installieren

Ihre Abonnentendaten werden in einer Datenbank gespeichert. Mailtrain unterstützt MySQL und MariaDB. MariaDB ist ein Drop-in-Ersatz für MySQL. Es wurde von ehemaligen Mitgliedern des MySQL-Teams entwickelt, die befürchten, dass Oracle MySQL in ein Closed-Source-Produkt verwandeln könnte. Lassen Sie uns also den MariaDB-Datenbankserver installieren.

Geben Sie den folgenden Befehl ein, um es unter Ubuntu 16.04 zu installieren.

sudo apt install mariadb-server mariadb-client

Nach der Installation sollte der MariaDB-Server automatisch gestartet werden. Verwenden Sie systemctl um seinen Status zu überprüfen.

systemctl status mysql

Beispielausgabe:

● mariadb.service - MariaDB 10.1.34 Datenbankserver Geladen:geladen (/lib/systemd/system/mariadb.service; aktiviert; Herstellervoreinstellung:aktiviert) Aktiv:aktiv (läuft) seit Sa 2018-09-08 11 :13:27 UTC; vor 21s Docs:man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ Haupt-PID:3473 (mysqld) Status:„Nehmen Sie jetzt Ihre SQL-Anfragen entgegen …“ Aufgaben:27 (limit :505) CGroup:/system.slice/mariadb.service └─3473 /usr/sbin/mysqld

Wenn es nicht läuft, starten Sie es mit diesem Befehl:

sudo systemctl mysql starten

Damit MariaDB beim Systemstart automatisch startet, führen Sie

aus
sudo systemctl enable mysql

Führen Sie nun das Sicherheitsskript nach der Installation aus.

sudo mysql_secure_installation

Wenn Sie aufgefordert werden, das MariaDB-Root-Passwort einzugeben, drücken Sie die Eingabetaste, da das Root-Passwort noch nicht festgelegt ist. Geben Sie dann y ein um das Root-Passwort für den MariaDB-Server festzulegen.

Als nächstes können Sie die Eingabetaste drücken, um alle verbleibenden Fragen zu beantworten, wodurch der anonyme Benutzer entfernt, die Remote-Root-Anmeldung deaktiviert und die Testdatenbank entfernt wird. Dieser Schritt ist eine Grundvoraussetzung für die MariaDB-Datenbanksicherheit. (Beachten Sie, dass der Buchstabe Y wird groß geschrieben, was bedeutet, dass es die Standardantwort ist.)

Schritt 2:Erstellen Sie eine Datenbank und einen Benutzer für Mailtrain

Jetzt müssen wir uns bei der MariaDB-Konsole anmelden und eine Datenbank und einen Benutzer für Mailtrain erstellen. Standardmäßig verwendet das MaraiDB-Paket auf Ubuntu unix_socket um die Benutzeranmeldung zu authentifizieren, was im Grunde bedeutet, dass Sie den Benutzernamen und das Passwort des Betriebssystems verwenden können, um sich bei der MariaDB-Konsole anzumelden. Sie können also den folgenden Befehl ausführen, um sich anzumelden, ohne das MariaDB-Root-Passwort anzugeben.

sudo mysql -u root

Erstellen Sie mit dem folgenden Befehl eine Datenbank für Mailtrain. Ich habe es mailtrain genannt , aber Sie können einen beliebigen Namen verwenden. (Lassen Sie das Semikolon nicht aus.)

Datenbank-Mailtrain erstellen;

Geben Sie dann den folgenden Befehl ein, um einen Datenbankbenutzer für Mailtrain zu erstellen und dem Benutzer alle Berechtigungen der Mailtrain-Datenbank zu gewähren. Ersetzen Sie mtuser und your-password mit Ihrem bevorzugten Benutzernamen und Passwort.

gewähren Sie alle Privilegien auf mailtrain.* an mtuser@localhost, identifiziert durch 'mtuser_password';

Erstellen Sie als Nächstes einen Benutzer mit Nur-Lese-Zugriff auf die Mailtrain-Datenbank. Ich habe diesen Benutzer mt_readonly genannt .

grant select on mailtrain.* TO mt_readonly@localhost identifiziert durch 'mt_readonly_password';

Leeren Sie die Berechtigungstabelle, damit die Änderungen wirksam werden, und verlassen Sie dann die MariaDB-Konsole.

Privilegien leeren;exit;

Schritt 3:Node.js installieren

Mailtrain basiert auf Node.js, einer JavaScript-Laufzeitumgebung, die von Menschen lesbaren JavaScript-Code in Maschinencode übersetzt. Wir müssen also Node.js auf Ubuntu 16.04 installieren, um Mailtrain auszuführen. Mailtrain erfordert Node.js 7+. Dieses Tutorial installiert die aktuelle LTS-Version von Node.js (V8.x) aus dem NodeSource-Repository.

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

Die nodejs Paket enthält die npm-Binärdatei (Node.js-Paketmanager), sodass Sie sie nicht separat installieren müssen. Um Ihre Version von Node.js und npm zu überprüfen, führen Sie

aus
Knoten -vnpm -v

Ausgabe:

Um native Addons von npm zu kompilieren und zu installieren, müssen Sie auch Build-Tools installieren:

sudo apt install -y build-essential

Schritt 4:Mailtrain ausführen

Gehen Sie zu /var/www/ und Mailtrain-Dateien von Github abrufen.

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

Importieren Sie die anfänglichen SQL-Daten in die Mailtrain-Datenbank, indem Sie den folgenden Befehl verwenden. Sie müssen das Passwort von mtuser eingeben .

mysql -u mtuser -p mailtrain  

Erstellen Sie die Konfigurationsdatei production.toml.

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

In dieser Datei können Sie Konfigurationen hinzufügen, die die Standardkonfigurationen in /var/www/mailtrain/config/default.toml überschreiben Datei. Wir müssen nur die folgenden Konfigurationen hinzufügen.

user="mailtrain"group="mailtrain"[log]level="error"[www]secret="Ersetzen Sie dies durch zufällige Zeichen"[mysql]user="mtuser"password="mtuser_password"[queue] Prozesse=5

Speichern und schließen Sie die Datei. Erstellen Sie dann den mailtrain Benutzer und Gruppe, unter der der Mailtrain-Daemon ausgeführt werden soll. Beachten Sie, dass wir für diesen Benutzer kein Passwort erstellen müssen, also erstellen wir einen Systembenutzer anstelle eines normalen Benutzers.

sudo adduser --system --group mailtrain

Erstellen Sie eine Konfigurationsdatei für den Report Worker.

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

Fügen Sie die folgenden Konfigurationen hinzu. Dieser Report Worker hat nur Lesezugriff auf die Mailtrain-Datenbank.

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

Speichern und schließen Sie die Datei. Ändern Sie dann die Berechtigung von /var/www/mailtrain/ .

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

Und installieren Sie die erforderlichen Knotenpakete.

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

Kopieren Sie die systemd-Service-Unit-Datei nach /etc/systemd/system/ Verzeichnis.

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

Öffnen Sie diese Datei.

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

Weil wir Mailtrain nach /var/www/mailtrain/ heruntergeladen haben Verzeichnis, ändern Sie also das Arbeitsverzeichnis von /opt/mailtrain nach /var/www/mailtrain . Speichern und schließen Sie diese Datei. Starten Sie dann mailtrain.service .

sudo systemctl start mailtrain.service

Autostart beim Systemstart aktivieren.

sudo systemctl enable mailtrain.service

Überprüfen Sie seinen Status. Stellen Sie sicher, dass es läuft. Wenn die Ausgabe aktiviert (automatischer Neustart) anzeigt, warten Sie einfach einen Moment, bis Mailtrain gestartet wird.

sudo systemctl status mailtrain.service

Jetzt, da Mailtrain ausgeführt wird, können Sie über Port 3000 auf die Mailtrain-Weboberfläche zugreifen.

Ihr-Server-IP:3000

Reverse Proxy einrichten und HTTPS aktivieren

Bevor Sie das Mailtrain-Webinterface verwenden, lassen Sie es uns hinter Nginx platzieren und dann HTTPS aktivieren. Installieren Sie den Nginx-Webserver unter Ubuntu 16.04 mit:

sudo apt install nginx

Nun können Sie das Beispiel mailtrain-nginx.conf kopieren Datei nach /etc/nginx/conf.d/ Verzeichnis.

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

Öffnen Sie diese Datei.

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

Suchen Sie die folgende Zeile.

Servername mailtrain.org www.mailtrain.org;

Ändern Sie den Wert von server_name Parameter zu Ihrem eigenen Domainnamen wie newsletter.your-domain.com . Vergessen Sie nicht, einen A-Eintrag für diese Subdomain zu erstellen.

Servername newsletter.linuxbabe.com;

Speichern und schließen Sie die Datei. Testen Sie dann die Nginx-Konfigurationen.

sudo nginx -t

Wenn der Test erfolgreich ist, laden Sie Nginx neu, damit die Änderungen wirksam werden.

sudo systemctl reload nginx

Sie sollten jetzt über Ihre Subdomain auf die Mailtrain-Weboberfläche zugreifen können: newsletter.your-domain.com .

Bearbeiten Sie nun /var/www/mailtrain/config/production.toml Datei.

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

Im [www] Abschnitt, fügen Sie die folgenden zwei Zeilen hinzu, um anzugeben, dass sich Mailtrain hinter dem Nginx-Proxy befindet, und lassen Sie ihn nur an der lokalen Hostadresse lauschen.

host="127.0.0.1"proxy=true

Speichern und schließen Sie die Datei. Starten Sie dann Mailtrain neu, damit die Änderung wirksam wird.

sudo systemctl mailtrain neu starten

HTTPS mit Let’s Encrypt aktivieren

Installieren Sie den Let’s Encrypt-Client (certbot) auf Ihrem Ubuntu 16.04-Server.

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

Dann können Sie das Nginx-Plugin verwenden, um automatisch ein TLS-Zertifikat zu erhalten und zu installieren, indem Sie den folgenden Befehl ausführen.

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

Jetzt können Sie über Ihren Domainnamen und eine sichere HTTPS-Verbindung auf die Mailtrain-Weboberfläche zugreifen.

Melden Sie sich mit dem Benutzernamen admin an und Passwort test . Ändern Sie dann die E-Mail-Adresse und das Passwort Ihres Kontos. Gehen Sie zu settings Seite, um die Standardkonfigurationen zu ändern. Sie sollten die Dienstadresse von http://localhost:3000/ ändern zu Ihrer Subdomain (https://newsletter.your-domain.com ).

Hinweis:Das Admin-Konto ist ein leichtes Ziel für Hacker. Für beste Sicherheit wird empfohlen, dass Sie den Benutzernamen von admin ändern zu etwas anderem. Die Mailtrain-Weboberfläche bietet keine solche Option, aber Sie können den Benutzernamen in der MariaDB-Datenbank mit dem SQL-Befehl ändern.

In den Mailer Settings , können Sie SMTP verwenden, wenn Sie einen eigenen E-Mail-Server haben, oder Amazon SES verwenden. Tatsächlich können Sie auch andere SMTP-Relay-Dienste im SMTP verwenden Tab. Im folgenden Screenshot verwende ich meinen eigenen E-Mail-Server. E-Mails werden auf Port 587 mit STARTTLS-Verschlüsselung übermittelt.

Speichern Sie Ihre Einstellungen. Dann können Sie eine Liste erstellen, um die Funktionalitäten von Mailtrain zu testen.

Umgang mit Bounce-Nachrichten in Mailtrain

Früher oder später wird Ihre E-Mail-Liste Adressen enthalten, an die Sie keine E-Mails senden können. Wenn beispielsweise ein Abonnent, der eine Firmen-E-Mail-Adresse verwendet, das Unternehmen verlässt, wird diese E-Mail-Adresse gelöscht. Ihr E-Mail-Server erhält also eine Bounce-Nachricht, die besagt, dass die E-Mail nicht zugestellt werden kann.

Wenn Sie zum Senden von E-Mails einen SMTP-Relay-Dienst verwenden, werden diese Bounce-Nachrichten für Sie verarbeiten. Wenn Sie Ihren eigenen E-Mail-Server zum Senden von E-Mails verwenden, müssen Sie Bounce-Nachrichten in Mailtrain verarbeiten. Mailtrain bietet zwei Möglichkeiten zum Umgang mit unzustellbaren Nachrichten.

  • über VERP
  • über das Postfix-Protokoll

Ich persönlich verwende die VERP-Methode, weil sie in der E-Mail-Community weit verbreitet ist und auch, weil die zweite Methode eine hohe CPU-Auslastung auf meinem Server verursacht.

VERP-Bounce-Handhabung

Mit VERP (Variable Envelope Return Path) verwendet Ihr E-Mail-Listenmanager eindeutige Envelope-Adressen für jeden Abonnenten. Um VERP zu aktivieren, bearbeiten Sie production.toml Datei.

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

Wenn auf Ihrem Mailtrain-Host kein SMTP-Server läuft, fügen Sie den folgenden Text hinzu.

[verp]enabled=trueport=25disablesenderheader=true

Wenn auf Ihrem Mailtrain-Server ein SMTP-Server wie Postfix ausgeführt wird, fügen Sie den folgenden Text hinzu. Der Bounce-Handling-Server lauscht auf 127.0.0.1:2525 .

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

Speichern und schließen Sie die Datei. Starten Sie dann Mailtrain neu, damit die Änderungen wirksam werden.

sudo systemctl mailtrain neu starten

Gehen Sie in der Mailtrain-Weboberfläche zu settings -> VERP Bounce Handlding . Aktivieren Sie Use VERP to catch bounces . Speichern Sie Ihre Einstellungen.

Als nächstes müssen Sie einen MX-Eintrag für den Server-Hostnamen erstellen (bounces.your-domain.com ), fügen Sie dann einen Eintrag für diesen Hostnamen hinzu, der auf Ihren Mailtrain-Host verweist, sodass Bounce-Nachrichten an Ihren Mailtrain-Host gesendet werden können. Jeder Abonnent in Ihrer Liste hat eine eindeutige Envelope-Adresse wie [email protected] .

Beachten Sie, dass, wenn Sie einen DMARC-Eintrag für Ihren Domänennamen bereitgestellt haben, die SPF-Ausrichtung auf den entspannten Modus eingestellt werden muss. Wenn der strenge Modus eingestellt ist, könnte Ihr Newsletter die DMARC-Prüfung nicht bestehen.

Wenn der Bounce-Handling-Server von Mailtrain auf Port 2525 von 127.0.0.1 und der Postfix-SMTP-Server auf Port 25 der öffentlichen IP-Adresse lauscht, müssen Sie eine Transportkarte einrichten, damit Postfix die Bounce-Nachricht an Mailtrain weiterleiten kann. Erstellen Sie die Transportzuordnungsdatei.

sudo nano /etc/postfix/transport

Fügen Sie dieser Datei die folgende Zeile hinzu. Dies weist Postfix an, E-Mails mit Adressen wie [email protected] weiterzuleiten an den Bounce-Handling-Server von Mailtrain.

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

Speichern und schließen Sie die Datei. Generieren Sie dann die Indexdatei.

sudo postmap /etc/postfix/transport

Postfix-Hauptkonfigurationsdatei bearbeiten.

sudo nano /etc/postfix/main.cf

Fügen Sie der Datei die folgende Zeile hinzu.

transport_maps =hash:/etc/postfix/transport

Speichern und schließen Sie die Datei. Starten Sie dann Postfix neu, damit die Änderung wirksam wird.

sudo systemctl reset postfix

Cron-Job zum automatischen Bereinigen von nicht abonnierten E-Mail-Adressen

Sie können abgemeldete E-Mail-Adressen im webbasierten Admin-Panel von Mailtrain manuell löschen, aber es ist viel effizienter, sie mit MySQL/MariaDB-Befehlen zu löschen, dann erstellen Sie einfach einen Cron-Job, um diese Aufgabe zu automatisieren.

Melden Sie sich zuerst beim MySQL/MariaDB-Datenbankserver an.

sudo mysql -u root

Verbinden Sie sich dann mit der Mailtrain-Datenbank.

mailtrain verwenden;

Die Informationen der Abonnenten werden im subscription gespeichert Tische. Wenn Sie mehrere Mailinglisten haben, dann haben Sie mehrere subscription Tische. Sie können alle diese Tabellen mit dem folgenden SQL-Befehl auflisten.

zeige Tabellen wie 'subscription%';

Ausgabe auf meinem Server.

+-------------------------------------+| Tables_in_mailtrain (Abonnement %) |+------------------------------------+| Abonnement || Abonnement__1 || Abonnement__2 |+-------------------------------------+

Die erste Tabelle ist eine leere Tabelle. Ich habe zwei Listen in Mailtrain. Sie werden in subscription__1 gespeichert und subscription__2 Tisch. Bei abonnierten E-Mail-Adressen ist der Statuscode auf 1 gesetzt . Abgemeldete E-Mail-Adressen haben den Statuscode auf 2 gesetzt . Um also abgemeldete E-Mail-Adressen zu löschen, können Sie die folgenden SQL-Befehle ausführen.

VON Abonnement LÖSCHEN__1 wobei Status ='2';VON Abonnement LÖSCHEN__2 Wo Status ='2';

Um den MySQL/MariaDB-Datenbankserver zu beenden, führen Sie

aus
Beenden;

Öffnen Sie nun die Crontab-Datei des Root-Benutzers.

sudo crontab -e

Fügen Sie die folgenden zwei Zeilen hinzu.

# Abgemeldete E-Mail-Adressen aus der Mailingliste löschen daily@daily /usr/bin/mysql -u root mailtrain -Bse "VON Abonnement LÖSCHEN__1 where status ='2';FROM Abonnement LÖSCHEN__2 where status ='2';" 

Speichern und schließen Sie die Datei. Und fertig.

Umgang mit böswilliger Anmeldung

Es gibt Leute, die nichts zu tun haben, außer eine gefälschte E-Mail-Adresse zu verwenden, um sich für Ihre E-Mail-Liste anzumelden, sodass die Anmeldebestätigungs-E-Mail an eine gefälschte E-Mail-Adresse gesendet wird und Sie möglicherweise einen Bericht über eine nicht zugestellte E-Mail in Ihrem Posteingang erhalten. P>

Sie können Ihren Webmailer wie Roundcube verwenden, um einen Filter zu erstellen, der diese Art von E-Mail-Nachricht automatisch löscht. Im folgenden Screenshot sehen Sie, dass ich einen Filter erstellt habe, der automatisch eine Nachricht löscht, wenn

  • Der Betreff enthält „Nicht zugestellte E-Mail an Absender zurückgesendet“
  • Der Bericht über nicht zugestellte Nachrichten wird an meine Adresse gesendet.
  • Der Textkörper enthält „Bitte Abonnement bestätigen“. (Weil die Anmeldebestätigungs-E-Mail diesen Satz enthält.)


Ubuntu
  1. Installieren Sie den SSH-Server Ubuntu 22.04

  2. So installieren Sie MariaDB unter Ubuntu 18.04

  3. So installieren Sie MariaDB unter Ubuntu 20.04

  4. Installieren Sie MariaDB 10.1 Stable auf Ubuntu 14.04

  5. So installieren Sie MariaDB unter Ubuntu 22.04

So installieren Sie Plex Media Server auf Ubuntu 16.04 Server/Desktop

Installieren Sie die selbstgehostete Mailtrain-Newsletter-App auf dem Ubuntu 16.04-Server

Installieren Sie Mailtrain v1.24 auf Ubuntu 20.04 Server ohne Docker

Installieren Sie OpenLiteSpeed, MariaDB, PHP8.0 auf Ubuntu 20.04/18.04 Server

So installieren Sie MariaDB unter Ubuntu 16.04

So installieren Sie EteSync Server auf Ubuntu 20.04 LTS