Table des matières

Création d'une liste

Pour créer une liste il faut utiliser l'interface WWSympa https://listes.chapril.org/sympa/create_list_request

Pour une liste de type support, il faut choisir le template « Template pour une liste de type support » qui contient notamment des éléments de configuration en lien avec la gestion des adresses en erreur. Voir le ticket https://agir.april.org/issues/5692 pour plus d'information.

Il faut choisir un Objet pour la liste.

L'interface demande aussi de choisir un « Public visé », ce qui est inutile dans notre cas. Choisir « Autre » (tout en cas de la liste).

Ajouter une courte description.

Puis cliquer sur « Envoyer votre demande de création ».

La liste est créée. Il faut ensuite ajouter les adresses courriels des personnes qui recevront les courriels de support (dans l'onglet « Les utilisateurs → Abonnés ». Mettre aussi ces adresses en Propriétaires de la liste, dans l'onglet « Les utilisateurs → Propriétaires », en pensant à cocher la case « Gestionnaire privilégié ».

Puis envoyer un courriel de test avec une adresse non inscrite à la liste, pour vérifier la bonne diffusion du message.

Pour la création du template « Template pour une liste de type support », création du répertoire /etc/sympa/create_list_templates/liste-support/ puis copie des fichiers /usr/share/doc/sympa/examples/samples/intranet/create_list_templates/intranet_list/comment.tt2 et /usr/share/doc/sympa/examples/samples/intranet/create_list_templates/intranet_list/config.tt2 puis modification des fichiers.

Modification d'un message envoyé par Sympa

Il y a un mauvais message affiché lorsqu'une personne tente de s'inscrire à une liste qui demande une confirmation d'inscription par courriel (que ce soit via l'interface web ou par courriel). Celaa induit en erreur la personne qui du coup ne validera peut-être pas l'inscription.

La personne reçoit deux courriel. Un courriel de Sympa pour valider son inscription mais elle reçoit un 2e courriel indiquant La demande a été soumise au gestionnaire de la liste.

Le ticket https://agir.april.org/issues/5736

C'est exactement le même souci qu'avec le Sympa de l'April, voir https://agir.april.org/issues/5736

On applique la même résolution que pour le Sympa de l'April :

apt install gettext
mkdir /root/sympa-ticket-5736
cd /root/sympa-ticket-5736
dpkg -s sympa |grep Version
wget http://deb.debian.org/debian/pool/main/s/sympa/sympa_6.2.60~dfsg.orig.tar.xz
tar Jxvf sympa_6.2.60~dfsg.orig.tar.xz
cd sympa-6.2.60/po/sympa/
msgfmt -c -o fr.mo -v fr.po
-> 2810 messages traduits, 1 traduction approximative, 1 message non traduit.
Diff avec le fichier qui est livré avec le paquet Debian :
diff -u /usr/share/locale/fr/LC_MESSAGES/sympa.mo fr.mo
fichier identique (parfait)

On peut donc modifier le fichier fr.po pour remplacer la chaîne et avoir un nouveau fichier MO :

cp fr.po fr.po.orig
vi fr.po
diff -u fr.po.orig fr.po
-msgstr "La demande a été soumise au gestionnaire de la liste (%1)" 
+msgstr "Votre requête à été transmise à l'adresse (%1) pour une demande de confirmation. Le message envoyé contenant un lien de validation." 
msgfmt -c -o fr.mo -v fr.po

On met en prod :

cd /usr/share/locale/fr/LC_MESSAGES/
cp sympa.mo sympa.mo.dpkg
cp ~/sympa-ticket-5736/sympa-6.2.40/po/sympa/fr.mo sympa.mo
systemctl restart sympa
systemctl restart wwsympa

Interconnexion entre sympa et postfix

Pour rappel on a une architecture avec un relais mail qui gère tout ce qui entre/sort du cluster au niveau du mail. Le sympa est installé sur une machine séparée. Pour éviter la confusion on nommera guest la machine hébergeant le sympa et on nommera relais la machine hébergeant le postfix frontal.

On est ici dans une documentation a posteriori d'un truc un peu touchy, donc il est possible que des erreurs subsistent.

Postfix coté relais

Pour que le relais transmette les emails au bon guest, il faut installer les bons transports.

/etc/postfix/conf.d/40-sympa.conf
transport_maps = hash:/etc/postfix/transports/sympa, hash:/etc/postfix/transports/slow_domains, hash:/etc/postfix/transports/sympa-static

Par ailleurs il faut que le relais reconnaisse les transports comme des destinataires valides. Nous avons donc

/etc/postfix/conf.d/42-recipients.conf
local_recipient_maps = proxy:unix:passwd.byname $alias_maps $transport_maps

