Installez l'application de newsletter auto-hébergée Mailtrain sur le serveur Ubuntu 16.04
Ce tutoriel vous montrera comment installer Mailtrain sur Ubuntu 22.04. Mailtrain est une application de newsletter open source auto-hébergée, une alternative aux fournisseurs de services de messagerie commerciaux comme Mailchimp. Vous pouvez utiliser Mailtrain pour envoyer des e-mails à vos abonnés de messagerie via votre propre serveur de messagerie ou en utilisant n'importe quel service d'envoi d'e-mails (Sendinblue, SendGrid, AmazonSES, Mailgun, etc.) via le relais SMTP.
Mailtrain est publié sous les termes de la licence GPL v3.0, basée sur Node.js et MySQL/MariaDB. Les fonctionnalités de Mailtrain sont les suivantes :
- Il vous permet de gérer facilement de grandes listes de diffusion (comme 1 million d'abonnés).
- Vous pouvez ajouter des abonnés manuellement, via l'API, ou importer à partir d'un fichier CSV.
- Il prend en charge les champs personnalisés (champs de texte, chiffres, listes déroulantes ou cases à cocher), les balises de fusion et les formulaires personnalisés.
- Segmentation de liste.
- Campagne RSS : générer automatiquement une newsletter à partir du flux RSS et l'envoyer aux abonnés.
- Les abonnés peuvent télécharger leurs clés publiques GPG et Mailtrain chiffrera la newsletter pour eux.
- Il vous permet de vérifier les statistiques de clics individuelles pour chaque lien.
- Éditeurs avancés de modèles de courrier électronique et éditeur de code HTML.
- Automatisation : envoyez des e-mails spécifiques lorsque l'utilisateur active votre déclencheur prédéfini.
- Vous pouvez créer une liste de diffusion ouverte (autoriser l'abonnement public) et une liste de diffusion fermée (les abonnés sont ajoutés à la liste par l'administrateur).
- Créez plusieurs utilisateurs avec des autorisations utilisateur granulaires et un partage flexible.
- Espaces de noms hiérarchiques pour les situations au niveau de l'entreprise
- Localiser l'interface utilisateur par utilisateur
- Exportation de liste
- Possibilité d'envoyer à plusieurs listes avec prévention des doubles livraisons.
- Configurations d'envoi multiples
- Limitation SMTP pour empêcher votre serveur d'envoyer un grand volume d'e-mails en peu de temps, ce qui améliorera la délivrabilité des e-mails.
- Si vous devez envoyer des e-mails le plus rapidement possible, configurez simplement Mailtrain pour qu'il utilise autant de processeurs d'expéditeur que vous le souhaitez, à condition que le serveur dispose de suffisamment de ressources CPU et RAM.
Étape 1 : Choisissez le bon fournisseur d'hébergement
L’auto-hébergement peut vous faire économiser beaucoup d’argent. Mailtrain est un logiciel gratuit et open source. Vous ne devez payer qu'environ 20 $/mois pour le VPS (serveur privé virtuel), qui peut exécuter un serveur de messagerie complet et la plateforme de marketing par e-mail Mailtrain. Il peut facilement gérer des millions d’abonnés. Ainsi, votre coût total est toujours de 26 $/mois, quel que soit le nombre d'abonnés dont vous disposez. Si vous possédez des millions d’abonnés sur MailChimp, le coût serait de plusieurs milliers de dollars par mois.
Ce n'est pas une tâche facile de trouver un fournisseur de VPS (Virtual Private Server) adapté à l'hébergement de courrier électronique et au marketing par courrier électronique. De nombreuses sociétés d'hébergement comme DigitalOcean bloquent le port 25. DigitalOcean ne débloquera pas le port 25, vous devrez donc configurer un relais SMTP pour contourner le blocage, ce qui peut vous coûter de l'argent supplémentaire. Si vous utilisez Vultr VPS, le port 25 est bloqué par défaut. Ils peuvent le débloquer si vous ouvrez un ticket d'assistance, mais ils peuvent le bloquer à nouveau à tout moment s'ils décident que votre activité d'envoi d'e-mails n'est pas autorisée. Vultr peut en fait le rebloquer si vous utilisez ses serveurs pour envoyer des newsletters.
Un autre problème est que les grands hébergeurs bien connus comme DigitalOcean ou Vultr sont abusés par les spammeurs. Souvent, l’adresse IP du serveur figure sur plusieurs listes noires. Vultr a certaines plages IP entières sur liste noire.
ScalaHosting est une très bonne option pour exécuter un serveur de messagerie car
- Ils ne bloquent pas le port 25.
- L’adresse IP ne figure sur aucune liste noire de courrier électronique. (Au moins, c'est vrai dans mon cas. J'ai choisi le centre de données de Dallas.) Vous ne voulez certainement pas figurer sur la redoutable liste noire IP de Microsoft Outlook ou sur la liste noire de SpamRats. Certaines listes noires bloquent une plage IP entière et vous n'avez aucun moyen de supprimer votre adresse IP de ce type de listes noires.
- Vous pouvez modifier l'enregistrement PTR pour améliorer la délivrabilité des e-mails.
- Ils vous permettent d'envoyer des newsletters à vos abonnés par courrier électronique sans aucune limite horaire ni limite quotidienne, quelle qu'elle soit. Notez que vous n'êtes pas autorisé à envoyer du spam, également appelé courrier électronique en masse non sollicité. Si le destinataire ne vous donne pas explicitement la permission d’envoyer des e-mails et que vous lui envoyez des e-mails, il s’agit d’un e-mail non sollicité.
Je recommande de suivre le tutoriel lié ci-dessous pour configurer correctement un serveur VPS Linux sur ScalaHosting. Utilisez le code promo linux-terminal2021 sur la page de paiement de ScalaHosting pour économiser 100 $ si vous choisissez de payer 12 mois d'avance.
- Comment créer un serveur VPS Linux sur ScalaHosting
Vous avez également besoin d'un nom de domaine. J'ai enregistré mon nom de domaine auprès de NameCheap parce que le prix est bas et qu'ils vous offrent une protection de la vie privée gratuite à vie.
Si vous n'avez pas encore votre propre serveur de messagerie, je vous recommande d'utiliser le programme gratuit iRedMail pour configurer rapidement votre propre serveur de messagerie avant d'installer Mailtrain, afin que vous n'ayez pas à dépenser d'argent pour un service de relais SMTP commercial.
Étape 2 : installer Docker sur le serveur Ubuntu 22.04
Le moyen le plus simple d’installer Mailtrain consiste à utiliser Docker. Tout d’abord, nous devons installer Docker et Docker Compose, dont la dernière version peut être installée à partir du référentiel officiel de Docker.
Créez un fichier de liste de sources pour le référentiel Docker.
echo "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.listImportez ensuite la clé PGP de Docker en exécutant la commande ci-dessous.
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -Étant donné que ce référentiel utilise une connexion HTTPS, nous devons également installer les packages apt-transport-https et ca-certificates.
sudo apt install apt-transport-https ca-certificatesEnsuite, mettez à jour l’index du package et installez la dernière version de Docker CE (Community Edition).
sudo apt update
sudo apt install -y docker-ce docker-compose
Une fois installé, le démon Docker devrait être automatiquement démarré. Vous pouvez le vérifier avec :
systemctl status dockerSortir :
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-07-11 09:42:28 SAST; 26s ago
TriggeredBy: ● docker.socket
Docs: https://docs.docker.com
Main PID: 387272 (dockerd)
Tasks: 8
Memory: 31.8M
CGroup: /system.slice/docker.service
└─387272 /usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock
S'il n'est pas en cours d'exécution, démarrez le démon avec cette commande :
sudo systemctl start dockerEt activez le démarrage automatique au démarrage du système :
sudo systemctl enable dockerVérifiez la version de Docker.
docker -vExemple de sortie :
Docker version 20.10.17, build 100c701Vérifiez la version de Docker Compose.
docker-compose --versionExemple de sortie :
docker-compose version 1.25.0, build unknownÉtape 3 : Installer le serveur de base de données MariaDB
Remarque : Si vous avez suivi mon didacticiel iRedMail pour configurer votre serveur de messagerie, MariaDB devrait déjà être opérationnelle, vous pouvez donc ignorer cette étape.
Les données de vos abonnés seront stockées dans une base de données. Mailtrain prend en charge MySQL et MariaDB. MariaDB est un remplacement immédiat de MySQL. Il est développé par d'anciens membres de l'équipe MySQL qui craignent qu'Oracle ne transforme MySQL en un produit fermé. Alors installons le serveur de base de données MariaDB.
Entrez la commande suivante pour installer MariaDB sur Ubuntu 20.04.
sudo apt install mariadb-server mariadb-clientUne fois installé, le serveur MariaDB devrait être automatiquement démarré. Utilisez systemctl pour vérifier son état.
systemctl status mariadbSortir :
● 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
S'il ne fonctionne pas, démarrez-le avec cette commande :
sudo systemctl start mariadbPour permettre à MariaDB de démarrer automatiquement au démarrage, exécutez
sudo systemctl enable mariadbPar défaut, MariaDB écoute sur localhost (127.0.0.1), mais plus tard, Mailtrain doit accéder à MariaDB depuis le réseau Docker (172.18.0.0/24), nous devons donc configurer MariaDB pour écouter sur toutes les interfaces réseau. Modifiez le fichier de configuration MariaDB.
sudo nano /etc/mysql/mariadb.conf.d/50-server.cnfDéfinissez bind-address sur 0.0.0.0.
bind-address = 0.0.0.0Enregistrez et fermez le fichier. Redémarrez ensuite MariaDB.
sudo systemctl restart mariadbAutorisez Docker à accéder à la base de données MariaDB.
sudo ufw insert 1 allow in from 172.17.0.0/24
sudo ufw insert 1 allow in from 172.18.0.0/24Étape 4 : Créer une base de données et un utilisateur pour Mailtrain
Exécutez la commande suivante pour vous connecter à la console MariaDB.
sudo mysql -u rootCréez une base de données pour Mailtrain à l'aide de la commande suivante. Je l'ai nommé mailtrainv2, mais vous pouvez utiliser le nom de votre choix. (N'omettez pas le point-virgule.)
create database mailtrain;Entrez ensuite la commande ci-dessous pour créer un utilisateur de base de données pour Mailtrain et accorder tous les privilèges de la base de données mailtrain à l'utilisateur. Remplacez mailtrain et mailtrain_password par votre nom d'utilisateur et votre mot de passe préférés.
grant all privileges on mailtrain.* to 'mailtrain'@'localhost' identified by 'mailtrain_password';
grant all privileges on mailtrain.* to 'mailtrain'@'%' identified by 'mailtrain_password';Videz la table des privilèges pour que les modifications prennent effet, puis quittez la console MariaDB.
flush privileges;
exit;Étape 5 : Installer MongoDB
MongoDB est un programme de base de données NoSQL orienté document. Exécutez la commande suivante pour l'installer.
sudo apt install mongodbDémarrez MongoDB.
sudo systemctl start mongodbActivez le démarrage automatique au moment du démarrage.
sudo systemctl enable mongodbVérifiez son statut :
systemctl status mongodbExemple de sortie :
mongodb.service - An object/document-oriented database
Loaded: loaded (/lib/systemd/system/mongodb.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-07-11 10:03:00 SAST; 1min 4s ago
Docs: man:mongod(1)
Main PID: 390040 (mongod)
Tasks: 23 (limit: 4565)
Memory: 44.5M
CGroup: /system.slice/mongodb.service
└─390040 /usr/bin/mongod --unixSocketPrefix=/run/mongodb --config /etc/mongodb.conf
Comme vous pouvez le voir, il est actif (en cours d’exécution).
Modifiez le fichier de configuration MongoDB.
sudo nano /etc/mongodb.confTrouver
bind_ip = 127.0.0.1Changez-le en
bind_ip = 0.0.0.0Enregistrez et fermez le fichier. Redémarrez ensuite MongoDB.
sudo systemctl restart mongodbÉtape 6 : Installer le cache Redis
Vous pouvez installer le serveur Redis pour le cache de session. Cela permettra à Mailtrain d'exécuter 5 processus au lieu du processus unique par défaut, ce qui accélérera la livraison des e-mails si vous avez de nombreux abonnés aux e-mails.
sudo apt install redis -yUne fois installé, Redis devrait être automatiquement démarré. Vous pouvez vérifier son statut avec :
systemctl status redisExemple de sortie :
● redis-server.service - Advanced key-value store
Loaded: loaded (/lib/systemd/system/redis-server.service; enabled; vendor preset: enabled)
Active: active (running) since Mon 2022-07-11 10:06:02 SAST; 3s ago
Docs: http://redis.io/documentation,
man:redis-server(1)
Process: 390794 ExecStart=/usr/bin/redis-server /etc/redis/redis.conf (code=exited, status=0/SUCCESS)
Main PID: 390796 (redis-server)
Tasks: 4 (limit: 4565)
Memory: 2.4M
CGroup: /system.slice/redis-server.service
└─390796 /usr/bin/redis-server 127.0.0.1:6379
S'il ne fonctionne pas, vous pouvez le démarrer avec :
sudo systemctl start redisActiver le démarrage automatique au démarrage :
sudo systemctl enable redisModifiez le fichier de configuration Redis.
sudo nano /etc/redis/redis.confTrouver
bind 127.0.0.1 ::1Commentez-le.
#bind 127.0.0.1 ::1Enregistrez et fermez le fichier. Redémarrez ensuite Redis.
sudo systemctl restart redisÉtape 7 : Exécuter Mailtrain avec Docker
Téléchargez les fichiers Mailtrain depuis le référentiel Github.
sudo apt install git
git clone https://github.com/Mailtrain-org/mailtrain.gitAccédez au répertoire mailtrain.
cd mailtrain
Sauvegardez le fichier docker-compose.yml.
cp docker-compose.yml docker-compose.yml.backupModifiez le fichier docker-compose.yml.
nano docker-compose.ymlRemplacez-le par ce qui suit.
version: '3'
services:
mailtrain:
image: mailtrain/mailtrain:latest
environment:
- ADMIN_PASSWORD=Secret_Password
- URL_BASE_TRUSTED=https://mailtrain.example.com
- URL_BASE_SANDBOX=https://sbox-mailtrain.example.com
- URL_BASE_PUBLIC=https://newsletter.example.com
- WWW_PROXY=true
- WWW_SECRET=GVuMGYAXF0cS3DwezNKUa2w
- MONGO_HOST=172.17.0.1
- REDIS_HOST=172.17.0.1
- MYSQL_HOST=172.17.0.1
- MYSQL_PORT=3306
- MYSQL_DATABASE=mailtrain
- MYSQL_USER=mailtrain
- MYSQL_PASSWORD=mailtrain_password
- WITH_ZONE_MTA=false
ports:
- "3000:3000"
- "3003:3003"
- "3004:3004"
volumes:
- mailtrain-files:/app/server/files
volumes:
mailtrain-files:
Démarrez ensuite les conteneurs définis dans le fichier docker-compose.yml.
sudo docker-compose up -dSi tout se passe bien, vous verrez un message comme ci-dessous.
Le réseau mailtrain_default sera créé et les conteneurs fonctionneront : mailtrain-latest, comme on peut le voir en exécutant les commandes suivantes :
sudo docker network ls
sudo docker psÉtape 8 : Configuration du proxy inverse
Nous pouvons utiliser le serveur Web Nginx ou Apache pour configurer le proxy inverse.
Nginx
Si vous utilisez iRedMail, vous devez choisir Nginx.
Installez le serveur Web Nginx.
sudo apt install nginxCréez 3 hôtes virtuels Nginx pour les 3 points de terminaison d'URL.
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.confLe contenu des 3 fichiers est le suivant :
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;
}
}
Enregistrez et fermez les fichiers. Testez ensuite les configurations Nginx.
sudo nginx -tSi le test réussit, rechargez Nginx.
sudo systemctl reload nginxApache
Installez le serveur Web Apache.
sudo apt install apache2Créez 3 hôtes virtuels Apache pour les 3 points de terminaison d'URL.
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.confLe contenu des 3 fichiers est le suivant :
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.linux-terminal.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.linux-terminal.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.linux-terminal.org.error
</VirtualHost>Enregistrez et fermez les fichiers. Vous devez activer 3 modules dans Apache.
sudo a2enmod proxy proxy_http headersActivez ensuite les 3 hôtes virtuels.
sudo a2ensite mailtrain.example.com.conf newsletter.example.com.conf sbox-mailtrain.example.com.confRedémarrez le serveur Web Apache.
sudo systemctl restart apache2Étape 9 : Activer HTTPS
Pour chiffrer le trafic HTTP lorsque vous visitez Mailtrain, nous pouvons activer HTTPS en installant un certificat TLS gratuit émis par Let's Encrypt. Exécutez la commande suivante pour installer le client Let's Encrypt (certbot) sur Ubuntu.
sudo apt install certbotSi vous utilisez le serveur Web Nginx, vous devez également installer le plugin Certbot Nginx.
sudo apt install python3-certbot-nginxExécutez ensuite les 3 commandes suivantes pour obtenir et installer le certificat TLS.
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email -d mailtrain.example.com
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email -d sbox.mailtrain.example.com
sudo certbot --nginx --agree-tos --redirect --hsts --staple-ocsp --email [email -d newsletter.example.comSi vous utilisez le serveur Web Apache, vous devez également installer le plugin Certbot Apache.
sudo apt install python3-certbot-apacheExécutez ensuite la commande suivante pour obtenir et installer le certificat TLS.
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email -d mailtrain.example.com
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email -d sbox.mailtrain.example.com
sudo certbot --apache --agree-tos --redirect --hsts --staple-ocsp --email [email -d newsletter.example.comOù :
--nginx: utilisez le plugin nginx.--apache: utilisez le plugin Apache.--agree-tos: accepter les conditions d'utilisation.--redirect: Forcer le HTTPS par redirection 301.--hsts: ajoutez l'en-tête Strict-Transport-Security à chaque réponse HTTP. Forcer le navigateur à toujours utiliser TLS pour le domaine. Se défend contre le décapage SSL/TLS.--staple-ocsp: active l'agrafage OCSP. Une réponse OCSP valide est agrafée au certificat proposé par le serveur pendant TLS.--email: votre adresse e-mail, qui est utilisée pour la récupération du compte et d'autres messages de notification importants.
Le certificat devrait maintenant être obtenu et automatiquement installé.
Étape 10 : Configuration de Mailtrain
Accédez à https://mailtrain.example.com. Connectez-vous avec le nom d'utilisateur admin et le mot de passe test.
Accédez ensuite à la page Administration -> Utilisateurs pour modifier l'adresse e-mail et le mot de passe de votre compte.
Accédez à la page Administration -> Paramètres globaux pour modifier les configurations par défaut. Vous devez modifier l'adresse du service de http://localhost:3000/ à votre sous-domaine (https://newsletter.example.com).
Ensuite, allez dans Administration -> envoyer les configurations pour configurer les paramètres SMTP afin que votre Mailtrain puisse envoyer des e-mails. Par défaut, Mailtrain est configuré pour utiliser ZoneMTA. Cliquez sur le bouton Modifier pour modifier le paramètre par défaut.
Dans les Paramètres du courrier, vous pouvez utiliser SMTP si vous disposez de votre propre serveur de messagerie ou si vous utilisez Amazon SES. En fait, vous pouvez également utiliser d'autres services de relais SMTP dans l'onglet SMTP. Dans la capture d'écran ci-dessous, j'utilise mon propre serveur de messagerie. Les e-mails seront soumis sur le port 587 avec le cryptage STARTTLS.
Si Mailtrain est installé sur votre serveur de messagerie, vous devez utiliser les paramètres SMTP suivants. Le nom d'hôte doit être 127.0.0.1 et le port doit être 25. Il n'est pas nécessaire d'activer le cryptage ou l'authentification lorsque vous parlez à localhost.
Enregistrez vos paramètres. Ensuite vous pouvez créer une liste pour tester les fonctionnalités de Mailtrain.
Gestion des utilisateurs et des rôles
Mailtrain v2 prend en charge plusieurs utilisateurs avec des autorisations utilisateur granulaires et un partage flexible. Vous pouvez créer des utilisateurs supplémentaires dans l'interface Web de Mailtrain. Par défaut, un utilisateur peut jouer 3 rôles.
- Maître global : il s'agit de l'utilisateur super administrateur.
- Administrateur de campagne
- Aucun
J'espère que ce tutoriel vous a aidé à installer Mailtrain sur Ubuntu 22.04 avec Docker. Comme toujours, si vous avez trouvé cet article utile, abonnez-vous à notre newsletter gratuite pour obtenir plus de trucs et astuces. Prends soin de toi.






