GNU/Linux >> Tutoriels Linux >  >> Ubuntu

Installez l'application de newsletter auto-hébergée Mailtrain sur le serveur Ubuntu 16.04

Ce tutoriel vous montrera comment installer Mailtrain sur le serveur Ubuntu 16.04. Mailtrain est une application de newsletter auto-hébergée open source, une alternative aux fournisseurs de services de messagerie commerciaux comme Mailchimp. Vous pouvez utiliser Mailtrain pour envoyer des e-mails à vos abonnés via votre propre serveur de messagerie ou en utilisant n'importe quel service de relais SMTP (Mailjet, SendGrid, AmazonSES, Mailgun, etc.).

Mailtrain est publié sous les termes de la licence GPL v3.0, construit 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 la liste.
  • Campagne RSS :générez automatiquement la newsletter à partir du flux RSS et envoyez-la 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 individuels pour chaque lien.
  • Éditeurs de modèles d'e-mail avancés 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).

Prérequis pour l'installation de Mailtrain sur le serveur Ubuntu 16.04

Pour exécuter Mailtrain, vous avez besoin d'un serveur avec au moins 1 Go de RAM. Vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 100 $ sur DigitalOcean. (Pour les nouveaux utilisateurs uniquement). Si vous êtes déjà un utilisateur de DigitalOcean, vous pouvez cliquer sur ce lien spécial pour obtenir un crédit gratuit de 50 $ sur Vultr (pour les nouveaux utilisateurs uniquement). Une fois que vous avez un compte chez DigitalOcean ou Vultr, installez Ubuntu 16.04 sur votre serveur et suivez les instructions ci-dessous.

Vous devez également avoir un nom de domaine. J'ai enregistré mon nom de domaine auprès de NameCheap parce que le prix est bas et qu'ils offrent gratuitement une protection de la confidentialité whois.

Étape 1 :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 direct de MySQL. Il est développé par d'anciens membres de l'équipe MySQL qui craignent qu'Oracle ne transforme MySQL en un produit à source fermée. Alors installons le serveur de base de données MariaDB.

Entrez la commande suivante pour l'installer sur Ubuntu 16.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.

statut systemctl mysql

Exemple de sortie :

