Présentation | InstallationConfiguration de sendmail | On 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 | sécuriser sendmail]

Dernière modif 26 juillet 2006

Envoyer du courrier avec sendmail (page 1)

Configuration Internet

Présentation

Des outils comme Netscape disposent de leur propre mécanisme qui permette d'envoyer du courrier, pour faire plus "pro" on peut utiliser sendmail qui est l'outil de référence pour gérer l'expéridition de courrier.
Pourquoi s'embêter à configurer sendmail, pour la gloire ? Certains disent que tant qu'on a pas chercher à configurer sendmail, on n'est pas un vrai administrateur système. Certain gestionnaire de courrier comme Kmail, en standard dans la bannière de KDE, fonctionne avec sendmail, or la configuration par défaut de ce dernier n'est pas correcte, si vous avez défini un nom de domaine farfelu pour votre machine, tous les courriers sortants vont partir avec au lieu d'utiliser le nom de domaine de votre fournisseur, vos emails seront, à coup sûr, rejeter par la plupart des gestionnaires de courrier sur le net, et le peu de personne qui recevra vos emails, ne pourront y répondre car votre nom de domaine est totalement inconnu sur le net.
Une autre raison d'utiliser sendmail est dans le cas d'un petit réseau privé, avec plusieurs postes Windows (ou autres) et un serveur Linux, pour pouvoir partager une connexion internet, sendmail va faire office de serveur SMTP.

Pour configurer sendmail je ne peux que vous conseillez la lecture du document d'Eric Jacoboni  "lire et envoyer du courrier off-line sur sa machine". Il est vraiment très clair, et il y a vraiment pas grand chose à rajouter. Je m'en suis grandement inspiré pour configurer mon poste Linux avec cependant quelques différences de taille que je mentionnerai, je présente dans cette page uniquement les manips que j'ai faite pour configurée sendmail, pour des explications se reporter au document précédemment cité.
Pour résumer les différences avec la doc de Jacoboni sont :
- le nom de domaine privé n'apparaît aucunement dans les mails sortants, ce qui n'est pas le cas avec la doc d'Eric où apparaît le nom de domaine privé dans les champs Received et Message-Id ,
- avec ma config le serveur linux peut relayer le courrier des postes du domaine privé,
- on peut mailer en local sans que le courrier ait à passer par le FAI, par contre si un utilisateur local répond à un mail d'un autre utilisateur local (fontion Reply), le mail ne passe pas d'abord chez le FAI pour revenir sur le réseau, il est acheminé en local. Avec la config d'Eric le mail va d'abord chez le FAI.

On suppose que machine est le nom de votre machine tel que vous l'aurez défini avec netcfg ou linuxconf, domaine.fr est le nom de votre domaine qui se limite à votre machine ou éventuellement à votre réseau local, mail.fai.frest le serveur de mail de votre provider. toto et tata sont les deux noms d'utilisateur que vous avez déclarés sur la machine. Vous ne disposez que d'un seul compte chez votre provider, mais par contre vous avez plusieurs emails, du style toto.nom@fai.fr et tata.nom@fai.fr.

La configuration présentée ici fonctionne pour les versions 8.9.X de sendmail (Mandrake 7.X).
 

[Retour haut de la page]

Installation

Sous Mandriva
Tout d'abord pour installer sendmail

urpmi sendmail

Si postfix cause des problèmes de conflit, forcer sa désinstallation ainsi

rpm -e --nodeps postfix-2.1.5-6mdk

(exemple donné pour LE 2005) Puis retentez l'installation de sendmail. Vous aurez encore besoin des packages suivants

sendmail-cf
m4

Et éventuellement le package de documentation sendmail-doc. Sachez que vous pourrez toujours trouver la doc de référence ur le site de sendmail.

Sous (k)ubuntu
Il faudra installer le package sendmail, le package m4 doit également être installé si ce n'est pas déjà fait.
[Retour haut de la page]

Configuration

