Recherche de site Web

Installez Mailtrain v1.24 sur le serveur Ubuntu 20.04 sans Docker


Ce tutoriel vous montrera comment installer Mailtrain sur Ubuntu 20.04 sans Docker. 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 newsletters à vos abonnés par courrier électronique via votre propre serveur de messagerie ou en utilisant n'importe quel service de relais SMTP (Mailjet, SendGrid, AmazonSES, Mailgun, etc.).

Mise à jour : Mailtrain V2 est publié. Les nouveaux utilisateurs devraient utiliser la V2 au lieu de la V1.24 : Comment installer Mailtrain v2 sur le serveur Ubuntu 20.04

Mailtrain est publié sous les termes de la licence GPL v3.0, basée sur Node.js et MySQL/MariaDB. La dernière version est la v1.24.1, publiée le 28 septembre 2018. 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.
  • 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).
  • Il permet de reprendre les anciennes campagnes email (envoyer les anciennes campagnes aux nouveaux abonnés).

É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 que 26 $/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 le serveur de base de données MariaDB

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 l'installer sur Ubuntu 20.04.

sudo apt install mariadb-server mariadb-client

Une fois installé, le serveur MariaDB devrait être automatiquement démarré. Utilisez systemctl pour vérifier son état.

systemctl status mariadb

Exemple de sortie :

● mariadb.service - MariaDB 10.3.22 database server
     Loaded: loaded (/lib/systemd/system/mariadb.service; enabled; vendor preset: e>
     Active: active (running) since Mon 2020-04-20 15:31:14 HKT; 52s ago
       Docs: man:mysqld(8)
             https://mariadb.com/kb/en/library/systemd/
   Main PID: 1826628 (mysqld)
     Status: "Taking your SQL requests now..."
      Tasks: 30 (limit: 9451)
     Memory: 73.0M
     CGroup: /system.slice/mariadb.service
             └─1826628 /usr/sbin/mysqld

S'il ne fonctionne pas, démarrez-le avec cette commande :

sudo systemctl start mariadb

Pour permettre à MariaDB de démarrer automatiquement au démarrage du système, exécutez

sudo systemctl enable mariadb

Exécutez maintenant le script de sécurité post-installation.

sudo mysql_secure_installation

Lorsqu'il vous demande de saisir le mot de passe root MariaDB, appuyez sur la touche Entrée car le mot de passe root n'est pas encore défini. Entrez ensuite y pour définir le mot de passe root du serveur MariaDB.

Ensuite, vous pouvez appuyer sur Entrée pour répondre à toutes les questions restantes, ce qui supprimera l'utilisateur anonyme, désactivera la connexion root à distance et supprimera la base de données de test. Cette étape est une exigence de base pour la sécurité de la base de données MariaDB. (Notez que la lettre Y est en majuscule, ce qui signifie que c'est la réponse par défaut.)

mariadb --version

Sortir :

mariadb  Ver 15.1 Distrib 10.3.22-MariaDB, for debian-linux-gnu (x86_64) using readline 5.2

Étape 3 : Créer une base de données et un utilisateur pour Mailtrain

Nous devons maintenant nous connecter à la console MariaDB et créer une base de données et un utilisateur pour Mailtrain. Par défaut, le package MaraiDB sur Ubuntu utilise unix_socket pour authentifier la connexion de l'utilisateur, ce qui signifie essentiellement que vous pouvez utiliser le nom d'utilisateur et le mot de passe du système d'exploitation pour vous connecter à la console MariaDB. Vous pouvez donc exécuter la commande suivante pour vous connecter sans fournir le mot de passe root MariaDB.

sudo mariadb -u root

Créez une base de données pour Mailtrain à l'aide de la commande suivante. Je l'ai nommé mailtrain, 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 mtuser et votre-mot de passe par votre nom d'utilisateur et votre mot de passe préférés.

grant all privileges on mailtrain.* to mtuser@localhost identified by 'mtuser_password';

Ensuite, créez un utilisateur avec un accès en lecture seule à la base de données mailtrain. J'ai nommé cet utilisateur mt_readonly.

grant select on mailtrain.* TO mt_readonly@localhost identified by 'mt_readonly_password';

Videz la table des privilèges pour que les modifications prennent effet, puis quittez la console MariaDB.

flush privileges;

exit;

Étape 4 : Installer Node.js

