Next Previous Contents

12. Attribution d'adresse dynamique

12.1 Principe

Vous pouvez redéfinir le nom de votre machine, tel qu'il apparaîtra dans les headers, pour qu'il corresponde exactement avec le nom que vous a attribué le FAI, pendant une connexion et ceci même si ce nom change à chaque connexion. Je me sers d'un truc trouvé dans le guide du rootard que j'ai très légèrement adapté ( http://www.linux-france.org/article/grl au chapitre 13.10 pour être précis). Le truc consiste à chaque connexion de lancer un petit programme gethost qui va déterminer le nom attribué à notre poste linux, on modifie dans la foulée le config.mc en conséquence, on regénère sendmail.cf, on kill sendmail et on le relance dans la foulée.

Pour cela on créera un programme gethost.c dont voici le contenu:

#include <stdio.h>  
#include <netdb.h> 
#include <arpa/inet.h> 
#include <string.h> 
int main(argc,argv) 
char argc; 
char *argv[]; 
{ 
       struct hostent *host; 
       struct in_addr ia; 
       if (argc < 2) { 
           fprintf(stderr,"Usage: %s adresse_IP_locale \  n",argv[0]); 
           exit(1); 
       } 
       if (!inet_aton (argv[1],&ia)) { 
         fprintf(stderr,"Erreur: adresse invalide \  n"); 
         exit(1); 
       } 
       host=gethostbyaddr((char*)&ia,sizeof(ia),AF_INET); 
       if (!host) { 
         fprintf(stderr,"Erreur: adresse non trouvée ou pas de DNS \  n"); 
         exit(1); 
       } 
       printf("%s \  n",host->h_name); 
       exit(0); 
} 
 

On le compile tout simplement en tapant:

gcc gethost.c -o gethost  
 

En tant que root, copiez l'exécutable gethost sous /usr/local/sbin (ou /usr/bin c'est vous qui voyiez...). Maintenant on va modifier /etc/ppp/ip-up qui est lancé à chaque début de connexion pour reconstruire le fichier de config de sendmail en fonction du nom déterminé par gethost et relancer sendmail.

#!/bin/bash  
# $4 correspond à l'adresse IP attribuée lors d'une connexion 
ADRESSE=$4 
# détermination du nom connaissant l'adresse IP 
HOST=`/usr/local/sbin/gethost $ADRESSE` 
# on modifie le fichier de config pour avoir le nom qui va bien (à noter que config.mc n'est jamais touché) 
if [ -n "$HOST" ] ; then 
   sed s/ppp.fai.fr/$HOST/ /usr/lib/sendmail-cf/cf/config.mc > 
   /usr/lib/sendmail-cf/cf/config.current.mc 
   # on regénère sendmail.cf 
   cd  /usr/lib/sendmail-cf/cf 
   m4 config.current.mc > /etc/sendmail.cf 
   # on tue sendmail 
   kill -1 `head -1 /var/run/sendmail.pid` 
   # on relance sendmail 
   /usr/sbin/sendmail -bd -os 
fi 
exit 0 
 

A la prochaine connexion, vous aurez donc un sendmail avec une config tip-top.

12.2 Au final

Au final, en prenant en compte la modification d'adresse dynamique, Voici un mail envoyé de mon poste linux:

------ Le serveur echo du domaine cnam.fr  
------ a recu votre message le mer  1 déc 18:08:00 MET 1999 

------ Ci-dessous les en-tetes et le corps de votre message 
 
> From [email protected]  Wed Dec  1 18:07:59 1999 
> Received: from mailhub1.isdnet.net (mailhub1.isdnet.net [195.154.209.21]) 
>         by fermi.cnam.fr (8.8.8/jpm-301097)  with ESMTP id SAA27323 
>         for <[email protected]>; Wed, 1 Dec 1999 18:07:59 +0100 (MET) 
> Return-Path: <[email protected]> 
> Received: from ppp7-brest.isdnet.net (ppp7-brest.isdnet.net [194.149.178.134]) 
>       by mailhub1.isdnet.net (8.9.3/8.9.3) with ESMTP id SAA18750 
>       for <[email protected]>; Wed, 1 Dec 1999 18:07:57 +0100 (CET) 
> Received: from fnac.net 
>         by fnac.net (8.9.3/8.9.3/Olivier Hoarau-992911) with ESMTP id SAA00908 
>         for <[email protected]>; Wed, 1 Dec 1999 18:08:06 +0100 
> Sender: [email protected] 
> Message-ID: <[email protected]> 
> Date: Wed, 01 Dec 1999 17:07:57 +0000 
> From: Olivier Hoarau <[email protected]> 
> Organization: FNAC.net 
> X-Mailer: Mozilla 4.61 [en] (X11; I; Linux 2.2.13-7mdk i586) 
> X-Accept-Language: fr, en 
> MIME-Version: 1.0 
> To: [email protected] 
> Subject: de tavel netscape 
> Content-Type: multipart/alternative; 
>  boundary="------------510B10AEB1791042330882C7" 

------

>
 mon texte 

------ Fin de votre message 
 

Envoyé d'un poste client sous Windows:

------ Le serveur echo du domaine cnam.fr  
------ a recu votre message le mer  1 déc 18:08:00 MET 1999 
 
------ Ci-dessous les en-tetes et le corps de votre message 
 
> From [email protected]  Wed Dec  1 18:07:58 1999 
> Received: from mailhub1.isdnet.net (mailhub1.isdnet.net [195.154.209.21]) 
>         by fermi.cnam.fr (8.8.8/jpm-301097)  with ESMTP id SAA27306 
>         for <[email protected]>; Wed, 1 Dec 1999 18:07:58 +0100 (MET) 
> Return-Path: <[email protected]> 
> Received: from ppp7-brest.isdnet.net (ppp7-brest.isdnet.net [194.149.178.134]) 
>       by mailhub1.isdnet.net (8.9.3/8.9.3) with ESMTP id SAA18743 
>       for <[email protected]>; Wed, 1 Dec 1999 18:07:56 +0100 (CET) 
> Received: from fnac.net 
>         by fnac.net (8.9.3/8.9.3/Olivier Hoarau-992911) with ESMTP id SAA00910 
>         for <[email protected]>; Wed, 1 Dec 1999 18:08:31 +0100 
> Message-ID: <[email protected]> 
> Date: Wed, 01 Dec 1999 18:05:20 +0100 
> From: Olivier Hoarau <[email protected]> 
> Organization: FNAC net 
> X-Mailer: Mozilla 4.61 [en] (Win95; I) 
> X-Accept-Language: fr-FR,en 
> MIME-Version: 1.0 
> To: [email protected] 
> Subject: shuttle 
> Content-Type: text/plain; charset=us-ascii 
> Content-Transfer-Encoding: 7bit 
 
------ 
 
texte 
 
------ Fin de votre message 
 

Vous noterez que nulle part on voit la mention de mon domaine privé et encore moins mes adresses IP privées. A noter aussi que je n'ai pas eu à lancer mon script pour corriger le champ Message-Id. J'avais le problème avec la précédente version de la Mandrake mais plus avec celle-ci mais en ayant la même version de sendmail, va comprendre ! Je laissse néanmoins le script au cas où.


Next Previous Contents