Installation Mailtrain · 11 min read · Sep 29, 2025

Comment installer l'application de newsletter Mailtrain sur CentOS 7

Mailtrain est une application de newsletter open source auto-hébergée écrite en Node.js. Elle utilise une bibliothèque Node.js très populaire, Nodemailer, pour envoyer des e-mails. Elle offre une automatisation et des analyses exceptionnelles sans aucun coût. Vous pouvez facilement créer ou importer une liste d’e-mails d’un million d’adresses e-mail en utilisant l’importation de fichiers CSV. Elle prend également en charge des champs et des formulaires personnalisés. Elle fournit une automatisation via des déclencheurs, qui peuvent envoyer des messages spécifiques à des utilisateurs spécifiques lorsque l’action est déclenchée. Vous pouvez utiliser n’importe quel fournisseur de messagerie pour envoyer la newsletter qui prend en charge le protocole SMTP, ainsi que le support pour Amazon SES, ZoneMTA, SendGrid et Mailgun, etc. Elle fournit plusieurs éditeurs WYSIWYG pour créer de beaux modèles pour les newsletters.

Dans ce tutoriel, nous allons installer Mailtrain avec toutes les dépendances requises sur CentOS 7. Nous allons également configurer Nginx en tant que proxy inverse pour servir l’application sur le port HTTP standard.

Exigences

Mailtrain nécessite au moins 1 Go de RAM. Toutes les dépendances requises seront installées tout au long du tutoriel. Vous aurez besoin d’une installation minimale de CentOS 7 avec un accès root. Si vous êtes connecté en tant qu’utilisateur non-root, vous pouvez exécuter sudo -i pour passer à l’utilisateur root.

Mettre à jour le système de base

Avant d’installer un package, il est recommandé de mettre à jour les packages et le dépôt en utilisant la commande suivante.

yum -y update

Installer Node.js

Node.js est requis par Mailtrain car il est construit en utilisant Nodemailer. Node.js est un environnement d’exécution JavaScript très populaire et Nodemailer est un module pour les applications Node.js pour envoyer des e-mails.

Ajoutez le dépôt Node.js 8.x :

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

Installez Node.js.

yum -y install nodejs

Installer MariaDB

Pour stocker la base de données Mailtrain, nous devrons installer MariaDB. MariaDB est un fork de MySQL. Installez le dépôt MariaDB dans votre système.

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

Ajoutez les lignes suivantes au fichier.

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

Maintenant, installez MariaDB en exécutant.

yum -y install mariadb-server mariadb

Pour démarrer MariaDB et l’activer pour qu’il démarre au démarrage, utilisez les commandes suivantes.

systemctl start mariadb  
systemctl enable mariadb

Maintenant, exécutez les commandes suivantes pour sécuriser votre installation MySQL ou MariaDB.

mysql_secure_installation

Cela exécutera un petit script qui vous demandera de fournir le mot de passe root pour MariaDB. Comme nous venons d’installer MariaDB, le mot de passe root n’est pas défini, appuyez simplement sur entrer pour continuer. Il vous demandera si vous souhaitez définir un mot de passe root pour votre installation MariaDB, choisissez y et définissez un mot de passe fort pour l’installation. Il vous demandera également de supprimer les bases de données de test et les utilisateurs anonymes. La plupart des questions sont explicites et vous devriez répondre oui ou y à toutes les questions.

Mailtrain nécessite deux utilisateurs de base de données pour fonctionner, un pour administrer la base de données Mailtrain et un autre pour générer les rapports de travail.

Pour créer une base de données, nous devrons d’abord nous connecter à la ligne de commande MySQL. Exécutez la commande suivante pour cela.

mysql -u root -p

Cela vous demandera le mot de passe, fournissez le mot de passe root de MySQL que vous avez défini précédemment. Maintenant, exécutez la requête suivante pour créer une nouvelle base de données pour votre installation Mailtrain.

CREATE DATABASE mailtrain CHARACTER SET utf8 COLLATE utf8_general_ci;

La requête ci-dessus créera une base de données nommée mailtrain. Assurez-vous d’utiliser un point-virgule à la fin de chaque requête, car la requête se termine toujours par un point-virgule. Une fois la base de données créée, vous pouvez créer un nouvel utilisateur et accorder toutes les permissions à l’utilisateur pour la base de données. Il n’est pas recommandé d’utiliser l’utilisateur root pour les bases de données. Pour créer un nouvel utilisateur de base de données, exécutez la requête suivante.

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

La requête ci-dessus créera un utilisateur avec le nom d’utilisateur mailtrain. Vous pouvez utiliser n’importe quel nom d’utilisateur préféré au lieu de mailtrain. Remplacez StrongPassword par un mot de passe fort. Maintenant, fournissez les privilèges appropriés à votre utilisateur de base de données sur la base de données que vous avez créée. Exécutez la commande suivante.

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

Maintenant, créez un nouvel utilisateur pour Mailtrain RO.

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