Mailtrain est construit sur Node.js, qui est un environnement d'exécution JavaScript qui traduit le code JavaScript lisible par l'homme en code machine. Nous devons donc installer Node.js sur Ubuntu 20.04 pour exécuter Mailtrain. Mailtrain nécessite Node.js 7+. La dernière version de Node.js est la v14. Cependant, je ne recommande pas d’utiliser la dernière version, car elle n’est pas compatible avec Mailtrain v1.24. Pour une meilleure compatibilité, je recommande d'installer Node.js 8 depuis le Snap Store.

Si vous avez installé Node.js à partir du référentiel officiel APT, vous devez le désinstaller, car cela interférerait avec la version Snap de Node.js.

sudo apt remove nodejs

Ensuite, installez le démon snap.

sudo apt install snapd

Il existe plusieurs versions de Node.js dans le Snap Store, visibles avec :

snap info node

Sortir :

channels:
  latest/stable:    -                                                     
  latest/candidate: -                                                     
  latest/beta:      -                                                     
  latest/edge:      15.0.0-nightly2020042524a4e615 2020-04-25 (2668) 30MB classic
  14/stable:        14.0.0                         2020-04-23 (2647) 30MB classic
  14/candidate:     ↑                                                     
  14/beta:          ↑                                                     
  14/edge:          ↑                                                     
  13/stable:        13.13.0                        2020-04-14 (2635) 29MB classic
  13/candidate:     ↑                                                     
  13/beta:          ↑                                                     
  13/edge:          ↑                                                     
  12/stable:        12.16.2                        2020-04-23 (2644) 21MB classic
  12/candidate:     ↑                                                     
  12/beta:          ↑                                                     
  12/edge:          ↑                                                     
  11/stable:        11.15.0                        2019-06-26 (2336) 19MB classic
  11/candidate:     ↑                                                     
  11/beta:          ↑                                                     
  11/edge:          ↑                                                     
  10/stable:        10.20.1                        2020-04-23 (2638) 20MB classic
  10/candidate:     ↑                                                     
  10/beta:          ↑                                                     
  10/edge:          ↑                                                     
  9/stable:         9.11.2                         2018-12-14 (1407) 17MB classic
  9/candidate:      ↑                                                     
  9/beta:           ↑                                                     
  9/edge:           ↑                                                     
  8/stable:         8.16.0                         2019-06-24 (2310) 16MB classic
  8/candidate:      ↑                                                     
  8/beta:           ↑                                                     
  8/edge:           ↑                                                     
  6/stable:         6.17.1                         2019-06-24 (2311) 13MB classic
  6/candidate:      ↑                                                     
  6/beta:           ↑                                                     
  6/edge:           ↑                                                                    

Nous pouvons installer Node.js à partir du canal 8/stable.

sudo snap install node --classic --channel=8/stable

Pour vérifier votre version Node.js et npm, exécutez

node -v

npm -v

Sortir :

Remarque : Si c'est la première fois que vous installez un package Snap sur le serveur, vous devez vous déconnecter et vous reconnecter afin d'utiliser la version Snap de Ruby.

Pour compiler et installer des modules complémentaires natifs à partir de npm, vous devez également installer les outils de build :

sudo apt install -y build-essential

Étape 5 : Exécuter Mailtrain

Accédez à /var/www/ et récupérez les fichiers Mailtrain depuis Github.

cd /var/www/

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

Importez les données SQL initiales dans la base de données mailtrain à l'aide de la commande suivante. Vous devez entrer le mot de passe de mtuser.

mariadb -u mtuser -p mailtrain < /var/www/mailtrain/setup/sql/mailtrain.sql

Créez le fichier de configuration production.toml.

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

Dans ce fichier, vous pouvez ajouter des configurations qui remplacent les configurations par défaut dans le fichier /var/www/mailtrain/config/default.toml. Il nous suffit d'ajouter les configurations suivantes.

user="mailtrain"
group="mailtrain"
[log]
level="error"
[www]
secret="Replace this with some random characters"
[mysql]
user="mtuser"
password="mtuser_password"
[queue]
processes=5

Enregistrez et fermez le fichier. Créez ensuite l'utilisateur et le groupe mailtrain sous lesquels le démon mailtrain doit s'exécuter. Notez que nous n'avons pas besoin de créer un mot de passe pour cet utilisateur, nous créons donc un utilisateur système au lieu d'un utilisateur normal.

sudo adduser --system --group mailtrain

