Installation de Sympa sur Debian Jessie


17/03/2017 sympa debian mailing-list newsletter liste de diffusion

Contexte

Un de nos clients souhaite pouvoir envoyer des newsletters à ses membres et utiliser des listes de diffusion pour la communication entre les membres.

Ayant de précédentes expériences avec mailman, je me suis naturellement tourné vers celui-ci. Pour l’occasion, j’ai installé une première instance de mailman3 via mailman-bundler. Si l’installation se fait sans trop de soucis, les versions packagées avec mailman-bundler ne sont pas les plus récentes et contiennent des bugs (parfois déjà corrigés dans les versions supérieures) rendant quelques fonctionnalités inopérantes (comme la modération des messages) ou provoquant des comportements étranges (certaines modifications d’options de liste ne sont parfois pas pris en compte). Même si le service fonctionnait à peu près correctement, nous décidions de revenir en mailman dans sa version 2. Même si cela résolvait les problèmes de stabilité et les bugs, il nous manquait une fonctionnalité : l’abonnement à une liste sans confirmation (la confirmation par réponse à un email étant jugé trop complexe).

Pour revenir à Mailman 3, la documentation et les développeurs considèrent qu’il n’est pas encore tout à fait prêt. A l’instar de la suite KDE, il faudra attendre une version 3.2 ou plus pour pouvoir l’utiliser sereinement. En tous cas, la nouvelle interface est prometteuse !

Notre client souhaitant pouvoir envoyer des listes avec son nom de domaine et celui-ci n'étant pas forcément prêt à payer pour cette fonctionnalité, cela disqualifiait plusieurs solutions hébergées (SaaS).

Je me suis donc rabattu sur Sympa.

Installation

Pré-requis

  • Debian 8 Jessie, à jour.
  • Avoir un serveur postfix installé et configuré

Installation de sympa

Initialement, je voulais utiliser Postgres comme base de données, il s’est avéré que l’installateur debian ou sympa échoue. De guerre lasse, je me suis rabattu sur MySQL qui de toutes façons est considéré comme une dépendance de Sympa et je suis passé par la configuration via db-config. Pour le serveur web, ayant déjà un apache2 sur ce serveur pour mailman, je suis resté sur cette configuration.

Avant toute chose, s’assurer que /etc/mailname correspond bien à votre DNS utilisé pour le mail. Sympa semble prendre cette valeur par défaut et semble ignorer une mise à jour de ce fichier postérieurement à son installation.

apt update
apt install sympa

A ce stade vous avez une première configuration de sympa avec MySQL initialisée pour vos données.

Ensuite, vérifier que les dépendances de Sympa sont bien à jour et complètes ; Installer les librairies dont vous avez besoin pour votre scénario.

sympa_wizard --check

Ensuite, vous pouvez soit éditer les fichiers de configuration /etc/sympa/sympa.conf et /etc/sympa/wwsympa.conf ou bien utiliser le script prévu à cet effet : sympa_wizard. Cela revient au même, le script prend en compte les valeurs du fichiers et complète le cas échéant avec vos nouvelles réponses. Ce sont surtout les premières questions qui sont importantes avec la définition des hôtes, url et surtout la définition des listmaster. Les emails définis comme listmaster pourront en effet administrer Sympa. Pensez également a bien activer le support de fastcgi pour éviter une erreur 500.

Ensuite, en m’inspirant des fichiers /etc/apache2/conf-available/sympa.conf /etc/apache2/conf-available/sympa.conf et /etc/apache2/conf-available/sympa-soap.conf fournis par Sympa, j’ai créé le fichier (simplifié) suivant dans /etc/apache2/sites-available/sympa.conf :

#
# Apache >> 2.4 configuration for Sympa
#

<IfModule mod_fcgid.c>
    Alias /static-sympa /var/lib/sympa/static_content
    <Directory /var/lib/sympa/static_content>
        Require all granted
    </Directory>

    ScriptAlias /wws /usr/lib/cgi-bin/sympa/wwsympa-wrapper.fcgi
    <Directory /usr/lib/cgi-bin/sympa>
        Require all granted
    </Directory>
</IfModule>

#
# Apache >> 2.4 configuration for Sympa (soap webservice)
#

<IfModule mod_fcgid.c>
    ScriptAlias /sympasoap /usr/lib/cgi-bin/sympa/sympa_soap_server-wrapper.fcgi
    <Directory /usr/lib/cgi-bin/sympa>
        Require all granted
    </Directory>
</IfModule>

<VirtualHost *>
    ServerName listes.domaine.fr
    ServerAdmin contact@cerenit.fr

    RewriteEngine On
    RewriteRule ^/$ /wws/lists [R=301,L]
</VirtualHost>

Puis, activation du site via :

a2ensite sympa
systemctl restart apache2

Ajustement de la configuration de Postfix

Dans /etc/postfix/master.cf, ajouter :

# Services Pour sympa
sympa   unix        -   n   n   -   -   pipe
    flags=R user=sympa argv=/usr/lib/sympa/bin/queue ${recipient}