Fournissez un accès en lecture à l’utilisateur RO sur la base de données Mailtrain.

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

Maintenant, exécutez la commande suivante pour appliquer immédiatement les modifications sur les privilèges de la base de données.

FLUSH PRIVILEGES;

Quittez l’invite MySQL en utilisant la commande exit.

EXIT;

Installer les dépendances

Mailtrain nécessite quelques autres dépendances pour fonctionner. Installez les dépendances en exécutant :

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

ImageMagick est un outil pour traiter les images Bitmap et Git sera utilisé pour cloner le dépôt du projet de l’application. Redis est une application de cache de session très populaire et Python, bind-utils, gcc-c++ et make seront utilisés pour compiler les fichiers des applications.

Démarrez Redis et activez-le pour qu’il démarre automatiquement :

systemctl start redis  
systemctl enable redis

Télécharger et installer Mailtrain

Clonez les fichiers d’installation de Mailtrain en utilisant Git.

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

Créez un nouvel utilisateur Mailtrain pour exécuter le démon Mailtrain. Cela garantira que Mailtrain fonctionne dans un environnement isolé.

adduser mailtrain -d /opt/mailtrain

La commande ci-dessus créera un nouvel utilisateur mailtrain et /opt/mailtrain sera utilisé comme répertoire personnel.

Passez au répertoire Mailtrain en exécutant :

cd /opt/mailtrain

Avant de continuer, vous devez générer une chaîne aléatoire qui sera utilisée pour chiffrer les données de session. Pour générer la chaîne aléatoire, vous pouvez utiliser l’utilitaire pwgen.

Exécutez yum -y install pwgen pour installer l’utilitaire pwgen. Exécutez pwgen -1 64 pour générer une chaîne de 64 caractères. Vous verrez :

[root@liptan-pc mailtrain]# pwgen -1 64
Poy0aeLalie5uew7eenanootehohLudiuleac5aigaekah1amokumeeg5aiG2ied

Créez un nouveau fichier de configuration production.toml. La configuration fournie dans ce fichier remplace le fichier de configuration par défaut default.toml. Nous ne devrions pas modifier le fichier de configuration par défaut. Créez un nouveau fichier production.toml pour stocker la configuration de remplacement.

nano config/production.toml

Remplissez le fichier avec la configuration suivante.

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

La configuration ci-dessus permet à Mailtrain de fonctionner en tant qu’utilisateur mailtrain et à l’utilisateur Mailtrain Reports Worker de fonctionner en tant qu’utilisateur nobody. De plus, elle configure le serveur intégré pour écouter localhost sur le port 3000. Nous allons configurer Nginx en tant que proxy inverse afin que l’interface web de Mailtrain puisse être accessible via le port HTTP standard.

Remplacez RandomString dans secret= par la chaîne aléatoire générée ci-dessus. Définissez proxy sur true car nous exécuterons le serveur intégré de Mailtrain derrière le proxy Nginx.

Définissez le nom d’utilisateur, le mot de passe et le nom de la base de données de la base de données que vous avez créée pour stocker les données de Mailtrain.

Créez également un nouveau fichier pour stocker la configuration de production pour les rapports de travail.

nano workers/reports/config/production.toml

Remplissez le fichier avec la configuration suivante.

[log]
level="error"

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

Maintenant, téléchargez les dépendances Node.js requises et installez le logiciel :

npm install --production

Une fois l’application installée, vous pouvez immédiatement la démarrer en utilisant :

NODE_ENV=production npm start

Si le serveur fonctionne, vous devriez voir la sortie suivante.

[root@liptan-pc mailtrain]# NODE_ENV=production npm start

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

Mais au lieu de démarrer l’application directement, nous utiliserons un service systemd. Arrêtez l’exécution en appuyant sur ctrl + C.

Fournissez la propriété des fichiers à l’utilisateur Mailtrain et supprimez toutes les permissions sur config des autres utilisateurs non-root du système :

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

Configuration du service Systemd

Créez un nouveau fichier de service Systemd. Utiliser Systemd au lieu d’une commande directe pour exécuter le serveur garantira que le serveur démarre automatiquement en cas de défaillance et de redémarrage. Cela facilite la gestion du service.

nano /etc/systemd/system/mailtrain.service

Remplissez le fichier avec la configuration suivante.

[Unit]
Description=Serveur Mailtrain
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

Démarrez Mailtrain et activez-le pour qu’il démarre automatiquement au démarrage :

systemctl enable mailtrain  
systemctl start mailtrain

Pour vérifier l’état du service, exécutez :

systemctl status mailtrain

Vous devriez voir que le service fonctionne activement.

[root@liptan-pc ~]# systemctl status mailtrain
? mailtrain.service - Serveur Mailtrain
   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 Serveur Mailtrain.
Oct 09 11:15:40 liptan-pc systemd[1]: Starting Serveur Mailtrain...
Oct 09 11:15:44 liptan-pc mailtrain[18092]: info Using local auth

