Mit Mailtrain Newsletter verwalten und steuern

mailtrain Für viele scheinen Newsletter eine veraltete Weise zu sein potentielle Kunden und Interessenten zu erreichen. Dennoch ist es sehr einfach damit Menschen zu erreichen und über HTML lassen sich auch ansprechende Newsletter erstellen, die alles andere als veraltet oder altmodisch sind. Ich wollte auch für euch die Möglichkeit schaffen, dass ihr eine Mail erhaltet, wenn ein neuer Beitrag online geht. Ich habe dann etwas auf GitHub herumgestöbert und bin schließlich mit Mailtrain fündig geworden. Wenn ihr wollt, könnt ihr euch direkt über diesen Link zum Newsletter anmelden. Mailtrain ist ein Applikation zum Erstellen, Verwalten und Konfigurieren von Newslettern. Laut Angaben der Seite können damit um die 500.000 Newsletter am Tag versendet werden, womit wohl die meisten Personen eine Weile beschäftigt sind, um so viele Abonennten zu erhalten.

Die Installation und Konfiguration von Mailtrain war nicht ganz so einfach und daher möchte ich euch hier eine Anleitung geben. Ich installiere das System auf einem Ubuntu Server 16.04 LTS. Möchtet ihr die Installation auf einem anderen System durchführen, müsst ihr bestimmte Links an euer System anpassen. Achtung: Auf der GitHub-Seite wird zwar auf install.sh-Skript verwiesen, das die Installation erleichtern soll, ich würde davon jedoch abraten, da mir persönlich damit 4 Stunden Wiederherstellungsarbeit bereitet wurden. Besser ist es die einzelnen Schritte zu verstehen. Zunächst bringen wir das System auf den aktuellen Stand und installieren alle Abhängigkeiten, die keine extra Aufmerksamkeit benötigen sollten (git, g++, imagemagick, redis). Weiterhin solltet ihr überprüfen ob euer Server folgende Ports nicht schon belegt hat und gegebenfalls diese in der folgenden Anleitung anpassen: 2525, 3000, 12080, 12081.

sudo apt update
sudo apt upgrade -y
sudo apt install git g++ imagemagick redis-server build-essential -y

Sowohl Mailtrain als auch eine weitere Applikation die Mailtrain zum Versenden von Nachrichten verwendet ZoneMTA, benötigen Node.js. Da vor kurzer Zeit die Version 8 den LTS (Long Term Support) erreicht hat, empfehle ich diese Version zu installieren. Am besten ihr installiert allgemein, wenn möglich, immer über den Paket Manager, da dieser euch automatisch mit Updates versorgt.

# add source destination and update via a script from nodejs
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
# install nodejs
sudo apt install -y nodejs

Kümmern wir uns zuerst um die Installation von ZoneMTA. Diese hat als weitere Abhängigkeit die MongoDB-Datenbank, die wir im Folgenden in der aktuellen Version 3.6 installieren.

# import public key
sudo apt-key adv --keyserver hkp://keyserver.ubuntu.com:80 --recv 2930ADAE8CAF5059EE73BB4B58712A2291FA4AD5
# create a list file for mongodb
echo "deb [ arch=amd64,arm64 ] https://repo.mongodb.org/apt/ubuntu xenial/mongodb-org/3.6 multiverse" | sudo tee /etc/apt/sources.list.d/mongodb-org-3.6.list
# update package managment database
sudo apt update
# install mongodb
sudo apt install mongodb-org -y

Anschließend erstellen wir für zone-mta einen eigenen Benutzer, geben diesem ein Passwort und erstellen für diesen ein Verzeichnis, indem wir ZoneMTA installieren können. Weiterhin laden wir direkt die Sourcen von GitHub in das entsprechende Verzeichnis.

sudo useradd -m zone-mta
sudo passwd zone-mta
# enter a password for zone-mta user
# create directory
sudo mkdir /opt/zone-mta
sudo chown zone-mta:zone-mta /opt/zone-mta
# login as zone-mta
su zone-mta
# switch to directory
cd /opt/zone-mta
# download sources
git clone https://github.com/zone-eu/zone-mta.git .

Nun erstellen wir die Konfigurationsdatei, installieren ZoneMTA und starten es schließlich.

cat >> config/production.json <<EOT
{
    "name": "Mailtrain",
    "user": "zone-mta",
    "group": "zone-mta",
    "queue": {
        "db": "/var/data/zone-mta/mailtrain"
    },
    "smtpInterfaces": {
        "feeder": {
            "enabled": true,
            "port": 2525,
            "processes": 2,
            "authentication": false
        }
    },
    "log": {
        "level": "info",
        "syslog": true
    },
    "plugins": {
        "core/email-bounce": false,
        "core/http-bounce": {
            "enabled": "main",
            "url": "http://localhost/webhooks/zone-mta"
        },
        "core/default-headers": {
            "enabled": ["receiver", "main", "sender"],
            "futureDate": false,
            "xOriginatingIP": false
        },
        "core/http-config": {
            "enabled": false,
        },
        "core/rcpt-mx": false
    },
    "pools": {
        "default": [{
            "address": "0.0.0.0",
            "name": "$HOSTNAME"
        }]
    },
    "zones": {
        "default": {
            "processes": 3,
            "connections": 5,
            "throttling": false,
            "pool": "default"
        },
        "transactional": {
            "processes": 1,
            "connections": 1,
            "pool": "default"
        }
    },
    "domainConfig": {
        "default": {
            "maxConnections": 4
        }
    }
}
EOT

npm install --production
npm start

