Debian 11 ne supporte plus mailman2, et mailman2 n’est plus maintenu depuis… (trop longtemps) il était donc grand temps de changer d’outil pour les mailings liste… Oui mais voilà, mon panel c’est ISPconfig et celui-ci ne supporte pour le moment QUE mailman2 🙁 (pas de mailman3 ni de sympa prévu)
Pour l’instant mon serveur est en Debian 10, mais dans l’optique d’un migration vers Debian 11 il fallait avancer. Après avoir tester mailman3 je me suis dit qu’il était très lourd (en ressources serveurs) par rapport à mon besoin (il s’avère être dimensionné pour les gros système) de plus il c’est un jeune logiciel alors que Sympa a de la bouteille, sont développement est encore soutenu, il est léger et des scripts de migration existe, ça serait donc Sympa !
A noter que beaucoup migre vers Discourse qui ouvre d’autres possibilités.
Tant pi pour l’intégration dans le panel ISPconfig pour le moment.. Un jour peut être…
Installation
Installation de sympa
Sur mon serveur Debian 10 j’ai commencé par installer Sympa en parallèle de Mailman2 :
# Pour éviter une erreur dpkg
echo "retzo.net" > /etc/mailname
apt install sympa # dire non à toutes les questions apt... on s'en occupe après...
Ensuite je crée la base de donnée MySql « sympa » avec un utilisateur restreint.
SELECT PASSWORD('MOTDEPASSE');
# Récupérer le hash du mot de passe
CREATE USER 'sympa'@'localhost' IDENTIFIED VIA mysql_native_password USING '*F72C19A910531DA39D6EC7BB91BEB11A37753023';
GRANT USAGE ON *.* TO 'sympa'@'localhost' REQUIRE NONE WITH MAX_QUERIES_PER_HOUR 0 MAX_CONNECTIONS_PER_HOUR 0 MAX_UPDATES_PER_HOUR 0 MAX_USER_CONNECTIONS 0;
CREATE DATABASE IF NOT EXISTS `sympa`;
GRANT ALL PRIVILEGES ON `sympa`.* TO 'sympa'@'localhost';
FLUSH PRIVILEGES;
Modification de l’URL (j’aime pas /wws/ je préfère /sympa ) dans le fichier /etc/apache2/conf-enabled/sympa.conf
- ScriptAlias /wws /usr/lib/cgi-bin/sympa/wwsympa-wrapper.fcgi
+ ScriptAlias /sympa /usr/lib/cgi-bin/sympa/wwsympa-wrapper.fcgi
Je modifie ensuite le fichier /etc/sympa/sympa/sympa.conf
- listmaster listmaster@retzien.fr
+ listmaster adresse-email-admin@retzo.net
- lang en
+ lang fr
- wwsympa_url http://retzo.net/wws
+ wwsympa_url http://lists.retzo.net/sympa
+ db_type MySQL
+ db_host localhost
+ db_port 3306
+ db_name sympa
+ db_user sympa
+ db_passwd plvlOBpDuljmz0Dh
Je relance sympa pour qu’il crée les tables :
service sympa restart ; service apache2 restart
Lancer la commande suivante et lire les instructions selon votre cas
sympa_wizard --check
Pour ma part le check révèle surtout qu’il manque Data::Password
cpan install Data::Password
Intégration dans postfix (multi domaines)
Ensuite j’ai suivi la documentation pour les « multi-domaines » avec Postfix : https://sympa-community.github.io/manual/install/configure-mail-server-postfix.html#virtual-domain-setting
Pour la suite on va enter ces variables dans le terminal, ça nous simplifia la lecture :
SYSCONFDIR=/etc/sympa
EXPLDIR=/var/lib/sympa/list_data
Créer le fichier $SYSCONFDIR/list_aliases.tt2
#--- [% list.name %]@[% list.domain %]: list transport map created at [% date %]
[% list.name %]@[% list.domain %] sympa:[% list.name %]@[% list.domain %]
[% list.name %]-request@[% list.domain %] sympa:[% list.name %]-request@[% list.domain %]
[% list.name %]-editor@[% list.domain %] sympa:[% list.name %]-editor@[% list.domain %]
[% list.name %]-subscribe@[% list.domain %] sympa:[% list.name %]-subscribe@[%list.domain %]
[% list.name %]-unsubscribe@[% list.domain %] sympa:[% list.name %]-unsubscribe@[% list.domain %]
[% list.name %][% return_path_suffix %]@[% list.domain %] sympabounce:[% list.name %]@[% list.domain %]
Ajouter les lignes suivantes à la fin du fichier /etc/sympa/sympa/sympa.conf
sendmail_aliases /etc/sympa/sympa_transport
aliases_program postmap
aliases_db_type hash
Créer les fichiers qui vont bien :
touch $SYSCONFDIR/transport.sympa
touch $SYSCONFDIR/virtual.sympa
touch $SYSCONFDIR/sympa_transport
chmod 644 $SYSCONFDIR/sympa_transport
chown sympa:sympa $SYSCONFDIR/sympa_transport
postmap hash:$SYSCONFDIR/transport.sympa
postmap hash:$SYSCONFDIR/virtual.sympa
/usr/lib/sympa/bin/sympa_newaliases.pl
postmap hash:$SYSCONFDIR/sympa_transport
chmod 640 $SYSCONFDIR/sympa_transport $SYSCONFDIR/sympa_transport.db
chgrp postfix $SYSCONFDIR/sympa_transport $SYSCONFDIR/sympa_transport.db
Dans le fichier /etc/postfix/master.cf ajouter à la fin :
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}
Modifier le fichier /etc/postfix/main.cf comme suite, supprimer ce qui est mailman au profil de sympa :
- alias_maps = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
- alias_database = hash:/etc/aliases, hash:/var/lib/mailman/data/aliases
+ alias_maps = hash:/etc/aliases
+ alias_database = hash:/etc/aliases
- virtual_alias_maps = hash:/var/lib/mailman/data/virtual-mailman, proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, proxy:mysql:/etc/postfix/mysql-virtual_alias_maps.cf, proxy:mysql:/etc/postfix/mysql-virtual_email2email.cf
- virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf
- virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf
+ virtual_alias_maps = proxy:mysql:/etc/postfix/mysql-virtual_forwardings.cf, proxy:mysql:/etc/postfix/mysql-virtual_alias_maps.cf, proxy:mysql:/etc/postfix/mysql-virtual_email2email.cf, hash:/etc/sympa/virtual.sympa
+ virtual_mailbox_domains = proxy:mysql:/etc/postfix/mysql-virtual_domains.cf, hash:/etc/sympa/transport.sympa
+ virtual_mailbox_maps = proxy:mysql:/etc/postfix/mysql-virtual_mailboxes.cf, hash:/etc/sympa/transport.sympa, hash:/etc/sympa/sympa_transport, hash:/etc/sympa/virtual.sympa
- transport_maps = hash:/var/lib/mailman/data/transport-mailman, proxy:mysql:/etc/postfix/mysql-virtual_transports.cf
---
+ transport_maps = proxy:mysql:/etc/postfix/mysql-virtual_transports.cf, hash:/etc/sympa/transport.sympa, hash:/etc/sympa/sympa_transport
Attention : cette modification sera a faire à chaque mise à jours d’ISPconfig si vous choisissiez de reconfigurez les services.
Si vous voulez que cette modification soit « incluse » dans ISPconfig, même après mise à jour il vous fait récupérer le fichier du répertoire d’installation qui correspond à votre distribution (chez moi Debian) : ispconfig3/install/tpl/debian_postfix.conf.master et le mettre dans /usr/local/ispconfig/server/conf-custom/install/ sur votre serveur et d’appliquer les mêmes changements que précédemment cité dans le main.cf.
Ajouter les domaines
Contrairement à ce qui est dans la documentation : https://sympa-community.github.io/manual/install/configure-mail-server-postfix.html#virtual-domain-setting dans « Adding new domain »
Si vous ajouter dans le fichier transport.sympa la ligne
mail.example.org error:User unknown in recipient table
SI ce domaine contient des boîtes e-mails dans ISPconfig, celles-ci ne fonctionneront plus. Il est donc préférable, dans notre cas de ne pas ajouter cette ligne (sauf si ce le nom de domaine est uniquement fait pour les mailings listes)
Un petit script script bash qui liste les domaines présent dans mailman et qui crée les configurations pour Sympa :
cat /var/lib/mailman/data/virtual-mailman | egrep -v "^$|^#|mailman" | cut -d@ -f2 | cut -d" " -f1 | sort | uniq > /tmp/mailman_domaine_liste
SYSCONFDIR=/etc/sympa
EXPLDIR=/var/lib/sympa/list_data
while read -r line;
do
echo $line
mkdir -m 755 $SYSCONFDIR/$line
touch $SYSCONFDIR/$line/robot.conf
chown -R sympa:sympa $SYSCONFDIR/$line
mkdir -m 750 $EXPLDIR/$line
chown sympa:sympa $EXPLDIR/$line
echo "http_host lists.$line
listmaster adresse-email-admin@retzo.net
create_list listmaster
wwsympa_url http://lists.$line/sympa" > $SYSCONFDIR/$line/robot.conf
echo "sympa@$line sympa:sympa@$line
listmaster@$line sympa:listmaster@$line
bounce@$line sympabounce:sympa@$line
abuse-feedback-report@$line sympabounce:sympa@$line" >> $SYSCONFDIR/transport.sympa
echo "sympa-request@$line postmaster@retzo.net
sympa-owner@$line postmaster@retzo.net" >> $SYSCONFDIR/virtual.sympa
done < /tmp/mailman_domaine_liste
postmap hash:$SYSCONFDIR/transport.sympa
postmap hash:$SYSCONFDIR/virtual.sympa
Migration avec mailman2sympa
Il existe un script « mailman2sympa » : https://www.sympa.org/contribs/migration_and_archives/index#mailman2sympa après usage j’ai contribué à son amélioration (débugge) sur Github : https://github.com/LAKostis/mailman2sympa/pulls?q=is%3Apr+author%3Akepon85 le mainteneur du dépôt git n’est pas l’auteur du script : https://github.com/LAKostis/mailman2sympa/commit/f628cd2b968b2e1959f0e631e895b189e8110f1d
Quelques dépendances non satisfaite chez moi :
apt install jq libjson-perl procmail
Téléchargement du script :
cd ~
git clone https://github.com/LAKostis/mailman2sympa.git
cd mailman2sympa
mv conf/mailman2sympa.conf.debian conf/mailman2sympa.conf
Modifier le fichier conf/mailman2sympa.conf
- DOMAIN=''
+ DOMAIN="retzo.net"
- PASSWORDDB=""
+ PASSWORDDB="zXne&375"
- DEFAULT_OWNER=""
+ DEFAULT_OWNER="adresse-email-admin@retzo.net"
Puis lancer le script de migration :
rm -fr /tmp/mailman ; bash mailman2sympa.sh
Si, comme moi vous avez plusieurs domaine il vous faut recommencer en éditant conf/mailman2sympa.conf :
- DOMAIN="retzo.net
+ DOMAIN="autredomaine.net
Et relancer le script mailman2sympa.sh, boucler tant que vous avez des domaines à importer…
A propos des archives, à la fin, connectez vous http://lists.retzo.net/sympa/serveradmin/archives (utiliser « première connexion » la première fois) et lancer une reconstitution des archives
Enfin re-générer le fichier sympa_transport précisé dans la variable sendmail_aliases du fichier sympa.conf
root@srvmail:~# /usr/lib/sympa/bin/sympa.pl --make_alias_file
Sympa aliases file /var/spool/sympa/tmp/sympa_aliases.179676 was made. You probably need to install it in your SMTP engine.
root@srvmail:~# cat /var/spool/sympa/tmp/sympa_aliases.179676 > /etc/sympa/sympa_transport
root@srvmail:~# postmap /etc/sympa/sympa_transport
Désactiver mailman
Avant de le désinstaller on peut passer par une période de transition en désactivant l’interface par exemple, dans le fichier /etc/mailman/apache.conf
-ScriptAlias /cgi-bin/mailman/ /usr/lib/cgi-bin/mailman/
+RedirectPermanent /cgi-bin/mailman/ /sympa/
DKIM / DMARC
Pour sympa il y a pas mal de configuration DMARc/DKIM : https://www.sympa.org/doc/formation/sympa_avance
Pour que ça fonctionne avec ISPconfig il faut ajouter l’utilisateur « sympa » au groupe « amavis »
usermod -a -G amavis sympa
Ensuite dans les fichiers « robot.conf » (/etc/sympa/DOMAIN/robot.conf) il faut ajouter en fin de fichier :
dkim_feature on
dkim_private_key_path /var/lib/amavis/dkim/retzo.net.private
dkim_signature_apply_on any
dkim_signer_domain retzo.net
dkim_selector default
dmarc_protection_mode dmarc_reject
Redirection de la page du panel ISPconfig
ISPconfig ne supoprte pas Sympa mais Mailman, pour éviter que des utilisateurs crée des listes mailman (et donc génère des erreurs) je redirige la page « Mailing list » du panel vers la documentation. Pour ça modifier la page /usr/local/ispconfig/interface/web/mail/templates/mail_mailinglist_list.htm
+ <script type="text/javascript">
+ window.location.href = "https://lists.retzo.net/";
+ </script>
+
+ <p>Cette page du panel n'est plus à utiliser, vous allez être rediriger vers la page de Sympa : <a href="https://lists.retzo.net/">https://lists.retzo.net/</a></p>
+
+ <!--
73c80
-
---
+ -->
Merci! This is very useful, I’m trying to migrate a server from Mailman to Sympa since Mailman3 seems to be a disaster.
I’m using Virtualmin instead of ispconfig, but the challenge is similar.