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 :
1 2 3 | # 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.
1 2 3 4 5 6 7 | 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
1 2 | - 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
1 2 3 4 5 6 7 8 9 10 11 12 | - 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 :
1 2 | 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 :
1 2 3 4 5 6 7 8 9 10 11 | 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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 | - 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 :
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 | 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
1 2 3 4 5 6 | - 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 :
1 2 | - 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
1 2 | -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
1 2 3 4 5 6 7 8 9 10 11 | + <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 - --- + --> |