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"
Related issues
Associated revisions
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
History
#1 Updated by Daniel Dehennin over 6 years ago
- Status changed from Nouveau to En cours
#2 Updated by Daniel Dehennin over 6 years ago
- Assigned To set to Daniel Dehennin
#3 Updated by Daniel Dehennin over 6 years ago
- Remaining (hours) changed from 6.0 to 1.0
#4 Updated by Daniel Dehennin over 6 years ago
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_etab
si 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_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îtreuser@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 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 ànon
system_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 Updated by Daniel Dehennin over 6 years ago
- Status changed from En cours to Résolu
#6 Updated by Daniel Dehennin over 6 years ago
- % Done changed from 0 to 100
#7 Updated by Daniel Dehennin over 6 years ago
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 Updated by Fabrice Barconnière over 6 years ago
- Status changed from Résolu to Reporté
- Remaining (hours) changed from 1.0 to 0.0
#9 Updated by Daniel Dehennin over 6 years ago
- Status changed from Reporté to Fermé
Les tests seront écris et effectués dans le sprint 2014 50-51 Eq 1