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 [2018/07/17 17:51] – [guest -> relais] 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. Pour éviter la confusion on nommera //guest// la machine hébergeant le sympa et on nommera //relais// la machine hébergeant le postfix frontal.+===== Création d'une liste =====
  
-<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> +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]].
-===== relais -> guest =====+
  
-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.)) : 
 +<code /etc/postfix/transports/slow_domains.map>
 aliceadsl.fr slow: aliceadsl.fr slow:
 free.fr slow: free.fr slow:
Ligne 34: Ligne 131:
 yahoo.fr 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] sympa-owner@chapril.org      smtp:[sympa.cluster.chapril.org]
 </code> </code>
-  - ''sympa''c'est là que les sont les transports spécifiques aux listesOn 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 50: 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 plus quelques adaptations. Cf [[admin:procedures:installation_postfix_satellite|Installation d'un postfix en satellite]].+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.
  
 Les adaptations : Les adaptations :
-<code conf /etc/postfix/main.cf>+<code /etc/postfix/main.cf>
 # On sert localement le domaine chapril.org # On sert localement le domaine chapril.org
 mydestination = $myhostname, sympa.cluster.chapril.org, localhost.cluster.chapril.org, localhost, 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 # D'ailleurs on a plein d'utilisateurs locaux @chapril.org, regardez
-alias_maps =     hash:/etc/aliases hash:/etc/aliases.local hash:/etc/mail/sympa/aliases+alias_maps =     hash:/etc/aliases hash:/etc/aliases.local
 alias_database = $alias_maps alias_database = $alias_maps
  
Ligne 69: Ligne 170:
 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.57 mynetworks = 127.0.0.0/8 [::ffff:127.0.0.0]/104 [::1]/128 192.168.1.57
 inet_interfaces = all 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>
-===== guest -> sympa ===== 
  
-Là on retrouve la configuration d'un sympa classique, notamment :+<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/aliases hash:/etc/aliases.local hash:/etc/mail/sympa/aliases+/^.*\@sympaqueue$        sympaqueue: 
 +/^.*\@sympabouncequeue$  sympabouncequeue:
 </code> </code>
  
-Notre fichier d'aliases est ainsi fait (on voit sa construction juste après) : +<code /etc/postfix/master.cf
-<code conf /etc/mail/sympa/aliases+Sympa mailing list manager transports 
-## List aliases used for the sympa mailing-list manager +sympaqueue       unix        n                         pipe 
-test: "| /usr/lib/sympa/bin/queue test@chapril.org" +  flags=RF user=sympa argv=/usr/lib/sympa/bin/queue ${user}@${extension} 
-test-request: "| /usr/lib/sympa/bin/queue test-request@chapril.org" +sympabouncequeue unix        n                   -       pipe 
-test-editor: "/usr/lib/sympa/bin/queue test-editor@chapril.org" +  flags=RF user=sympa argv=/usr/lib/sympa/bin/bouncequeue ${user}@${extension}
-#test-subscribe: "| /usr/lib/sympa/bin/queue test-subscribe@chapril.org" +
-test-unsubscribe: "| /usr/lib/sympa/bin/queue test-unsubscribe@chapril.org" +
-test-owner: "/usr/lib/sympa/bin/bouncequeue test@chapril.org"+
 </code> </code>
-et + 
-<code conf /etc/aliases.local>+ 
 +<code /etc/aliases.local>
 # default contact emails # default contact emails
 postmaster:     listmaster@chapril.org postmaster:     listmaster@chapril.org
 sympa-owner:    listmaster@chapril.org sympa-owner:    listmaster@chapril.org
 sympa-request:  listmaster@chapril.org sympa-request:  listmaster@chapril.org
-sympa:          "/usr/lib/sympa/bin/queue sympa@chapril.org"+</code>
  
-listmaster    smtp:[mail.cluster.chapril.org]+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> </code>
  
-====== Construction du fichier d'aliases sur le guest ======+===== Construction du fichier d'aliases sur le guest =====
  
