Dernière modification 7.12.03
#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/share/sendmail-cf/cf/config.mc >
/usrshare/sendmail-cf/cf/config.current.mc
# on regénère
sendmail.cf
cd /usr/share/sendmail-cf/cf
m4 config.current.mc > /etc/sendmail.cf
# on tue sendmail
kill -1 `head -1 /var/run/sendmail.pid`
# Si nécessaire on appelle le script
chg-message
# pour que le Message-Id et le Sender soit correct
# /usr/sbin/chg-message
# on relance sendmail
/usr/sbin/sendmail -bd -os
fi
exit 0
Autre solution beaucoup plus simple, si vous voulez pas vous embêter avec un programme C, remplacer la ligne HOST par:
HOST=`(nslookup $ADRESSE|grep Name:|sed 's/Name:*//')`
A la prochaine connexion, vous aurez donc un sendmail avec une config tip-top. Voilà 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 olivier.hoarau@fnac.net 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
<echo@cnam.fr>; Wed, 1 Dec 1999 18:07:59 +0100 (MET)
> Return-Path: <olivier.hoarau@fnac.net>
> 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 <echo@cnam.fr>;
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
<echo@cnam.fr>; Wed, 1 Dec 1999 18:08:06 +0100
> Sender: olivier.hoarau@fnac.net
> Message-ID: <384555EA.84111C99@fnac.net>
> Date: Wed, 01 Dec 1999 17:07:57 +0000
> From: Olivier Hoarau <olivier.hoarau@fnac.net>
> 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: echo@cnam.fr
> 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 olivier.hoarau@fnac.net 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
<echo@cnam.fr>; Wed, 1 Dec 1999 18:07:58 +0100 (MET)
> Return-Path: <olivier.hoarau@fnac.net>
> 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 <echo@cnam.fr>;
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
<echo@cnam.fr>; Wed, 1 Dec 1999 18:08:31 +0100
> Message-ID: <3845554F.7814F4EB@fnac.net>
> Date: Wed, 01 Dec 1999 18:05:20 +0100
> From: Olivier Hoarau <olivier.hoarau@fnac.net>
> Organization: FNAC net
> X-Mailer: Mozilla 4.61 [en] (Win95; I)
> X-Accept-Language: fr-FR,en
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: shuttle
> Content-Type: text/plain; chars
et=us-ascii
> Content-Transfer-Encoding: 7bit
------
texte
------ Fin de votre message
NOTE: A noter que de temps à autre, il n'est pas possible de déterminer le nom d'hôte dynamique de la machine attribué lors de la connexion, et cela quelque soit la manière utilisée pour le faire (avec gethost ou nslookup). C'est pour ça que dans le script ip-up vous trouvez un test sur la valeur de HOST (vide ou non vide).
#!/bin/bash
# This file should not be modified -- make local changes to
# /etc/ppp/ip-up.local instead
# l'argument 4 correspond à l'adresse IP attribuée par
le FAI
# l'argument 6 correspond est passé en argument de la
commande pppd juste
# après ipparam, voir /etc/ppp/ppp-on dans la
page connexion à
plusieurs FAI
ADRESSE=$4
CONNEXION=$6
# écriture des paramètres de connexion dans un
fichier de log
echo " " >> /var/log/connex
echo "Connecté à $CONNEXION adresse $4 le " >>
/var/log/connex
date >> /var/log/connex
# suivant le FAI, on définit le nom du serveur SMTP, de
l'identité à apparaître
# dans les champs RECEIVED et les emails chez le FAI
case $CONNEXION in
fnac)
SERVEUR=smtp.fnac.net
REC=fnac.net
MAIL_O=olivier.hoarau@fnac.net
MAIL_V=veronique.hoarau@fnac.net
;;
liberty)
SERVEUR=mail.libertysurf.fr
REC=libertysurf.fr
MAIL_O=olivier.hoarau2@libertysurf.fr
MAIL_V=veronique.hoarau@libertysurf.fr
;;
free)
SERVEUR=smtp.free.fr
REC=free.fr
MAIL_O=ohoarau@free.fr
MAIL_V=veronique.hoarau@free.fr
;;
waika9)
SERVEUR=smtp.waika9.com
REC=waika9.com
MAIL_O=olivier.hoarau@waika9.com
MAIL_V=veronique.hoarau@waika9.com
;;
*)
echo "Nom de connexion
inconnu $CONNEXION ??"
exit 0
;;
esac
# on met à jour le serveur SMTP
sed s/smtp.fnac.net/$SERVEUR/ /usr/share/sendmail-cf/cf/config.mc
>/tmp/config.mc
# maintenant on met à jour la variable confDOMAIN_NAME
HOST=`/usr/local/sbin/gethost $ADRESSE`
#ou si vous préférez
#HOST=`(nslookup $ADRESSE|grep Name:|sed 's/Name:*//')`
echo "Nom de l'hote $HOST" >> /var/log/connex
if [ -n "$HOST" ] ; then
sed s/ppp.fnac.net/$HOST/
/tmp/config.mc >/tmp/config2.mc
else
cat /tmp/config.mc >
/tmp/config2.mc
fi
# on met à jour l'identité dans les champs RECEIVED
sed s/fnac.net/$REC/g /tmp/config2.mc
>/usr/share/sendmail-cf/cf/config.current.mc
# on regénère sendmail.cf
cd /usr/share/sendmail-cf/cf
m4 config.current.mc > /etc/sendmail.cf
# on réécrit /etc/mail/genericstable
# ATTENTION tabulation après le :
cat <<END_OF-DATA > /etc/mail/genericstable
olivier: $MAIL_O
veronique: $MAIL_V
END_OF-DATA
# et on regénère genericstable.db
/usr/sbin/sendmail -bi -oA/etc/mail/genericstable
# on réécrit pirateo
cat <<END_OF-DATA > /etc/mail/pirateo
$MAIL_O olivier
$MAIL_V veronique
END_OF-DATA
# on regénère au format qui va bien
makemap hash /etc/mail/pirateo < /etc/mail/pirateo
# on relance sendmail
kill -1 `head -1 /var/run/sendmail.pid`
/usr/sbin/sendmail -bd -os -X /var/log/sendmail.log
echo "Expédition du courrier en attente" >>
/var/log/connex
/usr/sbin/sendmail -q -v >> /var/log/connex
exit 0
ATTENTION Sur une Mandrake 8.0 remplacer /usr/lib/sendmail-cfpar/usr/share/sendmail-cf
Voilà donc la tête du message renvoyé par le service écho du CNAM et expédié de mon poste linux alors que j'étais connecté avec Free :
------ Le serveur echo du domaine cnam.fr
------ a recu votre message le sam 11 déc 14:25:23 MET 1999
------ Ci-dessous les en-tetes et le corps de votre message
> From ohoarau@free.fr Sat Dec 11 14:25:22 1999
> Received: from postfix1.free.fr (postfix@postfix1.free.fr
[212.27.32.21])
> by
fermi.cnam.fr (8.8.8/jpm-301097) with ESMTP id OAA30761
> for
<echo@cnam.fr>; Sat, 11 Dec 1999 14:25:22 +0100 (MET)
> From: ohoarau@free.fr
> Return-Path: <ohoarau@free.fr>
> Received: from velizy-27-60.dial.proxad.net
(velizy-27-60.dial.proxad.net [213.228.27.60])
> by postfix1.free.fr
(Postfix) with ESMTP id 8AAA3281B1
> for <echo@cnam.fr>;
Sat, 11 Dec 1999 14:23:21 +0100 (MET)
> Received: from free.fr
> by free.fr
(8.9.3/8.9.3/Olivier Hoarau-991112) id OAA01011
> for
echo@cnam.fr; Sat, 11 Dec 1999 14:26:15 +0100
> Date: Sat, 11 Dec 1999 14:26:15 +0100
> Message-Id:
<199912111326.OAA01011@velizy-27-60.dial.proxad.net>
> To: echo@cnam.fr
------
>
> texte
>
------ Fin de votre message
Ze problème maintenant vient de Netscape Messenger, en effet
avec ce dernier quand vous êtes logués sous un compte, vous
définissez une adresse email unique, pas moyen d'avoir plusieurs
configurations comme sous Windows. Chez moi dans Netscape, j'ai
défini olivier.hoarau@fnac.net pourtant quand je me
connecte chez Free, les mails sont parfaitement relayés, il n'y a
aucune vérification du nom de domaine, c'est limite
inquiétant pour les histoires de spam. Vous n'avez cependant pas
intérêt à mettre un email du genre mickey.mouse@disneyworld.com,
car personne ne pourra vous répondre.
Voici le contenu du mail envoyé d'un de mes postes clients
------ Le serveur echo du domaine cnam.fr
------ a recu votre message le sam 11 déc 14:56:43 MET 1999
------ Ci-dessous les en-tetes et le corps de votre message
> From olivier.hoarau@fnac.net Sat Dec 11 14:56:42 1999
> Received: from postfix1.free.fr (postfix@postfix1.free.fr
[212.27.32.21])
> by
fermi.cnam.fr (8.8.8/jpm-301097) with ESMTP id OAA32210
> for
<echo@cnam.fr>; Sat, 11 Dec 1999 14:56:42 +0100 (MET)
> Return-Path: <olivier.hoarau@fnac.net>
> Received: from velizy-27-60.dial.proxad.net (unknown
[213.228.40.12])
> by postfix1.free.fr
(Postfix) with ESMTP id 5A2AA28318
> for <echo@cnam.fr>;
Sat, 11 Dec 1999 14:54:40 +0100 (MET)
> Received: from free.fr
> by free.fr
(8.9.3/8.9.3/Olivier Hoarau-991112) with ESMTP id OAA01077
> for
<echo@cnam.fr>; Sat, 11 Dec 1999 14:52:42 +0100
> Message-ID: <38525657.C711C933@fnac.net>
> Date: Sat, 11 Dec 1999 14:49:12 +0100
> From: Olivier Hoarau <olivier.hoarau@fnac.net>
> Organization: FNAC net
> X-Mailer: Mozilla 4.61 [en] (Win95; I)
> X-Accept-Language: fr-FR,en
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: shuttle
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
------
>
> texte
>
------ Fin de votre message
Pour en avoir le coeur net je me suis envoyé d'un poste client un mail avec en destinataire mon compte chez libertysurf avec pour email déclaré dans Netscape mickey.mouse@disneyworld.comvoici le corps du mail reçu:
Return-Path: <mickey.mouse@disneyworld.com>
Received: from free.fr
by free.fr
(8.9.3/8.9.3/Olivier Hoarau-991112) with ESMTP id PAA01225
for
<olivier@localhost>; Sat, 11 Dec 1999 15:11:42 +0100
Received: from pop.libertysurf.fr
by localhost with POP3
(fetchmail-5.0.3)
for olivier@localhost
(single-drop); Sat, 11 Dec 1999 15:11:42 +0100 (CET)
Received: by mailhub5.libertysurf.fr (mbox login-pop-chez-libertysurf)
(with Cubic Circle's cucipop (v1.31 1998/05/13) Sat Dec 11
15:13:54 1999)
X-From_: mickey.mouse@disneyworld.com Sat Dec 11 15:13:07 1999
Received: from postfix1.free.fr (postfix1.free.fr [212.27.32.21])
by
mailhub5.libertysurf.fr (8.9.3/8.9.3) with ESMTP id PAA74338
for
<olivier.hoarau2@libertysurf.fr>; Sat, 11 Dec 1999 15:13:07 +0100
(CET)
Received: from velizy-27-60.dial.proxad.net (unknown [213.228.40.67])
by postfix1.free.fr
(Postfix) with ESMTP id C3E7C282BC
for
<olivier.hoarau2@libertysurf.fr>; Sat, 11 Dec 1999 15:07:51 +0100
(MET)
Received: from free.fr
by free.fr
(8.9.3/8.9.3/Olivier Hoarau-991112) with ESMTP id PAA01172
for
<olivier.hoarau2@libertysurf.fr>; Sat, 11 Dec 1999 15:07:16 +0100
Message-ID: <385259C3.5860B95@disneyworld.com>
Date: Sat, 11 Dec 1999 15:03:47 +0100
From: Mickey Mouse <mickey.mouse@disneyworld.com>
Organization: Disney World
X-Mailer: Mozilla 4.61 [en] (Win95; I)
X-Accept-Language: fr-FR,en
MIME-Version: 1.0
To: olivier.hoarau2@libertysurf.fr
Subject: de shuttle
Content-Type: text/plain; charset=us-ascii
Content-Transfer-Encoding: 7bit
X-Mozilla-Status: 8001
X-Mozilla-Status2: 00000000
essai
Gloups !! ça marche... Bon heureusement c'est pas du vrai spam, on voit l'origine velizy-27-60.dial.proxad.net avec adresse IP 213.228.40.67, mais ça permet de faire quelques bonnes blagues. A noter que c'est exactement pareil avec libertysurf.
ATTENTION: Y a un problème dans mon script dans un
certain cas de figure, illustration :
- je me connecte avec free, sendmail est donc configuré pour
free
- je me déconnecte, sendmail est toujours configuré pour
free
- j'envoie un mail dans la liste d'attente, configuré donc pour
free
- je me connecte avec libertysurf, le mail part bien mais est mal
formaté (avec du free.fr de partout)
Il y a donc un problème au moment du switch entre deux FAI s'il y a du mail dans la file d'attente, je suis en train de rédiger un script pour corriger cela, à suivre
00762 >>> 220 machine.domaine.fr ESMTP Sendmail
8.9.3/8.9.3/Commentaire quelconque qui apparaitre dans l'entete -
15/08/99; Sat, 21 Aug 1999 09:32:54 +0200
00762 <<< EHLO windows
00762 >>> 250-machine.domaine.fr Hello windows.domaine.fr
[192.168.13.11], pleased to meet you
00762 >>> 250-EXPN
00762 >>> 250-VERB
00762 >>> 250-8BITMIME
00762 >>> 250-SIZE
00762 >>> 250-DSN
00762 >>> 250-ONEX
00762 >>> 250-ETRN
00762 >>> 250-XUSR
00762 >>> 250 HELP
00762 <<< RSET
00762 >>> 250 Reset state
00762 <<< MAIL FROM:<toto.nom@fai.fr>
00763 >>> 250 <toto.nom@fai.fr>... Sender ok
00763 <<< RCPT TO:<echo@cnam.fr>
00763 >>> 250 <echo@cnam.fr>... Recipient ok
00763 <<< [EOF]
00763 >>> 421 machine.domaine.fr Lost input channel from
windows.domaine.fr [192.168.13.11]
Et que par contre il n'y a aucun problème quand le serveur est on-line. C'est que vous avez un problème de DNS. A noter que le problème est similaire avec Outlook Express et d'une manière générale avec les outils de mail de Microsoft .
Si avec Netscape l'envoi de mail en mode off-line vers la file d'attente (répertoire mqueue) prend au moins 80s autant dire un éternité, que ce soit d'un poste client ou du poste serveur. C'est que vous avez aussi un problème de DNS.
Pour résoudre ça, il faut installer un
serveur DNS
sur sa machine.
errors contenant les erreurs
info contenant les informations diverses
(récupération et expédition de mails)
warnings comme son nom l'indique
Sur les versions antérieurs le fichier de log étaient /var/log/maillog ou encore /var/log/mail.log, ce fichier rassemblait les erreurs, informations et warnings.
[Retour page d'accueil FUNIX] |