Outils pour utilisateurs

Outils du site


admin:infrastructure:sympa

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentesRévision précédente
Prochaine révision
Révision précédente
admin:infrastructure:sympa [2017/06/24 14:52] – [relais -> guest] fpoulainadmin:infrastructure:sympa [2026/03/03 22:53] (Version actuelle) – Correction typographique fhenry2
Ligne 1: Ligne 1:
-====== Interconnexion entre sympa et postfix ======+====== Service Listes ======
  
-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.+===== Création d'une liste =====
  
-===== relais -> guest =====+Pour créer une liste il faut utiliser l'interface WWSympa depuis la page de [[https://listes.chapril.org/sympa/create_list_request|requête de création de liste]].
  
-Pour que le relais transmette les emails au bon guest, il faut installer les bons transports. +Pour une liste de type support, il faut choisir le modèle //Template pour une liste de type support// qui contient notamment des éléments de configuration en lien avec la gestion des adresses en erreur. 
-<code conf /etc/postfix/conf.d/40-sympa.conf>+Voir le [[https://agir.april.org/issues/5692|ticket n°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 bas de la liste. 
 + 
 +Ajouter une //description// courte. 
 + 
 +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// puis //Abonnés//
 +Mettre aussi ces adresses en //Propriétaires de la liste//, dans l'onglet //Les utilisateurs// puis //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 modèle //Template pour une liste de type support// procéder comme suit : 
 +<code bash> 
 +mkdir -p /etc/sympa/create_list_templates/liste-support/ 
 +cp /usr/share/doc/sympa/examples/samples/intranet/create_list_templates/intranet_list/{comment,config}.tt2 \ 
 +/etc/sympa/create_list_templates/liste-support/ 
 +</code> 
 + 
 +Ces deux copies peuvent être éditées pour personnaliser le modèle. 
 + 
 +===== 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. 
 +Cela induit en erreur la personne qui, du coup, peut ne pas valider l'inscription. 
 + 
 +La personne reçoit deux courriels. 
 +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//. 
 + 
 +C'est exactement le même souci qu'avec l’instance Sympa de l'April, comme indiqué au [[https://agir.april.org/issues/5736|ticket n°5736]]. 
 + 
 +On applique la même résolution que pour l’instance Sympa de l'April : 
 +<code bash> 
 +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 
 +</code> 
 +<code> 
 +-> 2810 messages traduits, 1 traduction approximative, 1 message non traduit. 
 +</code> 
 + 
 +En comparant au fichier qui est livré avec le paquet Debian : 
 +<code bash> 
 +diff -u /usr/share/locale/fr/LC_MESSAGES/sympa.mo fr.mo 
 +</code> 
 +<code> 
 +fichier identique (parfait) 
 +</code> 
 + 
 +On peut donc modifier le fichier ''fr.po'' pour remplacer la chaîne et avoir un nouveau fichier MO : 
 +<code bash> 
 +cp fr.po fr.po.orig 
 +vi fr.po 
 +diff -u fr.po.orig fr.po 
 +</code> 
 +<code> 
 +-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."  
 +</code> 
 +<code bash> 
 +msgfmt -c -o fr.mo -v fr.po 
 +</code> 
 + 
 +On met en production : 
 +<code bash> 
 +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 
 +</code> 
 +   
 +===== Interconnexion entre Sympa et Postfix ===== 
 + 
 +Pour rappel on a une architecture avec un relais courriel qui gère tout ce qui entre ou sort du //cluster// au niveau du courriel. 
 +Le service Listes est installé sur une VM séparée. 
 +Pour éviter la confusion on nommera ''guest'' la machine hébergeant Listes et on nommera ''relais'' la machine hébergeant l’instance Postfix frontale. 
 + 
 +<note important> 
 +On est ici dans une documentation //a posteriori// d'un truc un peu //touchy//, donc il est possible que des erreurs subsistent. 
 +</note> 
 + 
 +==== Postfix coté relais ==== 
 + 
 +Pour que la VM ''relais'' transmette les courriel à ''guest'', il faut installer les bons transports. 
 + 
 +<code /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 transport_maps = hash:/etc/postfix/transports/sympa, hash:/etc/postfix/transports/slow_domains, hash:/etc/postfix/transports/sympa-static
 </code> </code>
  
-Par ailleurs il faut que le relais reconnaisse les transports comme des destinataires valides. Nous avons donc +Par ailleurs il faut que ''relais'' reconnaisse les transports comme des destinataires valides. 
-<code conf /etc/postfix/conf.d/42-recipients.conf >+Nous avons donc cette ligne : 
 +<code /etc/postfix/conf.d/42-recipients.conf >
 local_recipient_maps = proxy:unix:passwd.byname $alias_maps $transport_maps local_recipient_maps = proxy:unix:passwd.byname $alias_maps $transport_maps
 </code> </code>
  
-Examinons les définitions des transports : +On examine les définitions des transports : 
-  - ''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 foisCe n'est pas à proprement parler essentiel à sympa, mais de fait le besoin s'en fait largement sentir lorsqu'un sympa est installé.<code conf /etc/postfix/transports/slow_domains.map > +  - ''slow_domains'' : pour limiter le débit de soumission des courriels à des domaines pauvres comme ''laposte.net'' qui n'ont pas les moyens d'encaisser plus d’un courriel à la fois((Ce n'est pas à proprement parler essentiel à Sympa, mais de fait le besoin s'en fait largement sentir lorsqu’une instance de Sympa est déployée.)) : 
-orange.fr slow:+<code /etc/postfix/transports/slow_domains.map> 
 +aliceadsl.fr slow: 
 +free.fr slow: 
 +hotmail.com slow: 
 +hotmail.fr slow: 
 +infonie.fr slow:
 laposte.net slow: laposte.net slow:
-wanadoo.fr slow: +libertysurf.fr slow: 
-yahoodns.net slow:+live.com slow:
 live.fr slow: live.fr slow:
 +orange.com slow:
 +orange.fr slow:
 +wanadoo.com slow:
 +wanadoo.fr slow:
 +yahoo.com slow:
 +yahoo.fr slow:
 </code> </code>
-  - ''sympa-static'' : les adresses de services pour le sympa.<code conf /etc/postfix/transports/sympa-static.map >+  - ''sympa-static'' : les adresses de services pour Sympa : 
 +<code /etc/postfix/transports/sympa-static.map>
 sympa@chapril.org            smtp:[sympa.cluster.chapril.org] sympa@chapril.org            smtp:[sympa.cluster.chapril.org]
 sympa-request@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]
 </code> </code>
-  - ''sympa''c'est là que les choses sont. On verra plus tard sa fabrication.<code conf /etc/postfix/transports/sympa.map> +  - ''sympa'' :les transports spécifiques aux listes((On verra plus tard sa fabrication.)) : 
-## Généré automatiquement sur sympa.cluster.april.org via incron+<code /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/ ## À copier dans mail.cluster.chapril.org:/etc/postfix/transports/
 ## List aliases used for the sympa mailing-list manager ## List aliases used for the sympa mailing-list manager
Ligne 38: Ligne 149:
 </code> </code>
  
-====guest -> relais =====+==== 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.+C'est plus direct car basiquement on applique moins de contrôle. 
 +Une configuration Postfix satellite avec ''chapril.org'' en //mailname// et ''mail.cluster.chapril.org'' en ''relais'' suffit selon l’[[admin:procedures:installation_postfix_satellite|Installation de Postfix en satellite]]. 
 +Ne restent plus que quelques adaptations.
  
-===== guest -> sympa =====+Les adaptations : 
 +<code /etc/postfix/main.cf> 
 +# On sert localement le domaine chapril.org 
 +mydestination = $myhostname, sympa.cluster.chapril.org, localhost.cluster.chapril.org, localhost, chapril.org
  
-Là on retrouve la configuration d'un sympa classiquenotamment :+# D'ailleurs on a plein d'utilisateurs locaux @chapril.orgregardez 
 +alias_maps =     hash:/etc/aliases hash:/etc/aliases.local 
 +alias_database = $alias_maps
  
-<code conf master.cf> +# Mais en cas de doute on renvoit au relais 
-Services Pour sympa +fallback_transport = smtp:[mail.cluster.chapril.org] 
-sympa   unix        -           pipe + 
-    flags=R user=sympa argv=/usr/lib/sympa/bin/queue ${recipient} +On accepte de recevoir du mail depuis le relais 
-sympabounce unix      n         pipe +mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.57 
-    flags=R user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${recipient}+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
 </code> </code>
  
-et+<note important> 
 +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''
 +Se référer au [[https://agir.april.org/issues/3149|ticket n°3149]]. 
 +</note>
  
-<code conf main.cf+<code - /etc/postfix/sympa-transports.regex
-alias_maps = [...] hash:/etc/mail/sympa/aliases+/^.*\@sympaqueue$/         sympaqueue: 
 +/^.*\@sympabouncequeue$  sympabouncequeue: 
 +</code>
  
-[...]+<code - /etc/postfix/master.cf> 
 +# Sympa mailing list manager transports 
 +sympaqueue       unix  -                               pipe 
 +  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}@${extension} 
 +sympabouncequeue unix  -                               pipe 
 +  flags=RF user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${user}@${extension} 
 +</code> 
 + 
 + 
 +<code - /etc/aliases.local> 
 +# default contact emails 
 +postmaster:     listmaster@chapril.org 
 +sympa-owner:    listmaster@chapril.org 
 +sympa-request:  listmaster@chapril.org 
 +</code> 
 + 
 +Enfin, notre fichier de transports est ainsi fait (on voit sa construction juste après) : 
 +<code - /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. 
 +</code> 
 + 
 +===== Construction du fichier d'aliases sur le guest ===== 
 + 
 +En fait Sympa fait ça tout seul comme un grand si on lui demande. 
 + 
 +<code - /etc/sympa/sympa/sympa.conf> 
 +sendmail_aliases /etc/mail/sympa/aliases 
 +alias_manager    /usr/lib/sympa/bin/alias_manager.pl 
 +</code> 
 + 
 +Il est poli et exécute ''newaliases'' quand il a fini. 
 + 
 +<note tip> 
 +Si d'aventure le format de ce qui est généré ne vous satisfait pas, le modèle à modifier 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, copier le fichier ''/usr/share/sympa/default/list_aliases.tt2'' dans ''/etc/sympa/list_aliases.tt2''
 +Modifier cette copie 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. 
 +</note> 
 + 
 +Maintenant il faut pousser cette configuration proprement sur ''relais''
 + 
 +===== Création et installation du fichier d'aliases sur le relais ===== 
 + 
 +<note tip> 
 +On va se faire aider de Systemd à l'aide d'une //unit// de type ''path''
 +Se référer à //[[https://www.redhat.com/en/blog/introduction-path-units|RedHat : A brief introduction to path units]]// 
 +</note> 
 + 
 +==== Sur la machine guest ==== 
 + 
 +On va installer le programme suivant : 
 +<file bash /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' 
 +</file> 
 + 
 +Ainsi que les //units// suivantes de Systemd : 
 +<code ini /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 
 +</code> 
 + 
 +<code ini /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 
 +</code> 
 + 
 +Ce qu'on va penser à activer : 
 +<code bash> 
 +systemctl enable sympa-transports.path sympa-transports.service 
 +systemctl start sympa-transports.path sympa-transports.service 
 +</code> 
 +   
 +==== Sur la machine relais ==== 
 + 
 +On va installer le programme suivant : 
 +<file bash /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' 
 +</file> 
 + 
 +Ainsi que les //units// suivantes de Systemd : 
 +<code ini /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 
 +</code> 
 + 
 +<code ini /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 
 +</code>
  
-# Un seul envoi/destinataire envoyé aux services sympa* à la fois +Ce qu'on va penser à activer : 
-sympa_destination_recipient_limit = 1 +<code bash> 
-sympabounce_destination_recipient_limit = 1+systemctl enable sympa-transports.path sympa-transports.service 
 +systemctl start sympa-transports.path sympa-transports.service
 </code> </code>
admin/infrastructure/sympa.1498315936.txt.gz · Dernière modification : 2017/06/24 14:52 de fpoulain