-En fait sympa fait ça tout seul comme un grand si on lui demande. +En fait Sympa fait ça tout seul comme un grand si on lui demande. 
-<code conf /etc/sympa/sympa/sympa.conf>+ 
 +<code /etc/sympa/sympa/sympa.conf>
 sendmail_aliases /etc/mail/sympa/aliases sendmail_aliases /etc/mail/sympa/aliases
 alias_manager    /usr/lib/sympa/bin/alias_manager.pl alias_manager    /usr/lib/sympa/bin/alias_manager.pl
 </code> </code>
  
-Il est poli et exécute newaliases quand il a fini.+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''.
  
-<note tip>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. 
 +Donccopier 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> </note>
  
-Maintenant il faut pousser cette conf proprement sur le relais.+Maintenant il faut pousser cette configuration proprement sur ''relais''.
  
-====== Création et installation du fichier d'aliases sur le relais ======+===== Création et installation du fichier d'aliases sur le relais =====
  
 <note tip> <note tip>
-On va se faire aider de incron, qu'on va installer sur les deux machines. Incron permet de surveiller un évènement sur un fichier et de déclencher une action. +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]]//
-Pour l'installer : +
-  apt install incron +
-puis simplement ajouter 'rootdans ''/etc/incron.allow''.+
 </note> </note>
  
-===== Sur la machine guest =====+==== Sur la machine guest ====
  
 On va installer le programme suivant : On va installer le programme suivant :
-<code bash /usr/local/bin/alias_push.sh>+<file bash /usr/local/bin/alias_push.sh>
 #!/bin/bash #!/bin/bash
-echo '## Généré automatiquement sur sympa.cluster.april.org via incron' > /etc/mail/sympa/sympa.map+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 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 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 scp /etc/mail/sympa/sympa.map mail.cluster.chapril.org:/etc/postfix/transports/sympa.map
-cd /etc + 
-git add /etc/mail/sympa/sympa.map /etc/mail/sympa/aliases /etc/mail/sympa/aliases.db +export GIT_AUTHOR_EMAIL=sympa@chapril.org 
-git commit -m 'MaJ des alias des listes' +export GIT_AUTHOR_NAME=Sympa 
-</code+ 
-ainsi que la directive incron suivante +git -C /etc add /etc/mail/sympa/ 
-<code conf /etc/incron.d/sympa > +git -C /etc commit -m 'MaJ des alias des listes' 
-/etc/mail/sympa/aliases IN_MODIFY,IN_NO_LOOP /usr/local/bin/alias_push.sh+</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>
-qu'on va penser à rendre exécutable : 
-  chown a+x /usr/local/bin/alias_push.sh 
  
-Puis on redémarre incron : +<code ini /etc/systemd/system/sympa-transports.service > 
-  systemctl restart incron+[Unit] 
 +Description=Push sympa transports toward postfix
  
-===== Sur la machine relais =====+[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 : On va installer le programme suivant :
-<code bash cat /usr/local/bin/alias_update.sh >+<file bash /usr/local/bin/alias_update.sh>
 #!/bin/bash #!/bin/bash
 cd /etc/postfix && make && postfix reload 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 add transports/sympa.map transports/sympa.db
 git commit -m 'MaJ des alias des listes' 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>
-ainsi que la directive incron suivante : 
-<code conf /etc/incron.d/sympa > 
-/etc/postfix/transports/sympa.map IN_MODIFY,IN_NO_LOOP /usr/local/bin/alias_update.sh 
-</code> 
-qu'on va penser à rendre exécutable : 
-  chown a+x /usr/local/bin/alias_update.sh 
  
-Puis on redémarre incron : +<code ini /etc/systemd/system/sympa-transports.service> 
-  systemctl restart incron+[Unit] 
 +Description=Push sympa transports toward postfix
  
 +[Service]
 +Type=simple
 +ExecStart=/usr/local/bin/alias_update.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>
admin/infrastructure/sympa.1531849876.txt.gz · Dernière modification : 2018/07/17 17:51 de fpoulain