FUNIX

Mettez un manchot dans votre PC


Encourager FUNIX

La consultation du site est totalement libre et gratuite, sans publicités. Les dons sont néanmoins appréciés pour payer l'hébergement et encourager son auteur


[ Historique du document  |  Prsentation  |   Configuration de sendmailOn relance tout   |  Principe de fonctionnement  |  Masquage de domaine  |   Si vous avez un autre email que celui attribu par le Fai utilis  |  Attribution d'adresse dynamique  |  Si vous tes inscrits plusieurs FAI | Sendmail et timeout DNS  |  Sendmail et la lutte anti-spam  | Sendmail et fichiers de log | scuriser sendmail ]

Dernire modification 7.12.03

Envoyer du courrier avec sendmail (page 2)

Configuration Internet


Attribution d'adresse dynamique

Vous pouvez redfinir le nom de votre machine, tel qu'il apparatra dans les headers, pour qu'il corresponde exactement avec le nom que vous a attribu le fai, pendant une connexion et ceci mme si ce nom change chaque connexion. Je me sers d'un truc trouv dans le guide du rootard que j'ai trs lgrement adapt (au chapitre 13.10 pour tre prcis). Le truc c'est qu' chaque connexion on lance un petit programme gethost qui dtermine le nom attribu dynamiquement, on modifie dans la foule le config.mc en consquence, on regnre sendmail.cf, on kill sendmail et on le relance dans la foule.
Pour cela j'ai cr 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 trouve 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'excutable 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 dbut de connexion pour reconstruire le fichier de config de sendmail en fonction du nom dtermin par gethost et relancer sendmail.

#!/bin/bash
 # $4 correspond l'adresse IP attribue lors d'une connexion
ADRESSE=$4

# dtermination 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 regnre 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 ncessaire 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 embter 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 dc 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 dc 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 dterminer le nom d'hte dynamique de la machine attribu lors de la connexion, et cela quelque soit la manire utilise 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).

Si vous tes inscrits plusieurs FAI

Si vous tes inscrits plusieurs FAI comme moi, le problme avec qu'avec la configuration que je viens de prsenter, vous ne pouvez envoyer du courrier qu'avec un FAI. Voici donc mon script qui permet de pouvoir renconfigurer sendmail chaque connexion conformment au FAI utilis.
Tout se passe dans le fichier /etc/ppp/ip-up voici le mien

#!/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 attribue par le FAI
# l'argument 6 correspond est pass en argument de la commande pppd juste
# aprs ipparam, voir /etc/ppp/ppp-on dans la page connexion plusieurs FAI
ADRESSE=$4
CONNEXION=$6

# criture des paramtres 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 dfinit le nom du serveur SMTP, de l'identit apparatre
# 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 prfrez
#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 regnre sendmail.cf
cd /usr/share/sendmail-cf/cf
m4 config.current.mc > /etc/sendmail.cf

# on rcrit /etc/mail/genericstable
# ATTENTION tabulation aprs le :
cat <<END_OF-DATA > /etc/mail/genericstable
olivier:        $MAIL_O
veronique:      $MAIL_V
END_OF-DATA
# et on regnre genericstable.db
/usr/sbin/sendmail -bi -oA/etc/mail/genericstable

# on rcrit pirateo
cat <<END_OF-DATA > /etc/mail/pirateo
$MAIL_O olivier
$MAIL_V veronique
END_OF-DATA
# on regnre 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 "Expdition 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 tte du message renvoy par le service cho du CNAM et expdi 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 dc 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 problme maintenant vient de Netscape Messenger, en effet avec ce dernier quand vous tes logus sous un compte, vous dfinissez une adresse email unique, pas moyen d'avoir plusieurs configurations comme sous Windows. Chez moi dans Netscape, j'ai dfini olivier.hoarau@fnac.net pourtant quand je me connecte chez Free, les mails sont parfaitement relays, il n'y a aucune vrification du nom de domaine, c'est limite inquitant pour les histoires de spam. Vous n'avez cependant pas intrt mettre un email du genre mickey.mouse@disneyworld.com, car personne ne pourra vous rpondre.
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 dc 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 dclar dans Netscape mickey.mouse@disneyworld.comvoici le corps du mail reu:

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 problme dans mon script dans un certain cas de figure, illustration :
- je me connecte avec free, sendmail est donc configur pour free
- je me dconnecte, 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 problme au moment du switch entre deux FAI s'il y a du mail dans la file d'attente, je suis en train de rdiger un script pour corriger cela, suivre

Sendmail et timeout DNS

Si avec Microsoft Internet Mail, il est impossible d'envoyer des mails d'un poste Windows vers le serveur Linux quand celui-ci est offline, avec l'erreur suivante dans les fichiers de log:

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 problme quand le serveur est on-line. C'est que vous avez un problme de DNS. A noter que le problme est similaire avec Outlook Express et d'une manire gnrale avec les outils de mail de Microsoft .

Si avec Netscape l'envoi de mail en mode off-line vers la file d'attente (rpertoire 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 problme de DNS.

Pour rsoudre a, il faut installer un serveur DNS sur sa machine.

Sendmail et fichiers de log

Sous une Mandrake les fichiers de logs sont sous /var/log/mail et sont dcomposs en :

errors contenant les erreurs
info  contenant les informations diverses (rcupration et expdition de mails)
warnings comme son nom l'indique

Sur les versions antrieurs 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]