Project

General

Profile

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"

Added by Emmanuel GARETTE over 6 years ago. Updated over 6 years ago.

Status:
Fermé
Priority:
Normal
Assigned To:
Start date:
10/31/2014
Due date:
% Done:

100%

Estimated time:
6.00 h
Spent time:
Remaining (hours):
0.0

Related issues

Related to Distribution EOLE - Tâche #9834: Répondre au message de JMM Fermé 11/17/2014
Copied to eole-exim - Tâche #9990: Exim : documenter les règles de réécriture de type "enveloppe" et de type "header" Fermé 04/27/2015

Associated revisions

Revision 76bc7e4d (diff)
Added by Daniel Dehennin over 6 years ago

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: system_mail_from
Reply-To: system_mail_from
Sender: 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: system_mail_to
Cc: system_mail_to
Bcc: 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

Revision 48de2058 (diff)
Added by Daniel Dehennin over 6 years ago

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î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 réécrites selon les tableau suivants en fonction de nouvelles variables expertes :

  • system_mail_from_for_headers : écraser les entêtes From:, Reply-To: et Sender: du message, par défaut à 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

#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

Test à effectuer, sur le maître, dans les conteneurs, sur une machine non conteneurs et depuis une machine relayée :
  1. echo "Ceci est un message de test" | mail -s "Test mail sans domaine" -r root -c root -b root root
    
  2. echo "Ceci est un message de test" | mail -s "Test mail sans domaine" -r uucp -c uucp -b uucp uucp
    
  3. 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
    
  4. 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
    
  5. 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
    
  6. 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
    
  7. 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
    
  8. 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
    
  9. 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
    
  10. 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

Also available in: Atom PDF