meta données pour cette page
Une mailing-list avec sympa
Sympa est un gestionnaire de liste de diffusion open source. Il fournit des fonctionnalitées avancées avec une interface Web riche et sécurisée. C'est un projet toujours en développement bien que le projet est mature depuis longtemps.
Alternative : https://github.com/madroach/minimalist
Installation et configuration de l'application
On part du principe que nous sommes sous une Debian 11 avec une version de perl en 5.32. La partie postifx est installé dont la configuration est adapté pour des domaines virtuels (et non pas pour gérer un seul domaine).
- L'interface de gestion sera : https://listes.autarcie.org
- Le domaine de gestion des listes : @listes.autarcie.org
- On utilise une base de donnée SQLite
Pensons à ce que l'enregistrement MX soit présent pour utiliser le serveur mail qu'il faut.
Sympa
Ressources :
Commençon par son installation :
apt install sympa libapache2-mod-fcgid spawn-fcgi
Il se peut que l'installateur pose quelques questions préliminaires comme :
- Pour la sélection d'un service web : sélectionner celui qui est utilisé sur le serveur
- Concernant les accès root : répondre Non
- “Faut-il configurer la base de données de sympa avec dbconfig-common ?” : répondre oui
- On ne va pas en faire une très grosse utilisation donc on choisit le type de base : sqlite3
Voici la liste des dossiers à connaitre :
Dossier | Fonction |
---|---|
/etc/sympa/sympa/sympa.conf | Fichier de configuration |
/var/spool/sympa/ | Emplacement temporaire des mails. |
/var/lib/sympa/list_data/ | Données des listes |
/usr/lib/sympa/bin/ | Binaires de sympa |
Configuration
Voici la configuration recommendé :
# cat /etc/sympa/sympa/sympa.conf lang fr domain listes.autarcie.org listmaster contactAautarcie.org cookie `/usr/bin/head -n1 /etc/sympa/cookie` db_type SQLite db_name /etc/sympa/sympa/sympa.db static_content_path /usr/share/sympa/static_content css_path /var/lib/sympa/css css_url /css-sympa pictures_path /var/lib/sympa/pictures pictures_url /pictures-sympa use_fast_cgi 1 wwsympa_url http://listes.autarcie.org/wws aliases_db_type hash aliases_program postmap sendmail /usr/sbin/sendmail sendmail_aliases /etc/sympa/sympa_transport mhonarc /usr/bin/mhonarc
Créons les espaces virtuels (obligatoire?):
mkdir -m 755 /etc/sympa/listes.autarcie.org chown -R sympa:sympa /etc/sympa/listes.autarcie.org touch /etc/sympa/listes.autarcie.org/robot.conf mkdir -m 750 /var/lib/sympa/list_data/listes.autarcie.org chown sympa:sympa /var/lib/sympa/list_data/listes.autarcie.org
Postfix
On interconnecte Postfix à Sympa avec les directives ci-dessous.
touch /etc/sympa/transport.sympa touch /etc/sympa/virtual.sympa
On ajoute les hash manquants dans les directives existantes, sinon les créer :
# cat /etc/postfix/main.cf # [...] virtual_mailbox_domains = domaine.org hash:/etc/sympa/transport.sympa virtual_mailbox_maps = hash:/etc/postfix/vmailbox hash:/etc/sympa/transport.sympa hash:/etc/sympa/sympa_transport hash:/etc/sympa/virtual.sympa virtual_alias_maps = hash:/etc/postfix/virtual hash:/etc/sympa/virtual.sympa transport_maps = hash:/etc/sympa/transport.sympa hash:/etc/sympa/sympa_transport
# cat /etc/postfix/master.cf # [...] # Sympa sympa unix - n n - - pipe flags=hqRu null_sender= user=sympa argv=/usr/lib/sympa/bin/queue ${nexthop} sympabounce unix - n n - - pipe flags=hqRu null_sender= user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${nexthop}
# cat /etc/sympa/transport.sympa listes.autarcie.org error:User unknown in recipient table - sympa sympa@listes.autarcie.org sympa:sympa@listes.autarcie.org listmaster@listes.autarcie.org sympa:listmaster@listes.autarcie.org bounce@listes.autarcie.org sympabounce:sympa@mlistes.autarcie.org abuse-feedback-report@listes.autarcie.org sympabounce:sympa@listes.autarcie.org
# cat /etc/sympa/virtual.sympa sympa-request@listes.autarcie.org postmaster@localhost sympa-owner@listes.autarcie.org postmaster@localhost
On lance génère les bases pour postfix :
postmap hash:/etc/sympa/transport.sympa postmap hash:/etc/sympa/virtual.sympa postmap hash:/etc/sympa/sympa_transport
Tests
Unité
On y ajoute l'unité systemd suivante pour que le service web puisse communiquer avec l'application sympa :
cat /lib/systemd/system/wwsympa.service [Unit] Description=WWSympa - Web interface for Sympa mailing list manager After=syslog.target sympa.service [Service] Type=forking PIDFile=%t/sympa/wwsympa.pid ExecStart=/usr/bin/spawn-fcgi -F $FCGI_CHILDREN \ -P ${RUNTIME_DIRECTORY}/wwsympa.pid \ -s ${RUNTIME_DIRECTORY}/wwsympa.socket \ -u $FCGI_USER -g $FCGI_GROUP $FCGI_OPTS -- \ /usr/lib/cgi-bin/sympa/wwsympa.fcgi Environment="FCGI_CHILDREN=5" User=sympa Group=sympa Environment="FCGI_USER=sympa" Environment="FCGI_GROUP=sympa" Environment="FCGI_OPTS=-M 0660 -U www-data -G www-data" #EnvironmentFile=-/etc/default/sympa Restart=always RuntimeDirectory=sympa RuntimeDirectoryPreserve=yes [Install] WantedBy=multi-user.target
On recharge les configurations et on lance le tout :
systemctl daemon-reload systemctl restart wwsympa
Service web
Les essaient ont été portés sur Nginx et Apache.
Apache
Voici ce dont-il y a besoin :
<VirtualHost *:80 *:443> ServerName listes.autarcie.org RedirectMatch ^/$ /wws/ # SSLEngine On # SSLCertificateFile /etc/letsencrypt/live/listes.autarcie.org/cert.pem # SSLCertificateKeyFile /etc/letsencrypt/live/listes.autarcie.org/privkey.pem # SSLCertificateChainFile /etc/letsencrypt/live/listes.autarcie.org/fullchain.pem <IfModule mod_fcgid.c> Alias /static-sympa /usr/share/sympa/static_content <Directory /usr/share/sympa/static_content> Require all granted </Directory> Alias /css-sympa /var/lib/sympa/css <Directory /var/lib/sympa/css> Require all granted </Directory> Alias /pictures-sympa /var/lib/sympa/pictures <Directory /var/lib/sympa/pictures> 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> #RewriteEngine On #RewriteCond %{HTTPS} !=on #RewriteCond %{HTTP:X-Forwarded-Proto} !=https #RewriteRule ^/(.*) https://%{SERVER_NAME}/$1 [L,R=permanent] ErrorLog ${APACHE_LOG_DIR}/error-sympa.log CustomLog ${APACHE_LOG_DIR}/access-sympa.log combined </VirtualHost>
Activons le vhost
a2disconf sympa a2ensite sympa systemctl reload apache2
Nginx
SSL
Pour ajouter du chiffrement, executer ces commandes:
certbot certonly --webroot --webroot-path=/var/lib/letsencrypt/ -d listes.autarcie.org --dry-run --test-cert certbot certonly --webroot --webroot-path=/var/lib/letsencrypt/ -d listes.autarcie.org
Reste à décommenter les bonnes directives dans les vhosts