Créez un fichier de configuration pour le générateur de rapports.

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

Ajoutez les configurations suivantes. Ce générateur de rapports aura un accès en lecture seule à la base de données mailtrain.

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

Enregistrez et fermez le fichier. Modifiez ensuite l'autorisation de /var/www/mailtrain/.

sudo chown mailtrain:mailtrain /var/www/mailtrain/ -R

sudo chmod o-rwx /var/www/mailtrain/config/

Installez Python2.7 et créez un lien symbolique.

sudo apt install python2.7

sudo ln -s /usr/bin/python2.7 /usr/bin/python

Et installez les packages de nœuds requis.

cd /var/www/mailtrain

sudo -u mailtrain npm config set scripts-prepend-node-path true

sudo -u mailtrain npm install --no-progress --production --unsafe-perm=true

Copiez le fichier d'unité de service Mailtrain systemd dans le répertoire /etc/systemd/system/.

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

Ouvrez ce fichier.

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

Remplacez /opt/mailtrain par /var/www/mailtrain. Et remplacez /usr/bin/node par /snap/bin/node car nous utilisons la version Snap de Node.js.

Vous pouvez également commenter la ligne suivante. Parce que, avec la ligne suivante activée, si MySQL/MariaDB redémarre, alors le mailtrain.service redémarrera également, et si le serveur MySQL/MariaDB est en cours de mise à niveau, alors mailtrain.service s'arrêtera. Je pense qu'il n'est pas nécessaire d'exiger le mysql.service.

Requires=mysql.service

Enregistrez et fermez ce fichier. Ensuite, démarrez mailtrain.service.

sudo systemctl start mailtrain.service

Vérifiez son statut. Assurez-vous qu'il fonctionne.

systemctl status mailtrain.service

Sortir :

● mailtrain.service - Mailtrain server
     Loaded: loaded (/etc/systemd/system/mailtrain.service; disabled; vendor preset: enabled)
     Active: active (running) since Sun 2020-04-26 10:26:37 HKT; 11s ago
   Main PID: 3058360 (mailtrain)
      Tasks: 20 (limit: 9451)
     Memory: 228.6M
     CGroup: /system.slice/mailtrain.service
             ├─3058360 mailtrain
             └─3058396 /snap/node/2310/bin/node /var/www/mailtrain/services/sender.js

Activez le démarrage automatique au démarrage du système.

sudo systemctl enable mailtrain.service

Maintenant que Mailtrain est exécuté, vous pouvez accéder à l'interface Web de Mailtrain via le port 3000.

your-server-ip:3000

Étape 6 : configurer le proxy inverse et activer HTTPS

Avant d'utiliser l'interface Web Mailtrain, plaçons-la derrière Nginx, puis activons HTTPS. Installez le serveur Web Nginx sur Ubuntu 20.04 avec :

sudo apt install nginx

Vous pouvez maintenant copier l'exemple de fichier mailtrain-nginx.conf dans le répertoire /etc/nginx/conf.d/.

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

Ouvrez ce fichier.

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

Trouvez la ligne suivante.

server_name mailtrain.org www.mailtrain.org;

Remplacez la valeur du paramètre server_name par votre propre nom de domaine, tel que newsletter.your-domain.com. N'oubliez pas de créer un enregistrement DNS A pour ce sous-domaine.

server_name newsletter.linux-terminal.com;

Enregistrez et fermez le fichier. Testez ensuite les configurations Nginx.

sudo nginx -t

Si le test réussit, rechargez Nginx pour que les modifications prennent effet.

sudo systemctl reload nginx

Vous devriez maintenant pouvoir accéder à l'interface Web de Mailtrain via votre sous-domaine : newsletter.votre-domaine.com.

Modifiez maintenant le fichier /var/www/mailtrain/config/production.toml.

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

Dans la section [www], ajoutez les deux lignes suivantes pour indiquer que mailtrain est derrière le proxy Nginx et faites-lui écouter uniquement sur l'adresse de l'hôte local.

host="127.0.0.1"
proxy=true

Enregistrez et fermez le fichier. Redémarrez ensuite Mailtrain pour que la modification prenne effet.

sudo systemctl restart mailtrain

Étape 7 : Activez HTTPS avec Let’s Encrypt

Installez le client Let's Encrypt (certbot) sur votre serveur Ubuntu 20.04.

sudo apt install certbot python3-certbot-nginx