Startet ZoneMTA ohne Fehler, können wir es mit Strg + C beenden und schließlich dem Autostart hinzufügen. Dazu wechseln wir zu einem Benutzer mit Adminrechten zurück, kopieren das Autostart-Skript, aktivieren es und starten es, damit wir nicht erst nach einem Neustart ZoneMTA gestartet haben.

# return to admin user
exit
# copy autostart skript
sudo cp /opt/zone-mta/setup/zone-mta.service /etc/systemd/system/
# enable service
sudo systemctl enable zone-mta.service
# start service
sudo systemctl start zone-mta.service

Nachdem wir ZoneMTA installiert haben, kümmern wir uns jetzt um die Konfiguration und Installation von Mailtrain. Zunächst benötigen wir einen MariaDB-Server, wenn nicht schon vorhanden und dort ein Datenbank und Datenbankbenutzer für Mailtrain. Das Passwort solltet ihr natürlich ändern. Hier solltet ihr im nachhinein dann auch noch dem root-Benutzer ebenfalls ein Passwort verpassen, damit kein Unbefugter in eurer Datenbank manipulieren kann.

sudo apt install mariadb-server -y
mariadb
CREATE USER 'mailtrain'@'localhost' IDENTIFIED BY 'secretpassword';
CREATE DATABASE mailtrain;
GRANT ALL PRIVILEGES ON mailtrain.* TO 'mailtrain'@'localhost' WITH GRANT OPTION;
FLUSH PRIVILEGES;
exit

Jetzt erstelle wir, wie bereits für Zone-MTA, einen eigenen Benutzer, um dort die Dateien herunterzuladen und anschließend die Installation von Mailtrain vorzunehmen. Es hat bestimmte Vorteile für unterschiedliche Dienste unterschiedliche Benutzer anzulegen. So erhält man eine gute Trennung von Diensten und stellt auch sicher, dass bestimmte Dienste nur ihre Daten bearbeiten können und nicht andere.

sudo useradd -m mailtrain
sudo passwd mailtrain
# enter a password for mailtrain user
# create directory
sudo mkdir /opt/mailtrain
sudo chown mailtrain:mailtrain /opt/mailtrain
# login as mailtrain
su mailtrain
# switch to directory
cd /opt/mailtrain
# download sources
git clone https://github.com/Mailtrain-org/mailtrain.git .
# copy config file
cp config/default.toml config/production.toml
# open config file
nano config/production.toml

Es sollte nun die Konfigurationdatei geöffnet sein, in der ihr ein paar Anpassungen vornehmen müsst. Unter dem Abschnitt [mysql] müsst ihr das Passwort des mailtrain-Datenbanknuterz eingeben. Weiterhin könnt ihr unter [redis] enabled auf true setzten und unter dem Punkt [www] könnt ihr den Port von mailtrain anpassen, falls ihr Port 3000 bereits in Verwendung habt. Nachdem wir die Einstellungen geändert haben, können wir mit Strg + X, Y und Enter die Datei speichern und schließlich die Installation anstoßen, sowie Mailtrain zum ersten Mal starten.

npm install --production
NODE_ENV=production npm start

Hat das alles geklappt, könnt ihr nun unter http://localhost:3000 (sofern ihr die Portnummer nicht geändert habt) Mailtrain erreichen. Als erstes solltet ihr euch dann über Sign in mit Username admin und Passwort test anmelden und unter admin -> Account den Username und Passwort ändern. Dannach beenden wir mit Strg + C Mailtrain und fügen es, wie bereits ZoneMTA, dem Autostart hinzu.

# return to admin user
exit
# copy autostart skript
sudo cp /opt/mailtrain/setup/mailtrain.service /etc/systemd/system/
# enable service
sudo systemctl enable mailtrain.service
# start service
sudo systemctl start mailtrain.service

Jetzt solltet ihr unter admin -> Settings eure Einstellungen noch vornehmen. Hauptsächlich sollte dazu unter Mailer Settings, die Einstellungen Hostname auf localhost, Port auf 2525 und Encryption auf Do not encryption gesetzt werden. Damit solltet ihr Mailtrain für die ersten Tests installiert und konfiguriert haben und könnt nun selbst mit den Möglichkeiten herumspielen. Ich habe beispielsweise in der Navigationsleiste unter Lists eine eigene Liste angelegt, dort meine eigene Mailadresse hinzugefügt. Ich habe dann unter Templates einfach mal einen Standard-Newsletter erstellt und schließlich unter Campaigns einen leeren Newsletter an die Liste versendet, die nur meine Mailadresse enthält. Ihr könnt auch einen Testbenutzer anlegen, an den ihr den Newsletter versendet bevor alle Abonennten diesen erhalten. Weiterhin ist es auch möglich einen RSS-Feed als Newsletter anzubieten. Da mein Blog bereits einen RSS-Feed anbietet, habe ich jetzt einfach mal für euch eine Newsletter-Liste erstellt, die euch immer per Mail über neue Blog-Eintrage informiert. Dazu müsst ihr einfach euch unter folgendem Link Link anmelden. Wie immer hoffe ich jetzt, dass euch der Beitrag geholfen hat. Solltet ihr noch Fragen oder Anregungen haben, dann könnt ihr mich jederzeit gerne kontaktieren. Und wenn ihr euch einfach zum Newsletter anmeldet, bekommt ihr immer mit, was ich gerade so treibe. Was nicht zu vergessen ist, dass ihr die Datenbanken und Konfigurationsdateien eurem Backup hinzufügt, denn es gibt nichts ärgerliches, als wenn die mühsellige Arbeit einfach weg ist.


Geschrieben von Christian Decker am 30.12.2017