● mariadb.service - Serveur de base de données MariaDB 10.1.34 Chargé :chargé (/lib/systemd/system/mariadb.service ; activé ; préréglage du fournisseur :activé) Actif :actif (en cours d'exécution) depuis sam. 2018-09-08 11 :13:27 UTC ; Il y a 21 s Docs :man:mysqld(8) https://mariadb.com/kb/en/library/systemd/ PID principal :3473 (mysqld) :505) CGroup :/system.slice/mariadb.service └─3473 /usr/sbin/mysqld

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

sudo systemctl démarrer mysql

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

sudo systemctl activer mysql

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

sudo mysql_secure_installation

Lorsqu'il vous demande d'entrer le mot de passe root MariaDB, appuyez sur la touche Entrée car le mot de passe root n'est pas encore défini. Saisissez ensuite y pour définir le mot de passe root pour le 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.)

Étape 2 :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 de mot de passe root MariaDB.

sudo mysql -u racine

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'oubliez pas le point-virgule.)

créer une base de données mailtrain ;

Entrez ensuite la commande ci-dessous pour créer un utilisateur de base de données pour Mailtrain et accordez tous les privilèges de la base de données mailtrain à l'utilisateur. Remplacez mtuser et your-password avec votre nom d'utilisateur et votre mot de passe préférés.

accorder tous les privilèges sur mailtrain.* à mtuser@localhost identifié par '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 .

accorder la sélection sur mailtrain.* TO mt_readonly@localhost identifié par 'mt_readonly_password' ;

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

vider les privilèges ;quitter ;

Étape 3 :Installez Node.js

Mailtrain est basé sur Node.js, 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 16.04 afin d'exécuter Mailtrain. Mailtrain nécessite Node.js 7+. Ce didacticiel installera la version LTS actuelle de Node.js (V8.x) à partir du référentiel NodeSource.

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

Le nodejs contient le binaire npm (Node.js package manager), il n'est donc pas nécessaire de l'installer séparément. Pour vérifier votre version de Node.js et npm, exécutez

node -vnpm -v

Sortie :

Pour compiler et installer des addons natifs à partir de npm, vous devez également installer des outils de compilation :

sudo apt install -y build-essential

Étape 4 :Exécuter Mailtrain

Allez à /var/www/ et récupérez les fichiers Mailtrain de 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 .

mysql -u mtuser -p mailtrain  

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 /var/www/mailtrain/config/default.toml dossier. Il nous suffit d'ajouter les configurations suivantes.

user="mailtrain"group="mailtrain"[log]level="error"[www]secret="Remplacez ceci par des caractères aléatoires"[mysql]user="mtuser"password="mtuser_password"[queue] processus=5

Enregistrez et fermez le fichier. Créez ensuite le mailtrain l'utilisateur et le groupe sous lesquels le démon mailtrain doit s'exécuter. Notez que nous n'avons pas besoin de créer de 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 travailleur de rapport 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/ -Rsudo chmod o-rwx /var/www/mailtrain/config/

Et installez les packages de nœuds requis.

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

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

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

Ouvrez ce fichier.

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

Parce que nous avons téléchargé Mailtrain sur /var/www/mailtrain/ répertoire, donc changez le répertoire de travail de /opt/mailtrain vers /var/www/mailtrain . Enregistrez et fermez ce fichier. Puis lancez mailtrain.service .

sudo systemctl start mailtrain.service

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

sudo systemctl enable mailtrain.service

Vérifiez son état. Assurez-vous qu'il est en cours d'exécution. Si la sortie indique l'activation (redémarrage automatique), attendez quelques instants que Mailtrain démarre.

sudo systemctl status mailtrain.service

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

adresse-ip-de-votre-serveur :3000

Configuration du proxy inverse et activation du HTTPS

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

sudo apt installer nginx

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

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.

nom_serveur mailtrain.org www.mailtrain.org ;

Modifiez la valeur de server_name paramètre à votre propre nom de domaine comme newsletter.your-domain.com . N'oubliez pas de créer un enregistrement A pour ce sous-domaine.

nom_serveur newsletter.linuxbabe.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 recharger nginx

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

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

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

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

hôte="127.0.0.1"proxy=true

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

sudo systemctl redémarre mailtrain

Activer HTTPS avec Let's Encrypt

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

sudo apt install software-properties-commonsudo add-apt-repository ppa:certbot/certbotsudo apt updatesudo 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 votre-adresse-email -d newsletter.votre-domaine.com

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

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

Remarque :Le compte administrateur est une cible facile pour les pirates. Pour une meilleure sécurité, il est recommandé de changer le nom d'utilisateur de admin à autre chose. L'interface Web Mailtrain ne fournit pas une telle option, mais vous pouvez modifier le nom d'utilisateur dans la base de données MariaDB à l'aide de la commande SQL.

Dans les Mailer Settings , 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 le SMTP languette. 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.

Enregistrez vos paramètres. Ensuite, vous pouvez créer une liste pour tester les fonctionnalités de Mailtrain.

Comment gérer les messages de rebond dans Mailtrain

Tôt ou tard, votre liste de diffusion contiendra des adresses auxquelles vous ne pourrez pas envoyer de courriers électroniques. 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 de rebond pour vous. Si vous utilisez votre propre serveur de messagerie pour envoyer des e-mails, vous devez gérer les messages de rebond dans Mailtrain. Mailtrain propose deux façons de gérer les messages rejetés.

  • via VERP
  • via le journal Postfix

Personnellement, j'utilise la méthode VERP, car elle est largement utilisée dans la communauté des e-mails 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 production.toml fichier.

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

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

[verp]enabled=trueport=25disablesenderheader=true

Si votre serveur Mailtrain a un serveur SMTP comme 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 redémarre mailtrain

Dans l'interface Web de Mailtrain, accédez à Settings -> VERP Bounce Handlding . Cochez Use VERP to catch bounces . 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 ajoutez 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 aura une adresse d'enveloppe unique telle que [email protected] .

Notez que si vous avez déployé l'enregistrement DMARC pour votre nom de domaine, l'alignement SPF doit être défini sur le mode relâché. S'il est défini sur le mode strict, votre newsletter pourrait échouer à la vérification DMARC.

Si le serveur de gestion des rebonds de 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 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 comme [email protected] au serveur de gestion des rebonds Mailtrain.

rebonds.votre-domaine.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

Modifier le fichier de configuration principal de Postfix.

sudo nano /etc/postfix/main.cf

Ajoutez la ligne suivante au fichier.

transport_maps =hachage :/etc/postfix/transport

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

sudo systemctl redémarrer le suffixe

Cron Job 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 il vous suffit de créer 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 racine

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

utiliser mailtrain ;

Les informations des abonnés sont stockées dans le subscription les tables. Si vous avez plusieurs listes de diffusion, alors vous aurez plusieurs subscription les tables. Vous pouvez lister toutes ces tables en utilisant la commande SQL suivante.

afficher des tableaux comme 'subscription%' ;

Sortie sur mon serveur.

+--------------------------------------------------+| Tables_in_mailtrain (abonnement%) |+--------------------------------------------------+| abonnement || abonnement__1 || abonnement__2 |+------------------------------------------+

La première table est une table vide. J'ai deux listes dans Mailtrain. Ils sont stockés dans subscription__1 et subscription__2 table. Les adresses e-mail abonnées 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.

SUPPRIMER DE l'abonnement__1 où statut ='2';SUPPRIMER DE l'abonnement__2 où statut ='2';

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

quitter ;

Ouvrez maintenant le fichier crontab de l'utilisateur root.

sudo crontab -e

Ajoutez les deux lignes suivantes.

# Supprimer les adresses e-mail désabonnées de la liste de diffusion 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 vous avez terminé.

Traiter les inscriptions malveillantes

Il y a des gens qui n'ont rien d'autre à faire que d'utiliser une fausse adresse e-mail pour s'inscrire à votre liste de diffusion, donc l'e-mail de confirmation d'inscription sera envoyé à une fausse adresse e-mail et vous pourriez recevoir un rapport d'e-mail non livré dans votre boîte de réception.

Vous pouvez utiliser votre webmail tel roundcube pour créer un filtre, qui supprime automatiquement ce type de message électronique. Dans la capture d'écran suivante, vous pouvez voir que j'ai créé un filtre qui supprime automatiquement un message si

  • Le sujet contient "Courrier non livré renvoyé à l'expéditeur"
  • Le rapport de message non remis est envoyé à mon adresse.
  • Le corps contient "Veuillez confirmer l'abonnement". (Parce que l'e-mail de confirmation d'inscription contient cette phrase.)


Ubuntu
  1. Installer le serveur SSH Ubuntu 22.04

  2. Comment installer MariaDB sur Ubuntu 18.04

  3. Comment installer MariaDB sur Ubuntu 20.04

  4. Installez MariaDB 10.1 Stable sur Ubuntu 14.04

  5. Comment installer MariaDB sur Ubuntu 22.04

Comment installer Plex Media Server sur un serveur/bureau Ubuntu 16.04

Installez l'application de newsletter auto-hébergée Mailtrain sur le serveur Ubuntu 16.04

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

Installez OpenLiteSpeed, MariaDB, PHP8.0 sur le serveur Ubuntu 20.04/18.04

Comment installer MariaDB sur Ubuntu 16.04

Comment installer EteSync Server sur Ubuntu 20.04 LTS