Configuration de Logrotate

Logrotate est un utilitaire très utile pour rafraîchir les journaux obsolètes. Lorsqu’un service fonctionne en continu, il génère une énorme quantité de journaux. Les fichiers contenant les journaux consomment beaucoup d’espace disque. Logrotate supprime périodiquement les anciens journaux afin que les entrées de journaux puissent être remplacées par de nouveaux journaux.

Créez un nouveau fichier de configuration logrotate :

nano /etc/logrotate.d/mailtrain

Remplissez le fichier avec la configuration suivante :

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

Configurer Nginx en tant que proxy inverse

Nous avons configuré l’interface web intégrée de Mailtrain pour écouter localhost sur le port 3000, car il est important d’exécuter un serveur web de production pour servir le site aux utilisateurs. Dans ce tutoriel, nous allons utiliser Nginx comme proxy inverse afin que l’application puisse être accessible via le port HTTP standard. Installez le serveur web Nginx :

yum -y install nginx

Créez un nouveau fichier de bloc de serveur pour le serveur virtuel Nginx :

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

Remplissez le fichier avec :

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

Redémarrez le serveur web Nginx et activez-le pour qu’il démarre automatiquement au démarrage :

systemctl restart nginx  
systemctl enable nginx

Configurer le pare-feu et SELinux

Si vous exécutez un pare-feu sur votre serveur, vous devrez configurer le pare-feu pour définir une exception pour le service HTTP. Autorisez le proxy inverse Nginx à se connecter depuis l’extérieur du réseau.

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

Si vous avez SELinux activé sur votre système, vous devrez ajouter quelques exceptions dans les politiques SELinux.

Pour vérifier si SELinux est activé, exécutez :

getenforce

Si vous avez SELinux activé, exécutez :

setsebool -P httpd_can_network_connect 1

Accéder à l’interface web

L’installation de Mailtrain est maintenant terminée. Vous pouvez maintenant accéder au serveur Mailtrain sur http://news.example.com. Vous verrez l’interface suivante.

Mailtrain

Cliquez sur le bouton de connexion et connectez-vous en utilisant le nom d’utilisateur admin et le mot de passe test.

Connexion Mailtrain

Parcourez la section Compte du tableau de bord et mettez à jour l’adresse e-mail et le mot de passe. Il est très important de mettre à jour le mot de passe dès que possible.

Créer un compte dans Mailtrain

Il est également important de mettre à jour les paramètres avant de pouvoir utiliser Mailtrain.

Paramètres Mailtrain

Mettez à jour l’URL du site et l’e-mail de l’administrateur. Vous pouvez également fournir l’ID de suivi Google Analytics pour suivre les insights via Google Analytics. Vous pouvez mettre du code HTML qui sera affiché sur la page d’accueil de votre serveur.

Paramètres par défaut de la campagne Mailtrain

Définissez les paramètres par défaut de la campagne, tels que votre nom d’expéditeur, l’adresse par défaut, le nom d’expéditeur par défaut, l’e-mail et l’URL, etc. Lors de l’envoi des e-mails, si ces options ne sont pas configurées, les paramètres par défaut seront utilisés.

Paramètres du Mailer

Enfin, la configuration la plus importante consiste à fournir les identifiants du serveur de messagerie. Vous pouvez utiliser n’importe quel serveur SMTP ou Amazon SES (Simple Email Service). Si vous utilisez SMTP, fournissez le nom d’hôte du serveur de messagerie, le port, le nom d’utilisateur et le mot de passe de votre serveur SMTP. Si vous utilisez Amazon SES, fournissez la clé API et d’autres identifiants.

Vous pouvez également configurer votre propre serveur SMTP. Suivez simplement l’un de ces guides :

  • Comment créer un serveur de messagerie entièrement fonctionnel avec Postal
  • Construire un serveur de messagerie complet sur CentOS 6 avec Postfix, Dovecot, PostgreSQL
  • Configuration d’un serveur de messagerie utilisant Exim4, Clamav, Dovecot, SpamAssassin et bien plus sur Debian

Vous avez maintenant un serveur Mailtrain entièrement fonctionnel installé sur votre serveur CentOS 7. Créez votre première liste et commencez à envoyer des newsletters aux abonnés. Vous pouvez créer un modèle interactif en utilisant l’éditeur WYSIWYG et envoyer les e-mails en utilisant les campagnes. Mailtrain fournit également des rapports sur les e-mails envoyés et ouverts. Vous pouvez utiliser l’onglet Automatisation pour créer des déclencheurs qui envoient des e-mails lorsqu’une action spécifique est effectuée. Vous pouvez également configurer le chiffrement GPG. Si une liste a un champ personnalisé pour une clé publique GPG définie, les abonnés peuvent télécharger leur clé publique GPG pour recevoir des messages chiffrés de la liste.

Share: X/Twitter LinkedIn

Recevez de nouveaux articles dans votre boîte de réception.

Aucun spam. Désabonnez-vous à tout moment.