Petit résumé / synthèse des épisodes précédents parce que sinon je m’y perd avec tout ces rebondissements
Installation mailman3
Il n’est pas nécessaire d’installer mailman2 pour faire la migration, il suffit d’avoir les fichiers config.pck
qui définissent une liste et les fichiers *.mbox
qui contiennent les archives de la liste.
Sur une Debian GNU/Linux buster sur laquelle un serveur SMTP écoute sur le port 25 sans authentification et un reverse proxy nginx qui porte un certificat SSL, l’installation se fait de cette façon:
$ apt-get install mailman3-web # et répondre ok a toutes les questions
$ emacs /etc/mailman3/nginx.conf # pour changer :80 en :8000 et configurer le reverse_proxy pour le diriger vers :8000
$ ln -s /etc/mailman3/nginx.conf /etc/nginx/sites-enabled
$ systemctl restart nginx
$ emacs /etc/mailman3/mailman-web.py # changer la valeur de EMAILNAME
$ systemctl restart mailman3-web
$ django-admin createsuperuser --pythonpath /usr/share/mailman3-web --settings settings --username admin --email loic@dachary.org # se logger, relever le courriel de confirmation et cliquer sur l'URL pour valider, puis se logger
Créer une liste dans mailman3 identique à celle de mailman2
Il faut d’abord prendre les scripts d’import les plus récents, ils vont fonctionner avec une version plus ancienne de mailman.
$ wget -O /usr/lib/python3/dist-packages/mailman/commands/cli_import.py https://gitlab.com/mailman/mailman/-/raw/master/src/mailman/commands/cli_import.py
$ wget -O /usr/lib/python3/dist-packages/mailman/utilities/importer.py https://gitlab.com/mailman/mailman/-/raw/master/src/mailman/utilities/importer.py
Pour créer la liste, avec /tmp/config.pck
qui provient de mailman2:
$ mailman create -N spip-dev@mailman.the.re
$ mailman import21 --charset iso8859-1 spip-dev@mailman.the.re /tmp/config.pck
Upgrade hyperkitty 1.3.2
La version de Debian GNU/Linux buster est 1.2.2 il faut donc mettre à jour avec le package qui est dans testing. A cause des dépendances il faut aussi upgrade mailman3-web de la version 0+20180916-8 à 0+20180916-10.
La version 1.3.1 permet de supprimer une archive.
Suivre les instructions de cette solution pour éviter un occassionel MySQL server has gone away qui fait échouer l’import d’un message.
Editer /etc/mailman3/mailman-web.py
pour y ajouter:
DATABASES = {
'default': {
...
'CONN_MAX_AGE': 3600,
Préciser le charset des chaînes MySQL
Lorsque la base de donnée est MySQL, l’import peut échouer parce que le charset est incorrect. Editer /etc/mailman3/mailman-web.py
comme expliqué ici pour y ajouter:
'OPTIONS': {'charset': 'utf8mb4'}
Importer dans mailman3 les archives mailman2
Le script d’import est fragile et il faut prendre la toute dernière version pour maximiser les chances qu’il réussisse. Malgré cela il est possible que l’import d’un fichier mbox soit interrompu à cause d’un courriel défecteux. La seule solution est d’enlever manuellement le courriel défectueux et de recommencer, ce qui peut être fastidieux.
$ wget -O /usr/lib/python3/dist-packages/hyperkitty/management/commands/hyperkitty_import.py https://gitlab.com/mailman/hyperkitty/-/raw/master/hyperkitty/management/commands/hyperkitty_import.py
$ cd /usr/share/mailman3-web/
$ python3 manage.py hyperkitty_import --list-address spip-dev@mailman.the.re --since 1980-01-01 --ignore-mtime --no-sync-mailman /home/debian/spip-dev.mbox/*.mbox
Corriger le contenu d’un fichier mbox
Lorsque hyperkitty_import échoue il peut être difficile de déterminer quel est le courriel fautif lorsque l’identifiant du message n’est pas affiché avec le message d’erreur. Le script check_hk_import peut aider a l’identifier.
$ wget https://gitlab.com/mailman/hyperkitty/-/raw/master/hyperkitty/contrib/check_hk_import
$ python3 check_hk_import 200207.mbox
Indexation plein texte dans mailman3
Pour un volume de plus de 200Mo, il faut utiliser autre chose que l’indexeur par défaut Woosh qui n’est plus maintenu depuis 2016. Sinon les temps d’indexation sont de plusieurs jours pour 2GB de texte, la recherche prend 30 secondes et la RAM nécessaire monte jusqu’à 6GB résident.
Xapian est un backend haystack qui peut être spécifié comme alternative dans le fichier /etc/mailman3/mailman-web.py
HAYSTACK_CONNECTIONS = {
'default': {
'ENGINE': 'xapian_backend.XapianEngine',
'PATH': '/var/lib/mailman3/web/fulltext_index',
},
}
et installé sur une Debian GNU/Linux buster à partir du package venant de testing en attendant le backport qui corrige un bug bloquant.
$ echo deb http://debian.fr/debian testing main > /etc/apt/sources.list.d/mailman.list
$ apt-get update
$ apt-get install python3-xapian-haystack
et on peut ensuite indexer avec
$ python3 manage.py update_index_one_list -v 2 spip-dev@mailman.the.re
Reprendre la valeur de Q_CLUSTER depuis /usr/share/mailman3-web/settings.py
et la copier dans /etc/mailman3/mailman-web.py
en y ajoutant explicitement le nombre de workers:
Q_CLUSTER = {
'workers': 5,
'timeout': 300,
'save_limit': 100,
'orm': 'default',
'poll': 5,
}