Tâche #9817
Scénario #9766: Revoir les règles de réécritures
Définir les règles de réécriture de type "enveloppe" et de type "header"
Demandes liées
Révisions associées
Mise à plat des règles de réécriture
La réécriture n’est appliquée qu’aux messages locaux (maître et
conteneurs) et aux messages des machines qui sont relayés par le
serveur (« exim_relay_dhcp », « exim_relay_cidrv4 » et
« exim_relay_cidrv6 »).
Il faut donc prendre soin d’utiliser des conditions afin de discriminer
les règles en fonction des besoins.
Il n’est pas possible de savoir depuis quel conteneur les messages
systèmes sont envoyés.
La réécriture des adresses doit prendre en compte la distinction entre
l’enveloppe SMTP (« MAIL FROM » et « RCPT TO ») et les entêtes des
messages (« From: », « Reply-To:», « To: », « Cc: », « Bcc: »).
Les adresses électroniques systèmes ont par défaut une des formes
suivante :
- « user@%%domaine_messagerie_etab » si l’expéditeur ne précise pas le
nom de domaine, par exemple:
root@internet:~# echo "Test" | mail -s "Test mail from shell" -r root root
- « user@%%nom_machine.%%domaine_messagerie_etab » pour le maître si
l’expéditeur utilise la configuration définie dans /etc/mailname
- « user@%%conteneur.%%nom_machine.%%domaine_messagerie_etab » pour les
conteneurs si l’expéditeur utilise la configuration définie dans
/etc/mailname
Si la valeur de « %%nom_domaine_local » est différente de la valeur de
« %%domaine_messagerie_etab », alors on force les formes suivantes pour
le maître et les conteneurs uniquement :
- « user@%%nom_machine.%%domaine_messagerie_etab » pour le maître
- « user@%%conteneur.%%nom_machine.%%domaine_messagerie_etab » pour les
conteneurs
Les adresses destinataire « root@%%nom_domaine_local » et
« root@%%domaine_messagerie_etab » sont remplacées par
« %%system_mail_to » si elle est définie.
Les adresses expéditeurs et destinataires systèmes sont ensuite
réécrites selon les tableau suivants en fonction de variables expertes :
- « system_mail_from_for_headers » : écraser les
entêtes « From: », « Reply-To: » et « Sender: » du message, par déf
aut à « non »
- « system_mail_to_for_headers » : écraser les entêtes « To: », « Cc: »
et « Bcc: » du message, par défaut à « non ».
Réécriture de l’expéditeur :
| system_mail_from_for_headers=non | system_mail_from_for_headers=oui | |
| -----------+----------------------------------+---------------------------------- | ||
| MAIL FROM | system_mail_from | system_mail_from |
| From: | user@conteneur.machine.domaine | system_mail_from |
| Reply-To: | user@conteneur.machine.domaine | system_mail_from |
| Sender: | user@conteneur.machine.domaine | system_mail_from |
Réécriture du destinataire :
| system_mail_to_for_headers=non | system_mail_to_for_headers=oui | |
| ---------+--------------------------------+-------------------------------- | ||
| RCPT TO | system_mail_to | system_mail_to |
| To: | user@conteneur.machine.domaine | system_mail_to |
| Cc: | user@conteneur.machine.domaine | system_mail_to |
| Bcc: | user@conteneur.machine.domaine | system_mail_to |
- tmpl/mailname: Utiliser « nom_conteneur.nom_machine » pour les
conteneurs et « nom_machine » pour le maître.
- tmpl/ssmtp.conf: Idem.
- dicos/26_mail.xml: Définition de deux nouvelles variables expertes
« system_mail_from_for_headers » et « system_mail_to_for_headers ».
- exim4/exim4.conf: Authoriser les adresses sans domaine sur la macro
« UNQUALIFIED_HOSTS ».
- tmpl/exim-vars.conf: Définir « UNQUALIFIED_HOSTS » à la valeur du
réseau des conteneurs.
- tmpl/exim-rewrite.conf: Forcer la forme des adresses expéditeurs et
destinataires si « nom_domaine_local » est différent de
« domaine_messagerie_etab ».
Définition des règles de réécritures des adresses par groupe de
conteneurs.
Ref: #9817 @1h
Protège l’accès à system_mail_from et system_mail_to
- tmpl/exim-rewrite.conf: Cheetah ne peut pas concaténer une chaîne avec
None, il faut donc ajouter des tests afin de savoir si les variables
sont définies.
Ref: #9817 @15m
Historique
#1 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Statut changé de Nouveau à En cours
#2 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Assigné à mis à Daniel Dehennin
#3 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Restant à faire (heures) changé de 6.0 à 1.0
#4 Mis à jour par Daniel Dehennin il y a plus de 11 ans
Mise à plat des règles de réécriture
ATTENTION: La réécriture est appliquée aux messages locaux (maître et conteneurs) et aux messages des machines qui sont relayés par le serveur (exim_relay_dhcp, exim_relay_cidrv4 et exim_relay_cidrv6). Il faut donc prendre soin d’utiliser des conditions afin de discriminer les règles en fonction des besoins.
Il est nécessaire de savoir depuis quel conteneur les messages systèmes sont envoyés.
La réécriture des adresses doit prendre en compte la distinction entre l’enveloppe SMTP (MAIL FROM et RCPT TO) et les entêtes des messages (From:, Reply-To:, Sender:, To:, Cc:, Bcc:).
Les adresses électroniques systèmes ont par défaut une des formes suivante :
user@domaine_messagerie_etabsi l’expéditeur ne précise pas le nom de domaine, par exemple:root@internet:~# echo "Ceci est un message de test" | mail -s "Test mail from shell" -r root root
user@nom_machine.domaine_messagerie_etabpour le maître si l’expéditeur utilise la configuration définie dans/etc/mailnameuser@conteneur.nom_machine.domaine_messagerie_etabpour les conteneurs si l’expéditeur utilise la configuration définie dans/etc/mailname
Si la valeur de nom_domaine_local est différente de la valeur de domaine_messagerie_etab, alors on force les formes suivantes pour le maître et les conteneurs uniquement :
user@nom_machine.domaine_messagerie_etabpour le maîtreuser@conteneur.nom_machine.domaine_messagerie_etabpour les conteneurs
Les adresses destinataire root@nom_domaine_local et root@domaine_messagerie_etab sont remplacées par system_mail_to si elle est définie.
Les adresses expéditeurs et destinataires systèmes sont réécrites selon les tableau suivants en fonction de nouvelles variables expertes :
system_mail_from_for_headers: écraser les entêtesFrom:,Reply-To:etSender:du message, par défaut ànonsystem_mail_to_for_headers: écraser les entêtesTo:,Cc:etBcc:du message, par défaut ànon.
Réécriture de l’expéditeur :
system_mail_from_for_headers=non |
system_mail_from_for_headers=oui |
|
|---|---|---|
| MAIL FROM | system_mail_from |
system_mail_from |
| From: | user@conteneur.machine.domaine |
system_mail_from |
| Reply-To: | user@conteneur.machine.domaine |
system_mail_from |
| Sender: | user@conteneur.machine.domaine |
system_mail_from |
Réécriture du destinataire :
system_mail_to_for_headers=non |
system_mail_to_for_headers=oui |
|
|---|---|---|
| RCPT TO | system_mail_to |
system_mail_to |
| To: | user@conteneur.machine.domaine |
system_mail_to |
| Cc: | user@conteneur.machine.domaine |
system_mail_to |
| Bcc: | user@conteneur.machine.domaine |
system_mail_to |
#5 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Statut changé de En cours à Résolu
#6 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- % réalisé changé de 0 à 100
#7 Mis à jour par Daniel Dehennin il y a plus de 11 ans
echo "Ceci est un message de test" | mail -s "Test mail sans domaine" -r root -c root -b root root
echo "Ceci est un message de test" | mail -s "Test mail sans domaine" -r uucp -c uucp -b uucp uucp
DOMAIN=$(CreoleGet nom_domaine_local) echo "Ceci est un message de test" | mail -s "Test mail nom_domaine_local" -r root@$DOMAIN -c root@DOMAIN -b root@DOMAIN root@DOMAIN
DOMAIN=$(CreoleGet nom_domaine_local) echo "Ceci est un message de test" | mail -s "Test mail nom_domaine_local" -r uucp@$DOMAIN -c uucp@DOMAIN -b uucp@DOMAIN uucp@DOMAIN
DOMAIN=$(CreoleGet domaine_messagerie_etab) echo "Ceci est un message de test" | mail -s "Test mail domaine_messagerie_etab" -r root@$DOMAIN -c root@DOMAIN -b root@DOMAIN root@DOMAIN
DOMAIN=$(CreoleGet domaine_messagerie_etab) echo "Ceci est un message de test" | mail -s "Test mail domaine_messagerie_etab" -r uucp@$DOMAIN -c uucp@DOMAIN -b uucp@DOMAIN uucp@DOMAIN
DOMAIN="$(CreoleGet nom_machine).$(CreoleGet nom_domaine_local)" echo "Ceci est un message de test" | mail -s "Test mail domaine_messagerie_etab" -r root@$DOMAIN -c root@DOMAIN -b root@DOMAIN root@DOMAIN
DOMAIN="$(CreoleGet nom_machine).$(CreoleGet nom_domaine_local)" echo "Ceci est un message de test" | mail -s "Test mail domaine_messagerie_etab" -r uucp@$DOMAIN -c uucp@DOMAIN -b uucp@DOMAIN uucp@DOMAIN
DOMAIN="$(CreoleGet nom_machine).$(CreoleGet domaine_messagerie_etab)" echo "Ceci est un message de test" | mail -s "Test mail domaine_messagerie_etab" -r root@$DOMAIN -c root@DOMAIN -b root@DOMAIN root@DOMAIN
DOMAIN="$(CreoleGet nom_machine).$(CreoleGet domaine_messagerie_etab)" echo "Ceci est un message de test" | mail -s "Test mail domaine_messagerie_etab" -r uucp@$DOMAIN -c uucp@DOMAIN -b uucp@DOMAIN uucp@DOMAIN
#8 Mis à jour par Fabrice Barconnière il y a plus de 11 ans
- Statut changé de Résolu à Reporté
- Restant à faire (heures) changé de 1.0 à 0.0
#9 Mis à jour par Daniel Dehennin il y a plus de 11 ans
- Statut changé de Reporté à Fermé
Les tests seront écris et effectués dans le sprint 2014 50-51 Eq 1