Examinons les définitions des transports :

  1. slow_domains : pour limiter le débit de soumission des courrier à des domaine pauvres comme laposte.net qui n'ont pas les moyens d'encaisser plus de 1 courriel à la fois. Ce n'est pas à proprement parler essentiel à sympa, mais de fait le besoin s'en fait largement sentir lorsqu'un sympa est installé.
    /etc/postfix/transports/slow_domains.map
    aliceadsl.fr slow:
    free.fr slow:
    hotmail.com slow:
    hotmail.fr slow:
    infonie.fr slow:
    laposte.net slow:
    libertysurf.fr slow:
    live.com slow:
    live.fr slow:
    orange.com slow:
    orange.fr slow:
    wanadoo.com slow:
    wanadoo.fr slow:
    yahoo.com slow:
    yahoo.fr slow:
  2. sympa-static : les adresses de services pour le sympa.
    /etc/postfix/transports/sympa-static.map
    sympa@chapril.org            smtp:[sympa.cluster.chapril.org]
    sympa-request@chapril.org    smtp:[sympa.cluster.chapril.org]
    sympa-owner@chapril.org      smtp:[sympa.cluster.chapril.org]
  3. sympa : c'est là que les sont les transports spécifiques aux listes. On verra plus tard sa fabrication.
    /etc/postfix/transports/sympa.map
    ## Généré automatiquement sur sympa.cluster.april.org via systemd (sympa-transports.path)
    ## À copier dans mail.cluster.chapril.org:/etc/postfix/transports/
    ## List aliases used for the sympa mailing-list manager
    test@chapril.org                                                        smtp:[sympa.cluster.chapril.org]
    test-request@chapril.org                                                smtp:[sympa.cluster.chapril.org]
    test-editor@chapril.org                                                 smtp:[sympa.cluster.chapril.org]
    test-unsubscribe@chapril.org                                            smtp:[sympa.cluster.chapril.org]
    test-owner@chapril.org                                                  smtp:[sympa.cluster.chapril.org]

Postfix coté guest

C'est plus direct car basiquement on applique moins de contrôle. Une conf postfix satellite avec chapril.org en mailname et mail.cluster.chapril.org en relais suffit plus quelques adaptations. Cf Installation d'un postfix en satellite.

Les adaptations :

/etc/postfix/main.cf
# On sert localement le domaine chapril.org
mydestination = $myhostname, sympa.cluster.chapril.org, localhost.cluster.chapril.org, localhost, chapril.org
 
# D'ailleurs on a plein d'utilisateurs locaux @chapril.org, regardez
alias_maps =     hash:/etc/aliases hash:/etc/aliases.local
alias_database = $alias_maps
 
# Mais en cas de doute on renvoit au relais
fallback_transport = smtp:[mail.cluster.chapril.org]
 
# On accepte de recevoir du mail depuis le relais
mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.57
inet_interfaces = all
 
# Reglages Sympa 
virtual_alias_maps = hash:/etc/mail/sympa/sympa-transports.map
transport_maps = regexp:/etc/postfix/sympa-transports.regex
 
sympaqueue_destination_recipient_limit = 1
sympabouncequeue_destination_recipient_limit = 1
On passe par des transports vers de nouveaux services et non par des alias car ça nous permet de contrôler l'uid du service dans master.cf. Cf https://agir.april.org/issues/3149
/etc/postfix/sympa-transports.regex
/^.*\@sympaqueue$/         sympaqueue:
/^.*\@sympabouncequeue$/   sympabouncequeue:
/etc/postfix/master.cf
# Sympa mailing list manager transports
sympaqueue       unix  -       n       n       -       -       pipe
  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}@${extension}
sympabouncequeue unix  -       n       n       -       -       pipe
  flags=RF user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${user}@${extension}
/etc/aliases.local
# default contact emails
postmaster:     listmaster@chapril.org
sympa-owner:    listmaster@chapril.org
sympa-request:  listmaster@chapril.org

Enfin, notre fichier de transports est ainsi fait (on voit sa construction juste après) :

/etc/mail/sympa/sympa-transports.map
## Généré automatiquement sur sympa.cluster.april.org via systemd (sympa-transports.path)
## Destiné à sympa.cluster.chapril.org:/etc/postfix/transports/
 
sympa@chapril.org sympa+chapril.org@sympaqueue.
 
## List aliases used for the sympa mailing-list manager
test@chapril.org test+chapril.org@sympaqueue.
test-request@chapril.org test-request+chapril.org@sympaqueue.
test-editor@chapril.org test-editor+chapril.org@sympaqueue.
#test-subscribe@chapril.org test-subscribe+chapril.org@sympaqueue.
test-unsubscribe@chapril.org test-unsubscribe+chapril.org@sympaqueue.
test-owner@chapril.org test+chapril.org@sympabouncequeue.

Construction du fichier d'aliases sur le guest

En fait sympa fait ça tout seul comme un grand si on lui demande.