sympabounce unix    -   n   n   -   -   pipe
    flags=R user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${recipient}

Dans /etc/postfix/main.cf, ajouter :

#
## SYMPA
#

# Tranport vers les services sympa*
transport_maps = regexp:/etc/postfix/sympa_transport.cf
local_recipient_maps = regexp:/etc/postfix/sympa_transport.cf

# Un seul envoi/destinataire envoyé aux services sympa* à la fois
sympa_destination_recipient_limit = 1
sympabounce_destination_recipient_limit = 1

Et dans /etc/postfix/sympa_transport.cf :

/^.*-owner\@listes\.domaine\.fr$/ sympabounce:
/^.*\@listes\.domaine\.fr$/       sympa:

Il ne nous reste plus qu'à redémarrer Postfix et Sympa pour s’assurer que nos modifications ont bien été prises en compte :

systemctl restart postfix sympa

Première utilisation

Il ne vous reste plus qu'à aller sur http://listes.domaine.fr/wws/ et vous devriez avoir l’interface de Sympa.

Cliquer alors sur “1ère connection”, rentrer un des emails de listmaster pour obtenir votre mot de passe et pouvoir administrer Sympa en fonction de vos besoins.

Le Blog

Nous partageons ici notre veille et nos réflexions

Article(s) lié(s)

Nuage de tags

docker kubernetes traefik elasticsearch kafka postgres ansible influxdb grafana python timeseries aws sécurité redis tick cloud mysql ovh cassandra helm chronograf swarm terraform test docker-compose hashicorp ksql log machine-learning microservice résilience serverless spark timescaledb angularjs api architecture cncf confluent container git graphql javascript opensource rancher service-mesh stream telegraf warp10 windows arm bilan csp cérénit devops dns documentation elastic flux gcp hpkp iac ingress java jenkins kafka-streams kapacitor kibana lambda lean licence maintenance microsoft mobile monitoring nginx npm optimisation orientdb perspective prometheus ptsm redhat rest rethinkdb reverse-proxy rook s3 sauvegarde sql ssh agile apm automatisation azure bash big-data cert-manager certificat cli cluster containerd continous-delivery continous-integration cookie dashboard diff fluxlang framework gdpr gitlab grav hsts https hypriot hébergement influxace istio json k3s kubedb lets-encrypt linux load-balancer meetup mongodb operator php pip pipeline postgresql reaper replication rpi rsyslog scale scaleway schema secrets solr sre systemd vault virtualenv vscode vue.js wagtail yarn accessibilité akka alerte alibaba amazon-emr anonymisation anthos ara audit bastion beam beat bigdatahebdo bounded-context branche brigade browser buildkit cahier-des-charges cassandra-reaper cd cdc ceph certificats chart checklist chrome ci ci/cd cloud-init cloud-native cloud-storage clusterip cnab cockroachdb code codeurs-en-seine confluence consul continous-deployment coreos cors cqrs crash cron crontab csrf css curl d3.js daemonset data-pipelining data.gouv.fr datacenter dataviz date ddd debezium debian delta deployment desktop devoxx distributed-systems dive docker-app docker-hub docker-registry docker-swarm documentdb dokcer draft drop-in déploiement développement-du-site e-commerce ebs ec2 edge elassandra electron elk engineering ergonomie etcd event-sourcing faas facebook faisabilité falcor feature-policy feed filebeat firebase firefox fish flash flask fleet flink fluentd formation foundation frontend fsync fullstack github gke glacier glowroot google google-cloud-next gpu grid géospatial hacker hadoop haproxy hdfs header html html5 http http/3 hue ia iaac ibm immutable incident index influxcloud influxdata influxdays infrastructure-as-code ingénierie inspec jq jquery jwt k3d k8s k9s kotlin kubeadm kubecon kubectl laravel liste-de-diffusion loadbalancer logstash logstatsh loi maesh mailing-list management mariadb message metallb micro-service molecule mot-de-passe multi-cloud médecine métrique newsletter nodeport nomad nosql null object-storage observabilité opendata openebs openmetrics openshit openssh openweb over-engineering packaging pandas partiql password percona performance persistent-volume-claim pipenv pod portainer prediction prescience publicité push pyenv quasardb quay queue quic ram rambleed raml raspberrypi react recaptcha recherche redistimeseries registry reindex reinvent reliability responsive revocation revue-de-code rkt rolespec root rpo rto runc rwd scanner sdk search select serverless-architecture service-worker sha1 sharding shell shipyard société souveraineté-numérique spinnaker spécifications sri ssh-agent ssl statistique superset sympa syslog-ng test-unitaire tidb tiers timer timezone tls training travail tsl ubuntu unikernel unit ux vendredi vie-privée virtualbox virtualisation vitess vm vnc volume voxxeddays vpc web yubikey

Syndication

Restez informé(s) de notre actualité en vous abonnant au flux du blog (Atom)