Héberger Listmonk : envoyer vos newsletters (alternative à Mailchimp)
Envoyer ses newsletters sans facture Mailchimp qui grimpe avec la liste. Listmonk est un gestionnaire de campagnes rapide et souverain. Voici comment l'héberger, SMTP compris.
Envoyer des newsletters ne devrait pas obliger une association, un créateur ou une petite équipe marketing à confier tous ses contacts à un SaaS coûteux. Entre les limites d’abonnés, la tarification qui augmente avec la croissance de la liste et la dépendance à une plateforme tierce, les solutions comme Mailchimp ou Brevo ne conviennent pas à tous les projets.
Listmonk constitue une alternative open source rapide et sobre. Développé en Go avec PostgreSQL, il centralise les abonnés, les listes et les campagnes sur une infrastructure que vous contrôlez. Hébergé sur un serveur français, il permet aussi de mieux maîtriser la localisation et le traitement des données personnelles.
Attention toutefois à une distinction essentielle : Listmonk orchestre les campagnes, mais ne remplace pas le serveur SMTP chargé de livrer les messages. Une installation réussie repose donc autant sur l’application que sur la qualité de l’infrastructure d’envoi.
Ce que Listmonk permet de gérer
Listmonk est conçu pour administrer de grandes listes sans mobiliser beaucoup de ressources. Son interface permet d’importer des abonnés, de les organiser dans plusieurs listes et de suivre leur statut : actif, désabonné ou bloqué.
Pour collecter de nouveaux contacts, vous pouvez publier des formulaires d’inscription et activer le double opt-in. L’abonné reçoit alors un message de confirmation avant d’être ajouté définitivement à la liste. Cette procédure réduit les inscriptions frauduleuses et fournit une preuve de consentement plus solide.
Les principales fonctions couvrent :
- la création de listes publiques ou privées ;
- l’import et l’export d’abonnés ;
- les formulaires d’inscription ;
- le double opt-in ;
- les modèles HTML réutilisables ;
- la rédaction et la programmation des campagnes ;
- la segmentation avancée par requêtes SQL ;
- le suivi des ouvertures, clics et erreurs ;
- la gestion automatique du désabonnement ;
- l’envoi de messages transactionnels via l’API.
La segmentation SQL est particulièrement intéressante pour les listes comportant des attributs personnalisés. Elle permet, par exemple, de cibler les abonnés selon leur langue, leur date d’inscription, leur type d’adhésion ou leurs préférences déclarées.
Listmonk ne remplace pas un serveur SMTP
Listmonk gère la logique des campagnes : sélection des destinataires, contenu, programmation, suivi et cadence d’envoi. La livraison réelle est confiée à un serveur SMTP configuré dans l’interface d’administration.
Pour quelques messages internes, un serveur SMTP classique peut suffire. Pour une newsletter envoyée à plusieurs milliers de contacts, il faut une infrastructure capable d’absorber ce volume tout en conservant une bonne réputation auprès des fournisseurs de messagerie.
Deux stratégies sont possibles :
- exploiter son propre serveur mail, par exemple avec Mailcow, à condition de maîtriser la configuration, la réputation IP, les files d’attente et le traitement des rejets ;
- utiliser un relais SMTP spécialisé dans l’envoi en volume, comme Amazon SES ou un autre prestataire transactionnel.
Auto-héberger Listmonk ne signifie donc pas nécessairement auto-héberger toute la chaîne email. Utiliser un relais SMTP peut réduire la charge opérationnelle sans abandonner la maîtrise des listes et du contenu.
La délivrabilité dépend principalement du SMTP, de la réputation de l’adresse IP, des enregistrements DNS et de la qualité de la liste. Listmonk ne peut pas compenser une mauvaise configuration SPF, DKIM ou DMARC.
Respecter le RGPD
Une adresse email associée à une personne constitue une donnée personnelle. L’auto-hébergement apporte davantage de contrôle, mais il vous rend également responsable de la collecte, de la conservation et de la suppression de ces informations.
Activez le double opt-in pour les listes marketing. Conservez uniquement les données nécessaires et indiquez clairement la finalité de l’inscription. Chaque newsletter doit proposer un lien de désabonnement fonctionnel, visible et immédiatement pris en compte.
N’achetez jamais de listes de contacts. En plus des problèmes de consentement, ces bases contiennent souvent des adresses anciennes, des pièges à spam et des destinataires qui signaleront vos messages. La réputation du domaine et du SMTP peut être dégradée dès la première campagne.
Prévoyez également une procédure permettant à un abonné d’accéder à ses données, de les corriger ou d’en demander la suppression.
Prérequis pour l’installation
Une instance Listmonk nécessite peu de ressources pour démarrer. Prévoyez :
- un VPS léger sous Linux ;
- Docker et Docker Compose (voir installer Docker sur un VPS) ;
- un nom de domaine ou sous-domaine ;
- un accès aux enregistrements DNS ;
- un compte SMTP autorisé à envoyer vos volumes ;
- des enregistrements SPF, DKIM et DMARC ;
- un reverse proxy pour publier l’interface en HTTPS.
Les VPS TalCloud peuvent accueillir ce type de déploiement sur des serveurs situés en France, avec stockage NVMe, protection Anti-DDoS Netrix et support humain, à partir de 4,99 € par mois. Vérifiez les conditions d’envoi de courriel avant de planifier une migration.
Déployer Listmonk avec Docker Compose
Créez un répertoire de travail contenant le fichier compose.yaml suivant :
services:
db:
image: postgres:16-alpine
restart: unless-stopped
environment:
POSTGRES_DB: listmonk
POSTGRES_USER: listmonk
POSTGRES_PASSWORD: changez_ce_mot_de_passe
volumes:
- listmonk_db:/var/lib/postgresql/data
healthcheck:
test: ["CMD-SHELL", "pg_isready -U listmonk -d listmonk"]
interval: 10s
timeout: 5s
retries: 5
listmonk:
image: listmonk/listmonk:latest
restart: unless-stopped
depends_on:
db:
condition: service_healthy
ports:
- "127.0.0.1:9000:9000"
volumes:
- ./config.toml:/listmonk/config.toml:ro
command: ["./listmonk", "--config", "/listmonk/config.toml"]
volumes:
listmonk_db:
Créez ensuite config.toml :
[app]
address = "0.0.0.0:9000"
[db]
host = "db"
port = 5432
user = "listmonk"
password = "changez_ce_mot_de_passe"
database = "listmonk"
ssl_mode = "disable"
max_open = 25
max_idle = 25
max_lifetime = "300s"
Utilisez un mot de passe long et différent de cet exemple dans les deux fichiers. Démarrez d’abord PostgreSQL :
docker compose up -d db
Initialisez la base de données avec la commande prévue par Listmonk :
docker compose run --rm listmonk ./listmonk --install
L’assistant demande une confirmation et permet de définir les identifiants du compte administrateur. Conservez-les dans un gestionnaire de mots de passe. Lancez ensuite l’application :
docker compose up -d
docker compose logs -f listmonk
Listmonk écoute uniquement sur 127.0.0.1:9000. Cette restriction évite d’exposer directement l’interface sur Internet avant la mise en place du reverse proxy.
Effectuer le premier accès administrateur
Depuis le serveur, vous pouvez vérifier que l’application répond :
curl -I http://127.0.0.1:9000
Connectez-vous ensuite avec le compte créé pendant l’installation. Commencez par définir le nom de l’organisation, l’adresse d’expédition et l’URL publique de l’instance.
Cette URL doit correspondre au domaine HTTPS final. Elle est utilisée pour générer les liens de confirmation, de suivi et de désabonnement.
Configurer et tester le SMTP
Dans les paramètres de Listmonk, ouvrez la section SMTP puis renseignez l’hôte, le port, le type de chiffrement, l’identifiant et le mot de passe fournis par votre relais.
Utilisez de préférence TLS sur le port recommandé par le fournisseur. Configurez une adresse d’expédition appartenant à un domaine que vous contrôlez, puis lancez le test intégré vers plusieurs boîtes de réception.
Vérifiez la réception chez différents fournisseurs et inspectez les en-têtes du message. Les contrôles SPF, DKIM et DMARC doivent réussir. Si le message arrive dans les courriers indésirables, ne lancez pas immédiatement une campagne massive : corrigez d’abord la configuration ou la réputation de l’envoi.
Créer une première newsletter
Créez une liste et activez le double opt-in. Personnalisez le message de confirmation afin que le destinataire comprenne précisément ce qu’il accepte de recevoir.
Publiez ensuite le formulaire d’inscription fourni par Listmonk ou intégrez-le à votre site. Testez tout le parcours avec une adresse réelle : soumission, réception de la confirmation, validation, ajout à la liste et désabonnement.
Préparez un modèle HTML simple, lisible sur mobile et léger. Ajoutez le contenu de la campagne, sélectionnez la liste ou le segment concerné, puis envoyez un aperçu. Contrôlez les liens, le nom d’expéditeur, l’objet et la présence du lien de désabonnement avant de programmer l’envoi.
Publier Listmonk derrière HTTPS
Placez Nginx, Caddy ou Traefik devant le port local 9000. Le reverse proxy doit terminer la connexion TLS et transmettre les requêtes vers http://127.0.0.1:9000.
N’exposez pas directement PostgreSQL. Seul le reverse proxy doit être accessible publiquement sur les ports HTTP et HTTPS, contrôlés par le pare-feu. Forcez la redirection vers HTTPS et transmettez correctement les en-têtes indiquant le protocole et l’adresse du visiteur.
Protégez l’administration avec un mot de passe robuste. Pour une équipe restreinte, une limitation par VPN, adresse IP ou couche d’authentification supplémentaire peut réduire davantage la surface d’attaque.
Améliorer la délivrabilité
Publiez un enregistrement SPF autorisant le serveur ou le relais utilisé. Activez la signature DKIM et ajoutez une politique DMARC, d’abord en observation si nécessaire, puis plus stricte après analyse des rapports.
Un domaine neuf ne doit pas envoyer brutalement des dizaines de milliers de messages. Réalisez un warm-up progressif, commencez par les contacts les plus engagés et augmentez le volume sur plusieurs jours ou semaines.
Supprimez les adresses en erreur permanente, surveillez les plaintes et évitez les objets trompeurs. Une liste plus petite, consentie et active offre généralement de meilleurs résultats qu’une base volumineuse et ancienne.
Sécuriser, sauvegarder et mettre à jour
Listmonk stocke des données personnelles dans PostgreSQL. Limitez les accès au serveur, installez régulièrement les correctifs du système et surveillez les journaux sans y conserver inutilement des données sensibles.
Sauvegardez la base avec pg_dump :
docker compose exec -T db pg_dump -U listmonk -d listmonk -Fc > listmonk-$(date +%F).dump
Copiez les sauvegardes vers un emplacement distinct, chiffrez-les et testez périodiquement leur restauration. Notre guide sur les sauvegardes chiffrées avec restic détaille l’automatisation. Une sauvegarde jamais restaurée reste une hypothèse.
Avant une mise à jour, consultez les changements de version et sauvegardez PostgreSQL. Récupérez ensuite l’image choisie et recréez le conteneur :
docker compose pull listmonk
docker compose up -d
docker compose logs --tail=100 listmonk
Évitez de dépendre indéfiniment du tag latest en production. Une version explicitement épinglée rend les déploiements plus prévisibles. Avec un SMTP fiable, une configuration DNS rigoureuse et une base d’abonnés consentants, Listmonk offre une plateforme de newsletters performante, souveraine et durable.