Pour une Mandriva j'ai créé ensuite un fichier /usr/share/sendmail-cf/cf/config.mc qui a cette tête là:
include(`../m4/cf.m4')dnl
OSTYPE(`linux')dnl
FEATURE(redirect)dnl
FEATURE(nocanonify)dnl
FEATURE(always_add_domain)dnl
FEATURE(local_procmail)dnl
GENERICS_DOMAIN(machine.domaine.fr machine localhost)
FEATURE(genericstable)
FEATURE(masquerade_envelope)dnl
FEATURE(relay_entire_domain)dnl
FEATURE(accept_unresolvable_domains)dnl
define(`confDOMAIN_NAME',`ppp.fai.fr')dnl
define(`SMTP_MAILER_FLAGS',`e9')dnl
define(`confCON_EXPENSIVE', `True')dnl
define(`confME_TOO', `True')dnl
define(`confCF_VERSION', `Commentaire quelconque')dnl
define(`confCOPY_ERRORS_TO', `Postmaster')dnl
define(`confDEF_CHAR_SET', `ISO-8859-1')dnl
define(`confMIME_FORMAT_ERRORS', `True')dnl
define(`SMART_HOST', `smtp8:[mail.fai.fr]')dnl
define(`confRECEIVED_HEADER', `from fai.fr
        by fai.fr ($v/$Z)$?r with $r$. id $i$?u
        for $u; $|;
        $.$b')
define(`confTO_QUEUEWARN', `24h')dnl
MAILER(local)
MAILER(smtp)
Kpirateo hash -o /etc/mail/pirateo
LOCAL_RULE_0
R$+ < @ $+ > $*                    $: < $(pirateo $1 @ $2 $: $) > $1 < @ $2 > $3
R< $+ > $+ < @ $+ > $*        $@ $>97 $1
R<> $+ < @ $+ > $*              $: $1 < @ $2 > $3

                                    ^^^^^^ tabulation unique à cet endroit, ailleurs un simple espace
 
 

Sous (k)ubuntu le même fichier doit se trouver sous /etc/mail avec la ligne

include(`/usr/share/sendmail/cf/m4/cf.m4')dnl

au lieu de

include(`../m4/cf.m4')dnl

J'ai une différence notable par rapport à la doc de Jacoboni, j'ai rajouté FEATURE(relay_entire_domain) ce qui permet à sendmail d'accepter les mails venants des postes de votre réseau privé appartenant à votre domaine privé, sans ce parametre à l'envoi d'email, vous auriez sur les PC sous windows un message d'erreur du style "Relaying denied".
J'ai rajouté aussi FEATURE(accept_unresolvable_domains) car sans quoi si le PC sous linux est off-line pas moyen d'envoyer un mail d'un PC sous Windows vers le PC sous Linux,  par contre dès qu'on passe on-line ce paramètre devient parfaitement inutile. Je ne comprends pas trop pourquoi mais je soupçonne une histoire de DNS la dessous.

Les dernières lignes (à partir de Kpirateo) permet que le courrier ne part chez le FAI en cas de réponse à un utilisateur du réseau local. Je m'explique, si un utilisateur localtoto envoit un mail à un autre utilisateur local tata, l'email de l'expéditeur va être réécrite (fonctiongenericstable ) toto.nom@fai.fr, si tata répond au mail, la réponse partira vers toto.nom@fai.fr et non pas simplement toto, en d'autres termes le courrier va d'abord partir chez le fai avant de revenir en local ! Ces lignes permettent que le courrier soit acheminé en local. Cette astuce m'a été communiquée par Denis Braussen d'après l'idée de Pablo Saratxaga. Vous trouverez plus de détail sur la page de configuration UUCP écrite par Denis au chapitre 7.
ATTENTION: à la tabulation unique dans les trois dernières lignes.

NOTE Attention pour qu'un mail parte en local vers le compte toto vous devez taper comme email de destination toto (sans le domaine), toto@machine ou bien encore toto@machine.domaine.fr avec machine le nom de votre serveur sendmail et domaine.fr celui de votre domaine, si vous mettez toto@domaine.fr,  le mail partira vers le FAI avant de revenir sur le réseau local, même si domaine.fr est défini dans la variable GENERICSTABLE.

J'ai rajouté aussi define(`confDOMAIN_NAME',...) et define(`confRECEIVED_HEADER',...)se reporter au paragraphe masquage des domaines.

Ensuite on crée un fichier /etc/mail/genericstable , qui contient ces lignes:

toto:    toto.nom@fai.fr
tata:    tata.nom@fai.fr
Ce fichier fait la correspondance entre les adresses locales et les adresses "officielles".
Attention il faut mettre une tabulation entre le : et l'adresse.

La ligne define(`confCF_VERSION', `Commentaire quelconque') permet de rajouter un commentaire quelconque dans l'entête des mails (voir plus bas).

Pour faire prendre en compte la modif de ce fichier, il faut taper ensuite:

            sendmail -bi -oA/etc/mail/genericstable

ATTENTION Attention pour les versions 8.9.X de sendmail,generistable se trouve directement sous /etc il faudra prendre en compte cette différence dans la suite des opérations si vous disposez de cette version.

On crée ensuite un fichier /etc/mail/pirateo, dans lequel vous mettrez :

        toto.nom@fai.fr toto
        tata.nom@fai.fr tata

Ensuite pour générer le fichier au format qui va bien on tape :

            makemap hash /etc/mail/pirateo < /etc/mail/pirateo

Ce fichier aura le rôle inverse de /etc/mail/generistable, il transforme l'adresse du destinataire toto.nom@fai.fr en toto si celui est un utilisateur local, pour éviter que le mail parte chez le fai.

Ensuite vous modifiez votre fichier /etc/nsswitch.conf pour qu'il ressemble à ça:
 

# bla bla
# un tas de commentaires
#
passwd:     files
shadow:     files
group:      files

hosts:      files dns

services:   files
networks:   files
protocols:  files
rpc:        files
ethers:     files
netmasks:   files
bootparams: files

netgroup:       files

publickey:      files

automount:  files
aliases:    files


La doc de Jacoboni demande de modifier /etc/hosts pour qu'elle contienne au moins la ligne

127.0.0.1      machine.domaine.fr  localhost     machine
Et bien je n'en ai rien fait, j'ai laissé:
127.0.0.1    localhost  localhost.localdomain
Pourquoi donc? Parce que si on suit les conseils de Jacoboni, Samba ne marche plus, au lieu de travailler sur l'adresse IP de classe C de votre réseau privé que vous avez défini (192.168.13.X par exemple),Samba va travailler sur l'adresse de classe A 127.X.X.X, autant dire que rien ne fonctionnera.
Ne vous préoccupez pas des remarques alarmistes de Jacoboni, qu'on suive ces conseils sur /etc/hosts ou pas, j'ai constaté un fonctionnement identique de sendmail. Par contre n'oubliez pas de rajouter vos postes de votre réseau privé avec le FQDN (Fully qualified domain name, nom complet), ça nous donne donc ça:
127.0.0.1    localhost  localhost.localdomain
192.168.13.10    machine.domaine.fr    machine
192.168.13.11    windows.domaine.fr    windows
192.168.13.12    mac.domaine.fr    mac
windows et mac étant deux machines de votre réseau privé, les adresses IP sont données à titre indicatif.

ATTENTION: si sendmail bloque le boot de la machine, ça peut venir justement du fait qu'on n'a pas modifié la première ligne de /etc/hosts, sendmail n'arrive pas à trouver le nom de la machine et part dans une recherche qui par défaut dure 3 minutes, ceux-ci peut expliquer les remarque d'Eric Jacoboni. Par ailleurs ça peut engendrer des problèmes de résolution de nom sur la machine linux en mode off-line, pour résoudre ces problèmes tout en maintenant la ligne en question inchangée, reportez vous à la page installation d'un serveur DNS.

Pour rebatir le fichier de configuration de sendmail , on tape la commande:

sous Mandriva
cd /usr/share/sendmail-cf/cf/
sous (k)ubuntu
cd /etc/mail ubuntu

Pour les deux distribs
m4  config.mc > /etc/mail/sendmail.cf

Bizarrement même avec sudo j'avais une erreur de droit sous (k)ubuntu j'ai du décomposer la commande ainsi 
sudo m4 config.mc > /tmp/sendmail.cf
sudo cp /tmp/sendmail.cf /etc/mail

Changer (éventuellement) les droits de ce fichier:

chmod 600 /etc/mail/sendmail.cf
Ca y est c'est fini sous Mandriva, sous (k)ubuntu il y a cependant des petites manips supplémentaires à effectuer sur le fichier /etc/mail/sendmail.cf, voilà ce que vous devez modifier

# temporary file mode
O TempFileMode=0644

# queue file mode (qf files)
O QueueFileMode=0640

# default UID (can be username or userid:groupid)
O DefaultUser=mail:mail

# chrooted environment for writing to files
O SafeFileEnvironment

# Trusted user for file ownership and starting the daemon
O TrustedUser=smmta

# Control socket for daemon management
O ControlSocketName=/var/run/sendmail/mta/smcontrol

# location of pid file
O PidFile=/var/run/sendmail/mta/sendmail.pid
[Retour haut de la page ]

On relance tout

Pour relancer tout, il faut d'abord préalablement tuer sendmail s'il tourne, pour cela faire:

/etc/rc.d/init.d/sendmail stop

sous (k)ubuntu

/etc/init.d/sendmail stop

Puis pour relire le fichier de configuration

sendmail -bd -os

Vous pouvez éventuellement rajouter -X /var/log/sendmail.log pour avoir le fichier de log, si vous voulez avoir le fichier de log en permanence (y compris au reboot de la machine), modifiez le fichier de lancement de sendmail /etc/rc.d/init.d/sendmail à la ligne:

 daemon /usr/sbin/sendmail  $([ "$DAEMON" = yes ] && echo -bd) \
Rajoutez:
daemon /usr/sbin/sendmail -X /var/log/sendmail.log $([ "$DAEMON" = yes ] && echo -bd) \

Pour une ubuntu ça se passe dans le fichier /etc/init.d/sendmail au lieu de

START_MTAL_CMD="start-stop-daemon \
                --pidfile $MTAL_PIDFILE \
                --exec $MTA_DAEMON \
                --startas $MTA_COMMAND \
                --start";

on écrit

START_MTAL_CMD="start-stop-daemon \
                --pidfile $MTAL_PIDFILE \
                --exec $MTA_DAEMON \
                -- $OPTIONS-sendmail
                --startas $MTA_COMMAND \
                --start";

en définissant plus haut dans le fichier

OPTIONS-sendmail='-X /var/log/sendmail.log'
NOTE: Sous mandrake 6.1, j'avais parfois l'erreur suivante après avoir tapé sendmail -bd -os:

[root@tavel cf]# sendmail -bd -os
554 /etc/sendmail.cf: line 51: unknown configuration line "
"
[root@tavel cf]#

En fait il suffit d'éditer /etc/mail/sendmail.cf et de supprimer quelques lignes vides au niveau de la ligne 51, pour que tout rentre dans l'ordre, tapez à nouveau la commande sendmail -bd -os.
 

[Retour haut de la page]

Principe de fonctionnement

Pour info tous les courriers partants se retrouvent en attente dans le répertoire /var/spool/mqueue, ceux en arrivée se trouvent dans /var/spool/mail avec pour nom le nom du destinataire sur la machine.

ATTENTION: /var/spool/mail doit avoir pour droit 01777 (drwxrwsr-x) pour fonctionner avec movemail de netscape

sous /var/spool sous ubuntu voilà ce que j'ai en tapant ll dans un shell
lrwxrwxrwx  1 root   root      7 2006-07-23 17:00 mail -> ../mail
drwxr-s---  2 smmta  smmsp  4096 2006-07-25 18:18 mqueue
drwxrws---  2 smmsp  smmsp  4096 2006-07-25 18:18 mqueue-client

et voilà le répertoire /var/mail

drwxrwsr-t  5 root mail   4096 2006-07-25 18:28 mail

Pour envoyer le courrier, une fois connecté vous devez taper:

/usr/sbin/sendmail -q -v
L'option -v étant l'option "verbeuse". Pour visualiser les messages dans la file d'attente, vous pouvez taper:
mailq
Quand vous envoyez un courrier en local (de toto vers tata), le courrier ne va pas transiter par mqueue, de même qu'il est inutile de tapez "sendmail -q", il va se retrouver directement dans la boite aux lettres du destinataire local, avec dans le champ From  toto@domaine.fr (c'est le but du paramêtre FEATURE(always_add_domain) qui va rajouter automatiquement le nom de domain privé).
En cas d'envoi vers un destinataire extérieur à votre domaine, le courrier va se retrouver dans le répertoire mqueue.
 
[Retour haut de la page]

Masquage de domaine

Si on se contente d'appliquer la doc de Jacoboni brut de forme, on est confronté à un gros problème qui se voit à l'envoi du courrier vers des adresses échos comme echo@cnam.fr, qui se contente de vous renvoyer votre email avec l'entete complète du mail d'origine, on peut y voir des informations indiscrètes que vous ne voudriez pas forcément voir figurer.

Voici le mail qui part du serveur Linux, avec pour contenu :

Subject:    test
première ligne
Contenu de l'email de réponse du serveur écho du CNAM:

------ Le serveur echo du domaine cnam.fr
------ a recu votre message le mar 10 aoû 22:25:28 MET DST 1999

------ Ci-dessous les en-tetes et le corps de votre message
 

> From toto.nom@fai.fr  Tue Aug 10 22:25:27 1999
> Received: from obelix.fai.fr (obelix.fai.fr [210.205.98.21])
>         by fermi.cnam.fr (8.8.8/jpm-301097)  with ESMTP id WAA11452
>         for <echo@cnam.fr>; Tue, 10 Aug 1999 22:25:27 +0200 (MET DST)
> From: toto.nom@fai.fr
> Return-Path: <toto.nom@fai.fr>
> Received: from machine.domaine.fr (IDENT:root@ppptc22.fai.fr [210.205.98.22])
>       by obelix.fai.fr (8.9.1/8.9.1/R&D&B-990119) with ESMTP id WAA26056
>       for <echo@cnam.fr>; Tue, 10 Aug 1999 22:24:55 +0200
> Received: (from toto@localhost)
>       by machine.domaine.fr (8.9.3/8.9.3/Commentaire quelconque) id WAA00754
>       for echo@cnam.fr; Tue, 10 Aug 1999 22:25:34 +0200
> Date: Tue, 10 Aug 1999 22:25:34 +0200
> Message-Id: <199908102025.WAA00754@machine.domaine.fr>
> To: echo@cnam.fr
> Subject: test

------

>
> première ligne
>

------ Fin de votre message
 

Quelques commentaires:
toto.nom@fai.fr est votre adresse email chez votre fournisseur d'accès, obelix.fai.fr (IP= 210.205.98.21) est le nom de la machine chez votre fai qui a "routé" votre
email, ppptc22.fai.fr (IP=210.205.98.22) c'est votre identité officielle sur le net au moment de votre connexion.
Vous voyez que le nom de votre domaine apparait dans les champs Received, et même le commentaire que vous aurez défini dans le fichier de config de sendmail.
Certains gestionnaires d'email pourraient rejeter vos emails sous prétexte de contenir un nom de domaine inconnu.

Voyons maintenant un email arrivant d'un de vos postes sous Windows et partant vers le net.

------ Le serveur echo du domaine cnam.fr
------ a recu votre message le mar 10 aoû 19:47:08 MET DST 1999

------ Ci-dessous les en-tetes et le corps de votre message
 

> From toto.nom@fai.fr  Tue Aug 10 19:47:07 1999
> Received: from obelix.fai.fr (obelix.fai.fr [210.205.98.21])
>         by fermi.cnam.fr (8.8.8/jpm-301097)  with ESMTP id TAA05598
>         for <echo@cnam.fr>; Tue, 10 Aug 1999 19:47:06 +0200 (MET DST)
> Return-Path: <toto.nom@fai.fr>
> Received: from machine.domaine.fr (IDENT:root@ppptc32.fai.fr [210.205.98.23])
>       by obelix.fai.fr (8.9.1/8.9.1/R&D&B-990119) with ESMTP id TAA23230
>       for <echo@cnam.fr>; Tue, 10 Aug 1999 19:46:35 +0200
> Received: from windows (windows.domaine.fr [192.168.13.11])
>       by machine.domaine.fr (8.9.3/8.9.3/Commentaire quelconque) with ESMTP id TAA00863
>       for <echo@cnam.fr>; Tue, 10 Aug 1999 19:38:54 +0200
> Message-Id: <199908101738.TAA00863@machine.domaine.fr>
> From: "Toto Nom" <toto.nom@fai.fr>
> To: <echo@cnam.fr>
> Subject: test de windows
> Date: Tue, 10 Aug 1999 19:37:08 +0200
> X-MSMail-Priority: Normal
> X-Priority: 3
> X-Mailer: Microsoft Internet Mail 4.70.1155
> MIME-Version: 1.0
> Content-Type: text/plain; charset=ISO-8859-1
> Content-Transfer-Encoding: 7bit

------

>
> première ligne
>

------ Fin de votre message

Dans Received, on voit en fait le cheminement que suit le mail envoyé du poste windows, va sur machine puis par chez votre fai (surobelix), on voit donc le nom de votre domaine, les noms du poste Linux et du poste de votre réseau privé d'où a été envoyé l'email, et meme l'adresse IP que vous lui avez attribué !

Le problème est qu'on ne peut dans les paramètres de config de sendmail, virer les champs Received , FEATURE(masquerade_enveloppe) ne fait que masquer les adresses emails.

Pour corriger ça, on va d'abord rajouter define(`confDOMAIN_NAME',`ppp.fai.fr')qui permet de redéfinir la manière dont notre serveur Linux va se présenter au serveur SMTP du provider, en clair il va changer toutes les occurences de machine.domaine.fr par ppp.fai.fr dans les champs Received. Pourquoi mettre ppp.fai.fr et ne pas mettre tout simplement fai.fr , parce que dans ce cas on ne pourra pas envoyer de mail à des utilisateurs du domaine fai.fr,sendmail croit que ce sont des utilisateurs locaux ! Avec ppp.fai.fr pas de problème, en toute rigueur on pourrait mettre ici le nom attribué lors d'une connexion (du style ppp18-brest.fai.fr qu'on peut voir en tapant ifconfig) pour cela reporter vous au paragraphe attribution d'adresse dynamique.
Reste le problème des emails partant de postes sous Windows, où apparait le nom et l'adresse IP, on va carrément redéfinir le champs Received:

define(`confRECEIVED_HEADER', `from fai.fr
        by fai.fr ($v/$Z)$?r with $r$. id $i$?u
        for $u; $|;
        $.$b')

Ce qui nous donne pour un mail envoyé d'un PC sous windows:

------ Le serveur echo du domaine cnam.fr
------ a recu votre message le sam jun  1 19:08:31 CEST 2002
------ Ci-dessous les en-tetes et le corps de votre message
> From toto.nom@fai.fr@funix.org Sat Jun 01 17:08:31 2002
> Return-Path: <toto.nom@fai.fr>
> Delivered-To: echo@cnam.fr
> Received: (qmail 20719 invoked from network); 1 Jun 2002 17:08:31 -0000
> Received: from bougainville.cnam.fr (163.173.128.13)
>   by 0 with SMTP; 1 Jun 2002 17:08:31 -0000
> Received: from localhost (localhost [127.0.0.1])
>  by bougainville.cnam.fr (Postfix) with ESMTP id 132F82EFB4
>  for <echo@cnam.fr>; Sat,  1 Jun 2002 19:08:31 +0200 (CEST)
> Received: from smtp.fai.fr (mail.fai.fr [202.3.225.22])
>  by bougainville.cnam.fr (Postfix) with ESMTP id D31492EFAE
>  for <echo@cnam.fr>; Sat,  1 Jun 2002 19:08:27 +0200 (CEST)
> Received: from ppp.fai.fr (tc5-bis-014.dialup.fai.fr [202.3.239.14])
>  by smtp.fai.fr (Mirapoint Messaging Server MOS 3.1.0.36-EA)
>  with ESMTP id ADS19083
>  for <echo@cnam.fr>;
>  Sat, 1 Jun 2002 07:08:20 -1000 (TAHT)
> Received: from fai.fr
>         by fai.fr (8.12.1/8.12.1/Commentaire quelconque) with ESMTP id g51H7FAj002161
>         for <echo@cnam.fr>; Sat, 1 Jun 2002 07:07:15 -1000
> Message-ID: <3CF90D0A.5FF74480@fai.fr>
> Date: Sat, 01 Jun 2002 07:06:02 -1100
> From: Toto Nom <toto.nom@fai.fr>
> X-Mailer: Mozilla 4.7 [fr] (WinNT; I)
> X-Accept-Language: fr
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: essai
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
> X-Virus-Scanned: by AMaViS perl-11
------

>
> première ligne
>

------ Fin de votre message
 

Voici l'email qui part de notre serveur Linux.

------ Le serveur echo du domaine cnam.fr
------ a recu votre message le sam jun  1 07:51:15 CEST 2002
------ Ci-dessous les en-tetes et le corps de votre message
> From toto.nom@fai.fr Sat Jun 01 05:51:15 2002
> Return-Path: <toto.nom@fai.fr>
> Delivered-To: echo@cnam.fr
> Received: (qmail 3855 invoked from network); 1 Jun 2002 05:51:14 -0000
> Received: from bougainville.cnam.fr (163.173.128.13)
>   by 0 with SMTP; 1 Jun 2002 05:51:14 -0000
> Received: from localhost (localhost [127.0.0.1])
>       by bougainville.cnam.fr (Postfix) with ESMTP id CB0A52EFAF
>       for <echo@cnam.fr>; Sat,  1 Jun 2002 07:51:14 +0200 (CEST)
> Received: from smtp.fai.fr (mail.fai.fr [202.3.225.22])
>       by bougainville.cnam.fr (Postfix) with ESMTP id 8EE6D2EFAE
>       for <echo@cnam.fr>; Sat,  1 Jun 2002 07:51:11 +0200 (CEST)
> Received: from ppp.fai.fr (tc5-bis-198.dialup.fai.fr [202.3.239.198])
>       by smtp.fai.fr (Mirapoint Messaging Server MOS 3.1.0.36-EA)
>       with ESMTP id ADS03894
>       for <echo@cnam.fr>;
>       Fri, 31 May 2002 19:50:40 -1000 (TAHT)
> Received: from fai.fr
>         by fai.fr (8.12.1/8.12.1/Commentaire quelconque) with ESMTP id g515nwFE002664
>         for <echo@cnam.fr>; Fri, 31 May 2002 19:49:58 -1000
> Sender: toto.nom@fai.fr
> Message-ID: <3CF86086.351F9560@fai.fr>
> Date: Fri, 31 May 2002 19:49:58 -1000
> From: Toto Nom <toto.nom@fai.fr>
> Organization: Tahiti Connection
> X-Mailer: Mozilla 4.78 [fr] (X11; U; Linux 2.4.18-6mdk i686)
> X-Accept-Language: en
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: test
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit
> X-Virus-Scanned: by AMaViS perl-11
------
>
> première ligne
>

------ Fin de votre message
 
 
 

[Retour haut de la page]

Si vous avez un autre email que celui attribué par le Fai utilisé

Vous pouvez très bien utiliser un FAI du style fai.fr et ne pas utiliser une adresse email en @fai.fr.  Ainsi je me connecte avec free et mon adresse email est
olivier.hoarau@fnac.net , dans ce cas le Message-Id et le Sender n'ont pas une bonne tête.
Exemple avec cette entête renvoyée par echo@cnam.fr

> From olivier.hoarau@fnac.net  Sat Jul 15 08:19:16 2000
> Received: from postfix3.free.fr (postfix@postfix3.free.fr [212.27.32.22])
>         by fermi.cnam.fr (8.8.8/jpm-301097)  with ESMTP id IAA05796
>         for <echo@cnam.fr>; Sat, 15 Jul 2000 08:19:16 +0200 (MET DST)
> Return-Path: <olivier.hoarau@fnac.net>
> Received: from ppp.free.fr (massy-4-14-209.dial.proxad.net [213.228.14.209])
>       by postfix3.free.fr (Postfix) with ESMTP id 62B6286B67
>       for <echo@cnam.fr>; Sat, 15 Jul 2000 08:19:15 +0200 (CEST)
> Received: from free.fr
>         by free.fr (8.10.1/8.10.1/Olivier Hoarau-992911) with ESMTP id e6F68IJ01419
>         for <echo@cnam.fr>; Sat, 15 Jul 2000 08:08:18 +0200
> Sender: olivier@free.fr
> Message-ID: <396FFFD2.447D80E1@fnac.net>
> Date: Sat, 15 Jul 2000 08:08:18 +0200
> From: Olivier Hoarau <olivier.hoarau@fnac.net>
> Organization: Breizh Connection
> X-Mailer: Mozilla 4.73 [fr] (X11; I; Linux 2.2.15-4mdk i686)
> X-Accept-Language: en
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: asterix
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit

Vous voyez que le Message-Id a l'extension fnac.net alors qu'il devrait être en free.fr puisque j'utilise free, de même le Sender est olivier@free.fr qui ne correspond à rien, vu que mon email chez free est ohoarau@free.fr
Pour régler le problème du Message-Id et du Sender, j'ai écrit ce petit script :

#!/bin/bash
cd /var/spool/mqueue
for nom_mail in $(ls qf*)
do
       awk 'BEGIN { FS=":" }
         $1!="H??Message-ID"   &&    $1!= "H??Sender" { print $0 }
         $1=="H??Sender" { sub("olivier","ohoarau",$2);print $1,":",$2 }
         $1=="H??Message-ID" {  sub("fnac.net","free.fr",$2); print $1,":",$2 }
       ' $nom_mail > /tmp/mail.tmp
       cp /tmp/mail.tmp $nom_mail
done

Vous pourrez très facilement adapter ce script à votre situation, quelques commentaires sont peut être utiles:
- sub("olivier","ohoarau",$2) ici c'est pour avoir Sender: ohoarau@free.fr au lieu de Sender: olivier@free.fr
- sub("fnac.net","free.fr",$2) ici c'est pour avoir Message-ID: <396FFFD2.447D80E1@free.fr au lieu de Message-ID: <396FFFD2.447D80E1@fnac.net

Remplacez les chaînes de caractères adéquates pour que ça marche chez vous. Le proprio du script doit être root, avec des droits en 755, on l'appelera avant sendmail -q et qui permettra de changer le Message-Id et le Sender .
Si ce script s'appelle chg-message et se trouve dans /usr/sbin , vous pouvez le mettre dans le fichier /etc/ppp/ip-up lancé à chaque connexion, comme ceci

/usr/sbin/chg-message
/usr/sbin/sendmail -q

Voilà en final la tête mon mail envoyé de mon poste linux tel que l'a renvoyé le serveur écho du cnam:

------ Le serveur echo du domaine cnam.fr
------ a recu votre message le sam 15 jul 09:23:10 MET DST 2000

------ Ci-dessous les en-tetes et le corps de votre message
 

> From olivier.hoarau@fnac.net  Sat Jul 15 09:23:09 2000
> 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 JAA10064
>         for <echo@cnam.fr>; Sat, 15 Jul 2000 09:23:09 +0200 (MET DST)
> Return-Path: <olivier.hoarau@fnac.net>
> Received: from ppp.free.fr (massy-2-11-231.dial.proxad.net [213.228.11.231])
>       by postfix1.free.fr (Postfix) with ESMTP id DA7D228043
>       for <echo@cnam.fr>; Sat, 15 Jul 2000 09:23:03 +0200 (MEST)
> Received: from free.fr
>         by free.fr (8.10.1/8.10.1/Olivier Hoarau-992911) with ESMTP id e6F72bP02146
>         for <echo@cnam.fr>; Sat, 15 Jul 2000 09:02:37 +0200
> Sender: ohoarau@free.fr
> Message-ID:  <39700C8D.3443567C@free.fr>
> Date: Sat, 15 Jul 2000 09:02:37 +0200
> From: Olivier Hoarau <olivier.hoarau@fnac.net>
> Organization: Breizh Connection
> X-Mailer: Mozilla 4.73 [fr] (X11; I; Linux 2.2.15-4mdk i686)
> X-Accept-Language: en
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: essai
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit

Le Message-Id et le Sender ont maintenant une bonne tête.

Voilà le message renvoyé d'un mail partant d'un poste client windows du réseau:

------ Le serveur echo du domaine cnam.fr
------ a recu votre message le sam 15 jul 09:46:21 MET DST 2000

------ Ci-dessous les en-tetes et le corps de votre message
 

> From olivier.hoarau@fnac.net  Sat Jul 15 09:46:21 2000
> Received: from postfix2.free.fr (postfix@postfix2.free.fr [212.27.32.74])
>         by fermi.cnam.fr (8.8.8/jpm-301097)  with ESMTP id JAA11374
>         for <echo@cnam.fr>; Sat, 15 Jul 2000 09:46:21 +0200 (MET DST)
> Return-Path: <olivier.hoarau@fnac.net>
> Received: from ppp.free.fr (massy-2-10-239.dial.proxad.net [213.228.10.239])
>       by postfix2.free.fr (Postfix) with ESMTP id 7FB1D740DB
>       for <echo@cnam.fr>; Sat, 15 Jul 2000 09:46:20 +0200 (MEST)
> Received: from free.fr
>         by free.fr (8.10.1/8.10.1/Olivier Hoarau-992911) with ESMTP id e6F7iTG02453
>         for <echo@cnam.fr>; Sat, 15 Jul 2000 09:44:30 +0200
> Message-ID:  <39701660.10A22F73@free.fr>
> Date: Sat, 15 Jul 2000 09:44:32 +0200
> From: Olivier Hoarau <olivier.hoarau@fnac.net>
> X-Mailer: Mozilla 4.6 [fr] (Win98; I)
> X-Accept-Language: fr
> MIME-Version: 1.0
> To: echo@cnam.fr
> Subject: tavel
> Content-Type: text/plain; charset=us-ascii
> Content-Transfer-Encoding: 7bit

------

Vous pouvez constater qu'il n'y a pas de champ Sender.
 
 
 
[Retour page d'accueil FUNIX]