Ensuite, vous pouvez utiliser le plugin Nginx pour obtenir et installer automatiquement un certificat TLS en exécutant la commande suivante.

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

Vous pouvez désormais accéder à l'interface Web de Mailtrain via votre nom de domaine et une connexion HTTPS sécurisée.

La commande htop m'indique que mon serveur utilise environ 500 Mo de RAM. Si j'exécute Mailtrain avec Docker, cela représente environ 900 Mo.

Connectez-vous avec le nom d'utilisateur admin et le mot de passe test. Modifiez ensuite l'adresse e-mail et le mot de passe de votre compte. Accédez à la page paramètres pour modifier les configurations par défaut. Vous devez modifier l'adresse du service de http://localhost:3000/ vers votre sous-domaine (https://newsletter.your-domain.com).

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.

Comment activer 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 beaucoup d'abonnés aux e-mails (notez que cela augmentera l'utilisation de la mémoire d'environ 250 Mo).

sudo apt install redis

Une fois installé, Redis devrait être automatiquement démarré. Vous pouvez vérifier son statut avec :

systemctl status redis

Exemple 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 Sun 2020-04-26 11:02:03 HKT; 4min 23s ago
       Docs: http://redis.io/documentation,
             man:redis-server(1)
   Main PID: 3059455 (redis-server)
      Tasks: 4 (limit: 9451)
     Memory: 2.3M
     CGroup: /system.slice/redis-server.service
             └─3059455 /usr/bin/redis-server 127.0.0.1:6379

S'il ne fonctionne pas, vous pouvez le démarrer avec :

sudo systemctl start redis

Activer le démarrage automatique au démarrage :

sudo systemctl enable redis

Ensuite, modifiez le fichier de configuration Mailtrain.

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

Ajoutez les deux lignes suivantes à la fin du fichier pour activer Redis.

[redis]
enabled=true

Enregistrez et fermez le fichier. Redémarrez ensuite Mailtrain.

sudo systemctl restart mailtrain

Comment gérer les messages rebondis dans Mailtrain

Tôt ou tard, votre liste de diffusion contiendra des adresses auxquelles vous ne pourrez pas envoyer d’e-mails. Par exemple, lorsqu'un abonné qui utilise une adresse e-mail d'entreprise quitte l'entreprise, cette adresse e-mail sera supprimée. Ainsi, votre serveur de messagerie recevra un message de rebond indiquant que l'e-mail ne peut pas être livré.

Si vous utilisez un service de relais SMTP pour envoyer des e-mails, ils géreront les messages renvoyés pour vous. Si vous utilisez votre propre serveur de messagerie pour envoyer des e-mails, vous devez gérer les messages renvoyés dans Mailtrain. Mailtrain propose deux manières de gérer les messages renvoyés.

  • via VERP
  • via le journal Postfix

J'utilise personnellement la méthode VERP, car elle est largement utilisée dans la communauté de messagerie et aussi parce que la deuxième méthode entraîne une utilisation élevée du processeur sur mon serveur.

Gestion des rebonds VERP