/etc/sympa/sympa/sympa.conf
sendmail_aliases /etc/mail/sympa/aliases
alias_manager    /usr/lib/sympa/bin/alias_manager.pl

Il est poli et exécute newaliases quand il a fini.

Si d'aventure le format de ce qui est généré ne vous satisfait pas, le template à modifier c'est /usr/share/sympa/default/list_aliases.tt2

Ce fichier par défaut a les alias de type nomdelaliste-subscribe@ en commentaires. Or ce type d'alias est utile. Donc, copie du fichier /usr/share/sympa/default/list_aliases.tt2 dans /etc/sympa/list_aliases.tt2. Modifier du fichier pour avoir les alias subscribe. La régénération du fichier /etc/mail/sympa/aliases est faite à chaque création de nouvelle liste. Mais pour les listes déjà existantes les entrées dans le fichier ne sont pas modifiées. Il faut donc modifier manuellement ce fichier.

Maintenant il faut pousser cette conf proprement sur le relais.

Création et installation du fichier d'aliases sur le relais

On va se faire aider de systemd à l'aide d'une unit de type path. Cf https://www.redhat.com/sysadmin/introduction-path-units

Sur la machine guest

On va installer le programme suivant :

cat /usr/local/bin/alias_push.sh
#!/bin/bash
echo '## Généré automatiquement sur sympa.cluster.april.org via systemd (sympa-transports.path)' > /etc/mail/sympa/sympa.map
echo '## À copier dans mail.cluster.chapril.org:/etc/postfix/transports/' >> /etc/mail/sympa/sympa.map
awk -F ':' '$1 !~ "#" && $1 !~ "^ *$" {print $1 "@chapril.org\t smtp:[sympa.cluster.chapril.org]"} $1 ~ "#[-#]"{ print $0}' /etc/mail/sympa/aliases | column -t -s $'\t' >> /etc/mail/sympa/sympa.map
 
echo '## Généré automatiquement sur sympa.cluster.april.org via systemd (sympa-transports.path)' > /etc/mail/sympa/sympa-transports.map
echo '## Destiné à sympa.cluster.chapril.org:/etc/postfix/transports/' >> /etc/mail/sympa/sympa-transports.map
 
echo 'sympa@chapril.org sympa+chapril.org@sympaqueue.' >> /etc/mail/sympa/sympa-transports.map
sed -e 's/:/@chapril.org/' -e 's!"| /usr/lib/sympa/bin/\([^ ]\+\) \([^ @]\+\)@\([^" ]\+\)"!\2+\3@sympa\1.!' /etc/mail/sympa/aliases >> /etc/mail/sympa/sympa-transports.map
 
postmap /etc/mail/sympa/sympa-transports.map
 
scp /etc/mail/sympa/sympa.map mail.cluster.chapril.org:/etc/postfix/transports/sympa.map
 
export GIT_AUTHOR_EMAIL=sympa@chapril.org
export GIT_AUTHOR_NAME=Sympa
 
git -C /etc add /etc/mail/sympa/
git -C /etc commit -m 'MaJ des alias des listes'

ainsi que les units systemd suivantes :

/etc/systemd/system/sympa-transports.path
[Unit]
Description=Wait for new sympa transports
 
[Path]
PathChanged=/etc/mail/sympa/aliases
Unit=sympa-transports.service
 
[Install]
WantedBy=multi-user.target
/etc/systemd/system/sympa-transports.service
[Unit]
Description=Push sympa transports toward postfix
 
[Service]
Type=simple
ExecStart=/usr/local/bin/alias_push.sh
 
[Install]
WantedBy=multi-user.target

qu'on va penser à activer :

systemctl enable sympa-transports.path sympa-transports.service
systemctl start sympa-transports.path sympa-transports.service

Sur la machine relais

On va installer le programme suivant :

cat /usr/local/bin/alias_update.sh
#!/bin/bash
cd /etc/postfix && make && postfix reload
 
export GIT_AUTHOR_EMAIL=sympa@chapril.org
export GIT_AUTHOR_NAME=Sympa
 
git add transports/sympa.map transports/sympa.db
git commit -m 'MaJ des alias des listes'

ainsi que les units systemd suivantes :

/etc/systemd/system/sympa-transports.path
[Unit]
Description=Wait for new sympa transports
 
[Path]
PathChanged=/etc/postfix/transports/sympa.map
Unit=sympa-transports.service
 
[Install]
WantedBy=multi-user.target
/etc/systemd/system/sympa-transports.service
[Unit]
Description=Push sympa transports toward postfix
 
[Service]
Type=simple
ExecStart=/usr/local/bin/alias_update.sh
 
[Install]
WantedBy=multi-user.target

qu'on va penser à activer :

systemctl enable sympa-transports.path sympa-transports.service
systemctl start sympa-transports.path sympa-transports.service