304 lines
9.3 KiB
Markdown
304 lines
9.3 KiB
Markdown
---
|
||
categories: email
|
||
title: Howto Sympa
|
||
...
|
||
|
||
* Documentation : <http://www.sympa.org/doc/>
|
||
|
||
[Sympa](http://www.sympa.org/) est un logiciel libre de gestion de listes de diffusion. Il est développé en Perl depuis plus de 20 ans par des développeurs français.
|
||
Il s'utilise avec une base de données [MySQL](HowtoMySQL) ou [PostgreSQL](HowtoPostgreSQL), et peut aller lire des données dans un annuaire [LDAP](HowtoOpenLDAP).
|
||
|
||
# Installation
|
||
|
||
Installer au préalable [Postfix](HowtoPostfix), [Apache](HowtoApache) et [MariaDB](HowtoMySQL).
|
||
|
||
~~~
|
||
# aptitude install sympa default-mysql-server libapache2-mod-fcgid opendkim-tools
|
||
|
||
# sympa -v
|
||
Sympa 6.2.16
|
||
|
||
# systemctl status sympa
|
||
● sympa.service - SYMPA mailing list manager
|
||
Loaded: loaded (/lib/systemd/system/sympa.service; enabled; vendor preset: enabled)
|
||
Docs: man:sympa_msg(8)
|
||
Main PID: 18009 (sympa_msg.pl)
|
||
Tasks: 1 (limit: 4915)
|
||
CGroup: /system.slice/sympa.service
|
||
└─18009 /usr/bin/perl /usr/lib/sympa/bin/sympa_msg.pl
|
||
|
||
Nov 05 20:34:34 systemd[1]: Starting SYMPA mailing list manager...
|
||
Nov 05 20:34:35 sympa_msg[17997]: info main::_load() Configuration file read, default log level 0
|
||
Nov 05 20:34:36 sympa_msg[17997]: notice Sympa::Process::daemonize() Starting sympa/msg daemon, PID 18009
|
||
Nov 05 20:34:36 sympa_msg[18009]: notice main:: Sympa/msg 6.2.16 Started
|
||
Nov 05 20:34:36 systemd[1]: Started SYMPA mailing list manager.
|
||
~~~
|
||
|
||
Il faut ensuite ajuster le paramètre suivant dans `/etc/sympa/sympa/sympa.conf` :
|
||
|
||
~~~
|
||
use_fast_cgi 1
|
||
~~~
|
||
|
||
Et ajouter la gestion des alias Sympa dans `/etc/postfix/main.cf` :
|
||
|
||
~~~
|
||
alias_maps = hash:/etc/aliases hash:/etc/mail/sympa/aliases
|
||
alias_database = hash:/etc/aliases hash:/etc/mail/sympa/aliases
|
||
~~~
|
||
|
||
Et s'assurer d'avoir les alias de base dans `/etc/mail/sympa/aliases` :
|
||
|
||
~~~
|
||
## List aliases used for the sympa mailing-list manager
|
||
#-- SYMPA begin
|
||
## Aliases used for the sympa mailing-list manager
|
||
sympa: "|/usr/lib/sympa/bin/queue sympa"
|
||
sympa-request: "|/usr/lib/sympa/bin/queue sympa"
|
||
sympa-owner: "|/usr/lib/sympa/bin/bouncequeue sympa"
|
||
listmaster: root
|
||
#-- SYMPA end
|
||
~~~
|
||
|
||
# Configuration
|
||
|
||
Fichiers de configuration :
|
||
|
||
~~~
|
||
/etc/sympa/
|
||
├── auth.conf
|
||
├── cookie
|
||
├── cookies.history
|
||
├── create_list_templates
|
||
├── custom_actions
|
||
├── custom_conditions
|
||
├── data_sources
|
||
├── data_structure.version
|
||
├── facility
|
||
├── families
|
||
├── global_task_models
|
||
├── list_task_models
|
||
├── mail_tt2
|
||
├── scenari
|
||
├── search_filters
|
||
├── sympa
|
||
│ ├── sympa.conf
|
||
│ └── sympa.conf.bin
|
||
├── sympa.conf-smime.in
|
||
├── topics.conf
|
||
└── web_tt2
|
||
~~~
|
||
|
||
La configuration principale se trouve dans le fichier `/etc/sympa/sympa/sympa.conf`.
|
||
Voici la configuration minimum à ajuster :
|
||
|
||
~~~
|
||
domain lists.example.com
|
||
listmaster listmaster@lists.example.com
|
||
wwsympa_url http://lists.example.com/wws
|
||
|
||
lang fr
|
||
~~~
|
||
|
||
> *Note* : en cas de changement de configuration de Sympa, il faut redémarrer Sympa **et** Apache (à cause des process FastCGI).
|
||
|
||
## Apache
|
||
|
||
Vous devez créer un VirtualHost du type après avoir désactivé la configuration Sympa globale via `a2disconf sympa` :
|
||
|
||
~~~
|
||
<VirtualHost *:80 *:443>
|
||
ServerName lists.example.com
|
||
RedirectMatch ^/$ /wws/
|
||
#Include /etc/apache2/ssl/sympa.conf
|
||
|
||
<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>
|
||
|
||
</VirtualHost>
|
||
~~~
|
||
|
||
On conseille bien sûr de l'activer en [HTTPS](HowtoSSL), par exemple avec [Let's Encrypt](HowtoLetsEncrypt).
|
||
|
||
### Avec un service FastCGI séparé
|
||
|
||
Il est aussi possible de faire tourner wwsympa.fcgi en tant que service fastcgi séparé avec spawn-fcgi (entre autre solutions), un service systemd pour cette méthode est le suivant:
|
||
|
||
~~~ { .ini }
|
||
[Unit]
|
||
Description=WWSympa - Web interface for Sympa mailing list manager
|
||
After=syslog.target sympa.service
|
||
|
||
[Service]
|
||
Type=forking
|
||
User=sympa
|
||
Group=sympa
|
||
ExecStart=!/usr/bin/spawn-fcgi -F 5 -P ${RUNTIME_DIRECTORY}/wwsympa.pid -s ${RUNTIME_DIRECTORY}/wwsympa.socket -u sympa -g sympa -M 0660 -G www-data -- /usr/lib/cgi-bin/sympa/wwsympa.fcgi
|
||
Restart=always
|
||
|
||
RuntimeDirectory=sympa
|
||
RuntimeDirectoryPreserve=yes
|
||
PIDFile=%t/sympa/wwsympa.pid
|
||
~~~
|
||
|
||
La configuration du vhost apache devient alors :
|
||
|
||
~~~ { .apache }
|
||
<VirtualHost *:80 *:443>
|
||
ServerName lists.example.com
|
||
RedirectMatch ^/$ /wws/
|
||
#Include /etc/apache2/ssl/sympa.conf
|
||
|
||
Alias /static-sympa /var/lib/sympa/static_content
|
||
<Directory /var/lib/sympa/static_content>
|
||
Require all granted
|
||
</Directory>
|
||
|
||
<Location /wws>
|
||
SetHandler "proxy:unix:/run/sympa/wwsympa.socket|fcgi://"
|
||
Require all granted
|
||
</Location>
|
||
|
||
</VirtualHost>
|
||
~~~
|
||
|
||
## DKIM
|
||
|
||
Génération des clés DKIM :
|
||
|
||
~~~
|
||
# opendkim-genkey -D /etc/ssl/private/ -d lists.example.com -s sympa2018 -v
|
||
# adduser sympa ssl-cert
|
||
# chown sympa:sympa /etc/ssl/private/foo_lists.example.com.key
|
||
~~~
|
||
|
||
On active ensuite dans `/etc/sympa/sympa/sympa.conf` :
|
||
|
||
~~~
|
||
dkim_feature on
|
||
dkim_private_key_path /etc/ssl/private/sympa2018.private
|
||
dkim_signer_domain lists.example.com
|
||
dkim_selector sympa2018
|
||
~~~
|
||
|
||
# Plomberie
|
||
|
||
Les emails d'administration (changement de mot de passe, modération, etc.) sont envoyés à `sympa@lists.example.com`,
|
||
grâce à un alias Postfix, ils sont *pipés* vers le programme `/usr/lib/sympa/bin/queue sympa`
|
||
|
||
Les emails pour une liste de diffusion *foo* sont envoyés à `foo@lists.example.com`.
|
||
Les alias Postfix suivants les redirigent vers différents programmes :
|
||
|
||
~~~
|
||
foo: "| /usr/lib/sympa/bin/queue foo"
|
||
foo-request: "| /usr/lib/sympa/bin/queue foo-request"
|
||
foo-editor: "| /usr/lib/sympa/bin/queue foo-editor"
|
||
foo-subscribe: "| /usr/lib/sympa/bin/queue foo-subscribe"
|
||
foo-unsubscribe: "| /usr/lib/sympa/bin/queue foo-unsubscribe"
|
||
foo-owner: "| /usr/lib/sympa/bin/bouncequeue foo"
|
||
~~~
|
||
|
||
Le message passe ensuite par différentes files d'attente suivant la configuration (modération, etc.).
|
||
|
||
|
||
Voici les répertoires importants pour Sympa :
|
||
|
||
* `/var/spool/sympa/` : files d'attente (modération etc.)
|
||
* `/var/lib/sympa/arc/` : archives des listes de diffusion générées avec [MHonArc](https://www.mhonarc.org/)
|
||
* `/var/lib/sympa/list_data/` : données de configuration des listes de diffusion
|
||
* `/usr/share/sympa/bin/` et `/usr/lib/sympa/bin/` : scripts Perl et binaires
|
||
* `/usr/share/sympa/lib/` et : bibliothèques Perl
|
||
* `/usr/share/sympa/default/` : templates
|
||
|
||
|
||
# FAQ
|
||
|
||
## List::load() No such robot
|
||
|
||
J'ai des messages de ce type alors que *example.com* n'est pas/plus du tout domaine :
|
||
|
||
~~~
|
||
Nov 9 18:35:18 serveur task_manager[7285]: List::load() No such robot (virtual domain) example.com
|
||
~~~
|
||
|
||
Cela pourrait venir de tâches à nettoyer dans `/var/spool/sympa/task/`.
|
||
Au passage, vérifier en base de données qu'il n'y a pas/plus rien relatif à *example.com* dans subscriber_table, session_table, logs_table.
|
||
|
||
## Installation sous Debian 6
|
||
|
||
Sous Debian Squeeze, voici quelques manipulations nécessaires suite à l'installation :
|
||
|
||
~~~
|
||
# chown sympa:sympa /usr/lib/sympa/lib/sympa/queue
|
||
# chmod u+s /usr/lib/sympa/lib/sympa/queue
|
||
# chown root /etc/postfix/sympa.aliases
|
||
~~~
|
||
|
||
## End of script output before headers
|
||
|
||
Si vous avez des erreurs Apache du type :
|
||
|
||
~~~
|
||
[fcgid:warn] [pid 21826] (104)Connection reset by peer: [client 192.0.2.42:37006] mod_fcgid: error reading data from FastCGI server
|
||
[core:error] [pid 21826] [client 192.0.2.42:37006] End of script output before headers: wwsympa-wrapper.fcgi
|
||
~~~
|
||
|
||
[Assurez-vous](https://bugs.debian.org/682562) d'avoir activé `use_fast_cgi`.
|
||
|
||
## Prise en compte des changements de configuration
|
||
|
||
En cas de changement de configuration de Sympa, il faut redémarrer Sympa **et** Apache (à cause des process FastCGI).
|
||
|
||
## Données dans LDAP
|
||
|
||
Après avoir créé une liste, on peut configurer un annuaire LDAP en allant dans `Configurer la liste` puis `Définition des sources de données`.
|
||
Il pourra être nécessaire de cliquer sur `Mise à jour` pour mettre à jour les données LDAP.
|
||
|
||
## Unable run newaliases / Failed to remove aliases
|
||
|
||
Lors de l'ajout / suppression de listes, si vous obtenez des erreurs du type :
|
||
|
||
~~~
|
||
wwsympa[19038]: [robot lists.example.com] [user listmaster@lists.example.com] [list test] Unable run newaliases
|
||
wwsympa[19027]: Failed to remove aliases ; status 6 : Ioctl() inappropré pour un périphérique
|
||
~~~
|
||
|
||
Un contournement peut être d'utiliser directement `/usr/lib/sympa/bin/alias_manager.pl` :
|
||
|
||
~~~
|
||
# /usr/lib/sympa/bin/alias_manager.pl -h
|
||
Usage:
|
||
alias_manager.pl add | del listname domain
|
||
~~~
|
||
|
||
## emails d'une liste vers une autre non archivés ?
|
||
|
||
C'est probablement à cause de la présence de l'entête `X-No-Archive: yes` !
|
||
|
||
## emails non reçus par une liste ?
|
||
|
||
Voir dans `sympa.pl`, certains filtres basiques sont effectués, notamment :
|
||
|
||
~~~
|
||
if ($sender =~ /^(mailer-daemon|sympa|listserv|mailman|majordomo|smartlist|$conf_email)(\@|$)/mio) {
|
||
~~~
|
||
|
||
## Sympa : User unknown in local recipient table
|
||
|
||
En cas d'erreur "foo@sympa.example.com: Recipient address rejected: User unknown in local recipient table" il faut probablement refaire un postmap sur le fichier d'alias de Sympa :
|
||
|
||
~~~
|
||
# postmap /etc/mail/sympa/aliases
|
||
~~~
|
||
|
||
(ou plus simplement un `newaliases` si Postfix est bien configuré).
|
||
|