Avec VERP (chemin de retour d'enveloppe variable), votre gestionnaire de liste de diffusion utilise des adresses d'enveloppe uniques pour chaque abonné. Pour activer VERP, modifiez le fichier production.toml.

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

Si votre hôte Mailtrain n'a pas de serveur SMTP en cours d'exécution, ajoutez le texte suivant.

[verp]
enabled=true
port=25
disablesenderheader=true

Si votre serveur Mailtrain dispose d'un serveur SMTP tel que Postfix en cours d'exécution, ajoutez le texte suivant. Le serveur de gestion des rebonds écoutera sur 127.0.0.1:2525.

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

Enregistrez et fermez le fichier. Redémarrez ensuite Mailtrain pour que les modifications prennent effet.

sudo systemctl restart mailtrain

Dans l'interface Web de Mailtrain, accédez à Paramètres -> VERP Bounce Handlding. Cochez Utiliser VERP pour intercepter les rebonds. Enregistrez vos paramètres.

Ensuite, vous devez créer un enregistrement MX pour le nom d'hôte du serveur (bounces.your-domain.com), puis ajouter un enregistrement A pour ce nom d'hôte, pointant vers votre hôte Mailtrain, afin que les messages de rebond puissent être envoyés. à votre hôte Mailtrain. Chaque abonné de votre liste disposera d'une adresse d'enveloppe unique telle que [email .

Notez que si vous avez déployé l'enregistrement DMARC pour votre nom de domaine, l'alignement SPF doit être défini en mode détendu. Si elle est définie en mode strict, votre newsletter pourrait échouer à la vérification DMARC.

Si le serveur de gestion des rebonds Mailtrain écoute sur le port 2525 de 127.0.0.1 et que le serveur SMTP de Postfix écoute sur le port 25 de l'adresse IP publique, vous devez alors configurer la carte de transport afin que Postfix puisse relayer le message de rebond vers Mailtrain. Créez le fichier de carte de transport.

sudo nano /etc/postfix/transport

Ajoutez la ligne suivante à ce fichier. Cela indique à Postfix de relayer les e-mails avec une adresse telle que [email vers le serveur de gestion des rebonds Mailtrain.

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

Enregistrez et fermez le fichier. Générez ensuite le fichier d'index.

sudo postmap /etc/postfix/transport

Modifiez le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante au fichier.

transport_maps = hash:/etc/postfix/transport

Remarque : Si vous avez utilisé iRedMail pour configurer votre serveur de messagerie, le paramètre transport_maps a d'autres valeurs. Vous devez ajouter la valeur à la fin comme ci-dessous.

transport_maps =
     proxy:mysql:/etc/postfix/mysql/transport_maps_user.cf
     proxy:mysql:/etc/postfix/mysql/transport_maps_maillist.cf
     proxy:mysql:/etc/postfix/mysql/transport_maps_domain.cf
     hash:/etc/postfix/transport

Enregistrez et fermez le fichier. Redémarrez ensuite Postfix pour que la modification prenne effet.

sudo systemctl restart postfix

Gestion des messages renvoyés via le journal Postfix

Mailtrain est capable de détecter les messages renvoyés dans le journal de messagerie Postfix en recherchant les lignes contenant status=bouounced. Tout d'abord, vous devez activer le serveur de lecture des journaux Postfix. Modifiez le fichier production.toml.

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

Ajoutez le texte suivant.

[postfixbounce]
enabled=true

Enregistrez et fermez le fichier. Redémarrez ensuite Mailtrain pour que les modifications prennent effet.

sudo systemctl restart mailtrain

Le serveur de lecture des journaux Postfix écoute désormais sur 127.0.0.1:5699. Pour le laisser lire le journal Postfix, exécutez la commande suivante.

tail -F /var/log/mail.log | nc localhost 5699 -

Pour le faire fonctionner en arrière-plan, vous pouvez créer une unité de service systemd.

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

Ajoutez le texte suivant.

[Unit]
Description=Postfix bounce notifier
After=mailtrain.service

[Service]
ExecStart=/bin/sh -c '/usr/bin/tail -F /var/log/mail.log | nc localhost 5699 -'
Type=simple
Restart=always
RestartSec=10

[Install]
WantedBy=multi-user.target

Enregistrez et fermez le fichier. Démarrez ensuite ce service et activez le démarrage automatique au moment du démarrage.

sudo systemctl start bouncetail

sudo systemctl enable bouncetail

Assurez-vous de redémarrer le service rebond après avoir redémarré le service mailtrain. J'ai trouvé que le service rebond entraîne une utilisation élevée du processeur sur mon serveur, je n'utilise donc pas cette méthode.

Mise à jour

Après avoir utilisé Mailtrain sur mon propre serveur pendant un certain temps, j'ai découvert qu'il existe d'autres raisons qui provoquent le rebond des e-mails. Les rebonds suivants sont des rebonds doux.

  • La boîte aux lettres du destinataire est pleine.
  • Votre adresse IP est sur une liste noire.
  • Le serveur de messagerie du destinataire est en panne ou hors ligne.

Il existe également un rebond dur, c'est-à-dire que l'adresse e-mail du destinataire n'existe pas. Par défaut, Mailtrain désabonne une adresse e-mail si un rebond est détecté, ce qui est acceptable pour un rebond dur, mais c'est une bonne idée d'autoriser plusieurs rebonds légers avant de désabonner la mauvaise adresse e-mail.

Pour contourner les listes noires de courrier électronique, veuillez lire l'article suivant.

  • Comment contourner la liste noire IP de Microsoft Outlook et d'autres listes noires

Si vous avez modifié les paramètres d'envoi SMTP dans Mailtrain, mais qu'il semble toujours utiliser les anciens paramètres, vous devriez essayer de redémarrer Mailtrain et Redis.

sudo systemctl restart mailtrain redis-server

Comment renvoyer des e-mails rejetés

Si vous pensez que certains e-mails renvoyés sont dus à des erreurs techniques sur votre serveur de messagerie, vous pouvez renvoyer les e-mails renvoyés dans Mailtrain.

Tout d'abord, vous devez connaître l'ID de la campagne, qui peut être trouvé dans l'URL de la campagne comme celle-ci : https://newsletter.linux-terminal.com/campaigns/view/818. L'identifiant de la campagne est 818.

Connectez-vous ensuite à la console MariaDB/MySQL :

sudo mysql -u root

Sélectionnez la base de données mailtrain.

use mailtrain;

Montrez le tableau de la campagne.

select * from campaign__818;

Exemple de sortie :

MariaDB [mailtrain]> select * from campaign__818;
+-----+------+---------+--------------+--------+---------------------------------------------+
| id  | list | segment | subscription | status | response                                    | 
+-----+------+---------+--------------+--------+---------------------------------------------+
|   1 |    1 |      10 |         6194 |      1 | 250 2.0.0 Ok: queued as DC5E4660FAE         |
|   2 |    1 |      10 |         6560 |      3 | Greeting never received                     |
|   3 |    1 |      10 |         6616 |      1 | 250 2.0.0 Ok: queued as 2CA9C660FB1         |
|   4 |    1 |      10 |         6750 |      3 | Greeting never received                     | 
|   5 |    1 |      10 |         6870 |      3 | Greeting never received                     |

Cela affichera le statut de chaque e-mail envoyé. Le statut 3 signifie que l'e-mail a été rejeté. Supprimez l'enregistrement rejeté de la table.

DELETE FROM campaign__818 WHERE status = 3;

Vous pouvez désormais cliquer sur le bouton Continuer sur la page de la campagne Mailtrain pour renvoyer les e-mails aux destinataires renvoyés.

Téléchargement d’images dans Mailtrain

Pour télécharger des images dans Mailtrain, vous devez installer le package imagemagick. Sans cela, Mailtrain pourrait générer des erreurs lorsque vous téléchargez des images.

sudo apt install imagemagick

Comment insérer un formulaire d'inscription sur votre site Web

Tout d’abord, vous devez activer le partage de ressources entre origines. Modifiez le fichier production.toml.

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

Ajoutez la ligne suivante dans le fichier pour ajouter votre site Web à la liste blanche.

[cors]
# Allow subscription widgets to be embedded
origins=['https://www.example.com']

Enregistrez et fermez le fichier. Redémarrez ensuite Mailtrain pour que la modification prenne effet.

sudo systemctl restart mailtrain

Ensuite, ajoutez le code suivant sur votre site Web pour afficher le formulaire d'inscription. Remplacez le texte de couleur rouge par le nom de domaine Mailtrain et votre propre identifiant de liste.

<div data-mailtrain-subscription-widget data-url="https://newsletter.example.com/subscription/8ljDT9KMGr/widget">
     <a href="https://newsletter.example.com/subscription/8ljDT9KMGr">Subscribe to our list</a>
</div>
<script src="https://newsletter.example.com/subscription/widget.js"></script>

Ajoutez ensuite des règles CSS personnalisées pour le rendre plus attrayant visuellement.

Comment créer des utilisateurs supplémentaires dans Mailtrain

Mailtrain v2 permettra à l'administrateur de créer plusieurs utilisateurs avec des autorisations utilisateur granulaires et un partage flexible. Mais avec la version actuelle v.1.24.1, vous pouvez créer des utilisateurs uniquement via la base de données. Connectez-vous à la console MySQL/MariaDB.

sudo mysql -u root

Utilisez la base de données mailtrain.

USE mailtrain;

Créez ensuite une entrée utilisateur avec la commande SQL suivante.

INSERT INTO `users` (`username`, `password`, `email`, `access_token`, `reset_token`, `reset_expire`, `created`) VALUES ('your-username',PASSWORD("your-password"),'[email ',NULL,NULL,NULL,NOW());

Quittez le serveur de base de données.

EXIT;

J'ai constaté que les utilisateurs créés de cette manière ne peuvent pas se connecter à l'interface Web Mailtrain du premier coup. Les utilisateurs doivent utiliser le lien « mot de passe oublié » sur la page de connexion pour réinitialiser leur mot de passe, la connexion devrait alors fonctionner. Notez également que tous les utilisateurs disposent d'autorisations administratives dans l'interface Web de Mailtrain.

Comment importer une liste de diffusion depuis MailChimp

Tout d'abord, vous devez accéder à l'onglet Audience de votre tableau de bord MailChimp. Cliquez sur le bouton Afficher les contacts pour afficher tous les abonnés. Cliquez ensuite sur le bouton Exporter l'audience pour exporter votre liste sous forme de fichier CSV.

Accédez ensuite au tableau de bord Mailtrain et sélectionnez votre liste de diffusion. Sélectionnez le bouton déroulant Liste des actions et cliquez sur Importer les abonnés.

Sur la page suivante, vous devrez télécharger le fichier CSV téléchargé depuis MailChimp.

Ensuite, vous devez faire correspondre les champs de MailChimp aux champs de votre liste de diffusion Mailtrain. Si certains champs de MailChimp n'existent pas dans la liste de diffusion Mailtrain, vous pouvez les créer dans le tableau de bord Mailtrain.

Veuillez noter que si vos champs MailChimp contiennent des boutons radio, vous devez également créer des boutons radio dans les champs Mailtrain. Cependant, vous devez segmenter votre liste MailChimp en fonction de la valeur du bouton radio, puis exporter ces segments vers différents fichiers CSV et les importer dans Mailtrain un segment à la fois. En effet, Mailtrain ne fournit pas de moyen de faire correspondre les valeurs de chaque bouton radio de MailChimp.

Tâche Cron pour nettoyer automatiquement les adresses e-mail désabonnées

Vous pouvez supprimer manuellement les adresses e-mail désabonnées dans le panneau d'administration Web de Mailtrain, mais il est beaucoup plus efficace de les supprimer à l'aide des commandes MySQL/MariaDB, puis de créer simplement une tâche Cron pour automatiser cette tâche.

Tout d’abord, connectez-vous au serveur de base de données MySQL/MariaDB.

sudo mysql -u root

Connectez-vous ensuite à la base de données mailtrain.

use mailtrain;

Les informations des abonnés sont stockées dans les tables abonnement. Si vous avez plusieurs listes de diffusion, alors vous aurez plusieurs tables de abonnement. Vous pouvez lister toutes ces tables à l'aide de la commande SQL suivante.

show tables like 'subscription%';

Sortie sur mon serveur.

+-------------------------------------+
| Tables_in_mailtrain (subscription%) |
+-------------------------------------+
| subscription                        |
| subscription__1                     |
| subscription__2                     |
+-------------------------------------+

La première table est une table vide. J'ai deux listes dans Mailtrain. Ils sont stockés dans les tables subscription__1 et subscription__2. Les adresses e-mail auxquelles vous êtes abonné ont un code d'état défini sur 1. Les adresses e-mail désabonnées ont un code d'état défini sur 2. Ainsi, pour supprimer les adresses e-mail désabonnées, vous pouvez exécuter les commandes SQL suivantes.

DELETE FROM subscription__1 where status = '2';
DELETE FROM subscription__2 where status = '2';

Pour quitter le serveur de base de données MySQL/MariaDB, exécutez

exit;

Ouvrez maintenant le fichier crontab de l'utilisateur root.

sudo crontab -e

Ajoutez les deux lignes suivantes.

# Delete unsubscribed email addresses from mailing list daily
@daily /usr/bin/mysql -u root mailtrain -Bse "DELETE FROM subscription__1 where status = '2';DELETE FROM subscription__2 where status = '2';"

Enregistrez et fermez le fichier. Et tu as fini.

Comment exporter vos listes de diffusion dans Mailtrain

Il n'y a pas de bouton d'exportation dans le panneau d'administration de Mailtrain. Cependant, si vous avez installé phpMyAdmin sur le serveur, vous pouvez exporter vos listes de diffusion à partir de là. Sélectionnez la base de données mailtrain dans phpMyAdmin, puis sélectionnez la table qui stocke vos listes de diffusion. Dans mon cas, les tables subscription__1 et subscription__2 stockent les informations sur les abonnés.

Cliquez ensuite sur le bouton exporter pour enregistrer le tableau sous forme de fichier. Notez qu'il existe 2 boutons d'exportation. Vous devez cliquer sur le deuxième bouton d'exportation pour exporter l'intégralité du tableau. Le premier bouton d'exportation exportera uniquement les enregistrements actuellement visibles dans le tableau.

Ensuite, vous pouvez choisir le format de fichier du fichier d'exportation. Enfin, cliquez sur le bouton Go.

Comment masquer la page d'accueil de Mailtrain

Si vous ne souhaitez pas que les visiteurs voient votre page d'accueil Mailtrain, vous pouvez configurer une redirection permanente 301 pour rediriger les visiteurs vers la page d'accueil de votre site Web, en ajoutant le code suivant dans le fichier de configuration Nginx de Mailtrain.

location = / {
   return 301 http://www.your-domain.com;
}

Enregistrez et fermez le fichier. Rechargez ensuite Nginx pour que la modification prenne effet.

sudo systemctl reload nginx

Vous devez vous souvenir de l'URL de connexion à Mailtrain.

https://newsletter.your-domain.com/users/login

Par défaut, le bouton de connexion vous redirigera vers la page d'accueil de Mailtrain, vous devez donc vous souvenir d'une autre URL.

https://newsletter.your-domain.com/lists

Cela vous permet de gérer vos listes et autres éléments dans le tableau de bord.

Comment insérer des options sur le formulaire d'inscription

Si vous souhaitez proposer au visiteur des options sur le formulaire d'inscription, vous devez créer des champs personnalisés. Accédez à votre liste et sélectionnez champs personnalisés dans le menu déroulant Actions de liste et créez un champ personnalisé.

Tout d’abord, vous devez créer un champ qui deviendra la question d’en-tête de la liste d’options. Dans Type de champ, vous pouvez sélectionner un bouton radio (pour un choix unique) ou des cases à cocher (pour des choix multiples). Dans Groupe, ne sélectionnez rien, car ce champ deviendra un groupe pour les options.

Créez ensuite un champ personnalisé pour chaque option. Vous devez choisir l'option pour une valeur de groupe dans Type de champ et choisir le nom de fichier personnalisé précédent dans Groupe.

Comment changer le type de champ

Par défaut, l'interface Web Mailtrain ne vous permet pas de modifier le type de fichier, mais vous pouvez le modifier dans la base de données Mailtrain. Par exemple, je dois changer un type de champ de cases à cocher en bouton radio.

Je recommande de sauvegarder la base de données avant de modifier quoi que ce soit dans la base de données. Vous pouvez exécuter la commande suivante pour sauvegarder la base de données mailtrain.

sudo mysqldump -u root mailtrain > mailtrain.sql

Connectez-vous ensuite au serveur de base de données MariaDB.

sudo mysql -u root

Utilisez la base de données mailtrain.

USE mailtrain;

Tous les champs personnalisés sont stockés dans la table custom_fields. Vous pouvez vérifier son contenu avec :

SELECT * FROM custom_fields;

Recherchez le champ personnalisé que vous souhaitez modifier et exécutez la commande SQL suivante pour modifier son type. Remplacez le numéro d'identification par le vôtre.

UPDATE custom_fields SET type = 'radio' Where id = 3;

Quittez le serveur de base de données.

EXIT;

Comment nettoyer votre liste de diffusion dans Mailtrain

Les abonnés non engagés ne vous rapporteront pas d’argent et, comme ils n’ouvrent pas votre courrier électronique, les fournisseurs de boîtes aux lettres réduiront la réputation de votre domaine. Pour vous assurer que votre futur e-mail arrivera dans la boîte de réception, vous devez supprimer les abonnés non engagés de votre liste de diffusion.

Vous pouvez créer un segment pour les personnes qui n’ont pas ouvert votre e-mail au cours des 60 derniers jours, puis supprimer leurs adresses e-mail. La règle pour ce segment est la suivante :

Exigence de RAM

Mailtrain peut utiliser beaucoup de RAM. Assurez-vous que votre serveur dispose d'au moins 1 Go de RAM libre. Par exemple, si l'utilisation actuelle de la RAM est de 4 Go, la RAM totale doit être d'au moins 5 Go. Si la RAM s'épuise, les e-mails dans Mailtrain pourraient être renvoyés.

Emballer

J'espère que ce tutoriel vous a aidé à installer Mailtrain sur Ubuntu 20.04. Vous pouvez accéder au wiki Mailtrain pour trouver plus d’informations sur l’utilisation de Mailtrain. 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.

Articles connexes