Vous êtes sur la page 1sur 83

UNIVERSITE D’ANTANANARIVO

ECOLE SUPERIEURE POLYTECHNIQUE


D’ANTANANARIVO
*********************
DEPARTEMENT ELECTRONIQUE
***************************************

MEMOIRE DE FIN D’ETUDES EN VUE DE L’OBTENTION DU


DIPLOME D’INGENIEUR

Spécialité : ELECTRONIQUE
Option : Informatique Industrielle

Etude sur le fonctionnement du courrier électronique (*)


Conception d’une architecture sécurisée d’un serveur de messagerie (**)

Présenté par : RANDRIAMBOLOLONA Manantena Rianala (**)


VONJISOA RAMILATSIHOARANA Dina (*)

Soutenu le 01 Mars 2006

N° : 08/EN/II/05 (*) Année Universitaire 2004-2005


09/EN/II/05 (**)
ETUDE SUR LE COURRIER ELECTRONIQUE

I- Etude sur le fonctionnement du courrier électronique (*)


II- Conception d’une architecture sécurisée d’un serveur de messagerie (**)

Spécialité : ELECTRONIQUE
Option : Informatique Industrielle

Présenté par : RANDRIAMBOLOLONA Manantena Rianala (**)


VONJISOA RAMILATSIHOARANA Dina (*)

• Devant les membres de Jury :

- Monsieur RAKOTOMIRAHO Soloniaina, Président

- Madame RABEHERIMANANA Lyliane Irène, Examinateur

- Monsieur RABESANDRATANA ANDRIAMIHAJA Mamisoa, Examinateur

- Monsieur RATSIMBAZAFY Guy Prédon, Examinateur

• Rapporteur : Monsieur RAKOTONDRASOA Justin

Soutenu le 01 Mars 2006


« Raha tsy Jehovah no manao ny trano dia miasa foana ny mpanao azy »

…Par ton travail, tu achèves ta propre création.


La connaissance appartient à tout le monde
REMERCIEMENTS

Nous tenons en premier lieu à remercier Dieu Tout-puissant pour tout l’Amour qu’Il nous a
partagé à travers la réalisation de ce mémoire.
Ensuite, nous adressons nos vifs remerciements et notre profonde gratitude :

A notre Chef de Département, MR RASTEFANO Elisée, qui nous a éduqué, apporté


conseils et directives, durant ces années de formation.
A notre encadreur, Mr RAKOTONDRASOA Justin, qui malgré ses maintes
occupations, nous a partagé ses connaissances et son temps pour l’élaboration à terme et à
bien de ce travail.

A Monsieur RAKOTOMIRAHO Soloniaina, qui a bien voulu présider cette


soutenance de mémoire.

A Madame RABEHERIMANANA Lyliane,


Monsieur RABENANDRASANA Andriamihaja Mamisoa,
Monsieur RATSIMBAZAFY Guy prédon
qui ont accepté d’évaluer notre travail.

A tous les Enseignants de l’Ecole et du département Electronique, qui nous ont


partagé leur savoir-faire.
A tous nos collègues, amis et à tous ceux qui ont contribué, de près ou de loin, à
l’élaboration de ce rapportt.
A tous les membres de nos familles respectives, pour leurs soutiens moraux, affectifs
et financiers.

Rianala Vonjy

i
RESUME

Les courriers électroniques se basent essentiellement sur l’utilisation des protocoles


textuels. Le message passe du client vers le serveur en utilisant le protocole SMTP.
L’opération inverse se fait avec le protocole POP ou IMAP selon le type du serveur sur lequel
sont stockés les courriers. Le fait que l’on peut lire des messages quel que soit leur forme est
dû à un procédure d’encodage et de décodage bien défini et supporté par les logiciels de
messagerie même. Les principales sources de problèmes quant à la sécurité des courriers sont
les virus et les spams. Les solutions proposées dans ce document consistent à adopter des
règles et astuces de sécurité au niveau du client et à opter pour un serveur libre travaillant sous
linux : Postfix. Des outils intégrés ou non avec le serveur ont été activés dans le but de le
sécuriser et obtenir ainsi une nouvelle architecture libre d’un serveur de messagerie.

ii
ABSTRACT

E-mails foundation lies especially upon text based protocols. Message passes
through client to the server with SMTP. Receiving e-mails needs other protocols as POP or
IMAP up to the server type in which mails are stored. Through all their progress, mails are
first encoded and then decoded by the mail client software. Besides, most frequent problems
that are met in mail administration are virus and spams. Thus, this memory describes some
solutions for securing the mail architecture from the client to the server. The server function is
essentially ensured by Postfix. Other freewares are added to complete the protection of the
conceived architecture.

iii
TABLE DES MATIERES

Page
REMERCIEMENTS ......................................................................................................... i
RESUME ........................................................................................................................... ii
ABSTRACT ..................................................................................................................... iii
TABLE DES MATIERES .............................................................................................. iv
LISTE DES ABREVIATIONS ...................................................................................... vii
LISTE DES FIGURES .................................................................................................... ix
LISTE DES TABLEAUX ................................................................................................ x
LISTE DES ANNEXES ................................................................................................... xi

INTRODUCTION ............................................................................................................ 1

Chapitre 1 : GENERALITES SUR LE COURRIER ELECTRONIQUE

1.1 : Présentation du courrier électronique ......................................................................... 4


a- Historique ............................................................................................................ 4
b- Eléments de structure d’un courrier électronique............................................... 4
(i). présentation des adresses....................................................................... 5
(ii). Les en-têtes .......................................................................................... 6
(iii). La signature ......................................................................................... 8
1.2. Principe du courrier électronique ................................................................................ 8
a- Les protocoles de messagerie ......................................................................................... 9
(i). Le protocole SMTP ............................................................................... 9
(ii). Le protocole POP ............................................................................... 10
(iii). Le protocole IMAP ............................................................................ 10
b- Cheminement d’un message électronique .................................................................... 11
c- Parcours de la messagerie électronique ........................................................................ 12
d- Stockage des messages ................................................................................................. 13
e- Encodage du courrier électronique ............................................................................... 14
(i). Codage du message ............................................................................. 14
f- Les fichiers joints .......................................................................................................... 17

iv
g- Format d’échanges ....................................................................................................... 18
(i). les textes .............................................................................................. 18
(ii). Les données ........................................................................................ 20
(iii). Les images ........................................................................................ 20

1.3. Fléaux de la messagerie électronique ........................................................................ 21


a- Les virus ........................................................................................................... 21
b- le Spamming ..................................................................................................... 21
c- Le mailbombing ................................................................................................ 22
d-Le crackage par mot de passe ............................................................................ 22

Chapitre 2 : LE SERVEUR POSTFIX – CONCEPTION DE L’ARCHITECTURE


SECURISEE

2.1 Le système d’exploitation linux ................................................................................ 24


a) Présentation générale ........................................................................................ 24
b) Architecture du système ................................................................................... 25
(i). Le noyau (kernel) ................................................................................ 26
(ii). Le shell ............................................................................................... 26
(iii). Le système de fichiers ....................................................................... 27
c) Fonctionnement en réseau ................................................................................ 27
2.2 Le serveur Postfix ....................................................................................................... 27
a) Généralités ........................................................................................................ 27
b) Objectifs et fonctionnalités ............................................................................... 29
(i). Objectifs principaux ............................................................................ 29
(ii). Autres fonctionnalités ........................................................................ 29
c) Architecture ...................................................................................................... 30
(i). Les files d’attente de Postfix ............................................................... 31
(ii). La réception du courrier ...................................................................... 31
(iii). La livraison du message .................................................................... 33
d) Configuration simple ........................................................................................ 35
e) Les différents moyens de sécurisation inclus au niveau du serveur Postfix .... 36
(i). Authentification SASL et support TLS de Postfix .............................. 36
(ii). L’inspection des contenus des messages ........................................... 38

v
2.3 Autres dispositifs de sécurité pour un serveur de messagerie .................................... 40
a) La topologie du réseau ...................................................................................... 40
b) Autres dispositifs de sécurité : Lutte antispam et antivirus .............................. 41
(i). Procmail .............................................................................................. 41
(ii). Filtrage des spams avec spamassassin ............................................... 42
(iii). Mettre en place un antivirus .............................................................. 44
(iv). Filtrage avancé avec MailScanner .................................................... 44
c) Récapitulation sur l’architecture sécurisé du serveur ....................................... 44

Chapitre 3 : EXEMPLE PRATIQUE D’UTILISATION

3.1 Configuration côté serveur ........................................................................................ 47


a) Configuration préliminaire .............................................................................. 47
b) Lancement du serveur ..................................................................................... 48
3.2 Configuration côté client ............................................................................................ 49
a) Le logiciel de messagerie.................................................................................. 49
b) Le webmail ....................................................................................................... 51
c) Autres oyens en vracs ....................................................................................... 53

CONCLUSION .............................................................................................................. 54

ANNEXE 1 : Protocoles d’échange et standard d’encodages ......................................... 56

ANNEXE 2 : Mise en place d’un serveur DNS avec Bind .............................................. 62

ANNEXE 3 : Fichier de configuration de Postfix ........................................................... 64

REFERENCES ............................................................................................................... 67

vi
LISTE DES ABREVIATIONS

ASCII American Standard Code for Information Interchange


BBN Bolt Beranek et Newman
Bcc Blind carbon copy
Bit Binary digit
Cc Carbon copy
Courriel Courrier électronique
CPYNET Copy Internet
CSV Comma Separated Values
E-mail Electronic mail
ERR Error ou Erreur
GIF Graphic interchange Format
GMT Greenwich Mean Time
HTML Hyper Text Markup Language
IBM International Business Machines
IMAP Internet Message Access Protocol
IP Internet Protocol
JPEG Joint photographic experts group
Mél Message électronique
MIME Multipurpose Internet Mail Extentions
MTA Message Transfert Agent
MS Mail System
Netmail Network mail
PC Personal Computer
PDF Portable Document Format
PME Petites et Moyennes Entreprises
POP Post Office Protocol
RBL Real-time Blackhole List
RCPT Receipt
RFC Request For Comments

vii
RTF Rich Text File
SASL Simple Authentification Security Layer
SMS Short Message System
SMTP Simple Mail Transfert Protocol
SNDMSG Send message
TCP Transmission Control Protocol
Tél Téléphone
TLS Transport Layer Security
txt texte
UA User Agent
UUCP Unix to Unix Copy Protocol
WAP Wireless Application Protocol
WWW World Wide Web

viii
LISTE DES FIGURES

Page

Figure 1.1 Transfert du courrier par le protocole SMTP 9

Figure 1.2 Transfert du courrier par le protocole POP 10

Figure 1.3 Cheminement du message électronique par les agents de 12

transfert de courrier

Figure 1.4 Chaîne du courrier électronique 13

Figure 1.5 Serveur de courrier 13

Figure 2.1 Vue générale du système Unix 29

Figure 2.2 Les composants de Postfix, et les flux circulants entre eux. 34

Figure 2.3 Les méthodes réception de courriers avec Postfix 36

Figure 2.4 La livraison des courriers 37

Figure 2.5 Inspection du contenu des messages avec Postfix 42

Figure 2.6 Inspection du contenu par le serveur cleanup 43

Figure 2.7 Filtrage de contenu après mise en file d’attente 43

Figure 2.8 Topologie adoptée pour le serveur 45

Figure 2.9 Architecture globale du serveur mail sécurisé 49

ix
LISTE DES TABLEAUX

Page

Tableau 1.1 Spécification d’encodage dans l’en-tête du message 16

Tableau 1.2 Spécification d’encodage dans le corps du message 17

Tableau A.1 Table d’équivalence entre caractère hexadécimale et binaire 57

Tableau A.2 Table d’équivalence entre caractère hexadécimale et binaire 6 bits 57

x
LISTE DES ANNEXES

Page

Annexe 1 Protocoles d’échange et standard d’encodage 52

Annexe 2 Mise en place d’un serveur DNS avec Bind 58

Annexe 3 Fichier de configuration de Postfix 60

xi
INTRODUCTION

De nos jours, il semble que tout change d’un instant à l'autre. Il suffit de cligner des
yeux, d’éternuer ou de se reposer un instant sur ses lauriers, pour passer à côté de quelque
chose. Cela pouvait être la dernière évolution ou innovation, un nouveau raccourci encore
plus rapide, ou un gadget électronique ou numérique dernier cri destiné à transformer et à
améliorer notre vie. Ainsi, si quelques jours s'avèrent nécessaires pour l'envoi d'un courrier
national, voire quelques semaines pour les envois internationaux, de plus en plus de gens
utilisent actuellement les courriers électroniques pour économiser du temps et de l'argent.

En effet, avec le Web, l'autre grande application d'Internet est le courrier


électronique, qui devient rapidement un outil indispensable complémentaire du téléphone, du
fax et du courrier traditionnel. Le courrier électronique permet d'adresser à un ou plusieurs
destinataires, quasiment instantanément, un texte d'une longueur quelconque, auquel peuvent
être jointes une ou plusieurs pièces (documents, images, programmes). Ce texte peut être brut
(non formaté), ou rédigé en HTML, comme une page web, ce qui permet de l'enrichir
d'images, de mises en forme du texte, de couleurs.

Cependant, ce grand succès du courrier électronique n’est pas sans inconvénients.


L’émergence exubérante des spams, des messages intempestifs ainsi que des nombreux virus
harcèlent à présent les internautes. On estime actuellement que la croissance des messages
intempestifs est telle qu’elle avoisine la moitié du courrier expédié. En tant qu’individus, nous
sommes contrariés par ce genre de messages et par le temps perdu à les identifier et les
effacer. Le coût pour les entreprises en est plus élevé et cela d’autant plus que les services des
systèmes d’informations ont besoin de fournir de la mémoire supplémentaire uniquement pour
recevoir ces messages ainsi que les logiciels spéciaux qui les filtrent. Les virus représentent
un autre problème. Des études à travers le monde estiment le coût des virus à 28 milliards de
dollars US pour 2003. Ce chiffre devrait s’élever à 75 milliards en 2007. S’ajoute au coût
même du virus, le coût des logiciels anti-virus que les entreprises doivent acheter.

Ceci nous amène à penser à une architecture plus sécurisée et plus économique du
courrier électronique tant au niveau du serveur qu’au niveau du client. Ce mémoire intitulé
« Etude sur le courrier électronique » est prévu à cet effet. Pour ce faire, une étude

1
détaillée sur les e-mails et leurs fonctionnements sera d’abord entamée dans un premier plan.
Ensuite sera proposée une solution libre pour une meilleure sécurisation des serveurs de
messagerie.

2
CHAPITRE 1 :

GENERALITES SUR LES


COURRIERS ELECTRONIQUES

3
Ce chapitre étudie le fondement du courrier électronique avec la description des
différents éléments qui entrent en jeu depuis l’expéditeur jusqu'au destinataire final. Il expose
également les dangers encourus par le courrier électronique à l’heure actuelle et propose un
modèle d’installation et sécurisation des outils de gestion de courrier.

1.1. PRESENTATION DU COURRIER ELECTRONIQUE

a. Historique

En mars 1972, Ray Tomlinson, ingénieur de la société BBN, qui est alors sous
contrat avec le gouvernement américain pour le projet Arpanet, a mis au point deux
programmes. Le premier, SNDMSG (pour Send Message) associé à un autre logiciel baptisé
READMAIL, permet à plusieurs personnes qui partagent le même ordinateur de s'y laisser des
messages. Le second, CPYNET, permet de copier simultanément un fichier sur tous les
ordinateurs d' Arpanet (qui relie à l'époque 15 machines!). Il se crée deux boîtes aux lettres
électroniques sur deux ordinateurs situés côte-à-côte et réussit à envoyer un message d'un
ordinateur à un autre. Le courrier électronique est né! On ne l'appelle pas encore e-mail mais
Netmail. A l'occasion, Ray se doit de définir l'adresse électronique. Il décide de séparer
l'adresse en deux parties. D'un côté, le nom de l'utilisateur et de l'autre, le nom de l'ordinateur
sur lequel se trouve la boîte de réception. Pour séparer les deux parties, le choix de Ray se
porte sur l'arobase, @. Car l'@ ne fait pas partie des noms communs ou propres (donc pas de
risque de confusion) et a l'avantage en anglais de se prononcer "at", c'est-à-dire "chez" ou "à"
en français.

La première adresse électronique de l'histoire est ainsi tomlinson@bbn-tenexa (BBN


pour le nom de l'employeur de Tomlinson et tenexa pour indiquer le système d'exploitation
utilisé, Tenex). Puis suivent les logiciels de messageries et protocoles de courriers (RFC 733
Mail spécification,…) et un peu plus tard, vers 1985 le nom de domaine ‘.com’ devient le
premier nom de domaine enregistré.[1]

b. Eléments de structure d’un courrier électronique

Un courriel, Mél ou e-mail est un petit paquet de données qui circule sur Internet
d'un ordinateur à un autre, plus précisément d'une boîte aux lettres électronique à une autre.

4
Tout comme un courrier postal, un courrier électronique est composé:

-de l'adresse électronique du ou des destinataire(s) du courrier (et éventuellement


des destinataires en copie).

-d'un contenu (dit aussi corps), qui contient par exemple le texte du message, des
fichiers (comme des images), etc. et qui peut être associé facultativement à un ou plusieurs
fichiers joints (par exemple la liste des courses, une photo de vacance, etc.)

-de quelques informations destinées à l'acheminement du message, équivalentes des


tampons postaux (date et heure, etc.).

A la différence des courriers postaux, il comporte en plus, un objet (ou sujet) pour
identifier le message.

(i). Présentation des adresses

Les adresses de courrier électronique sont de la forme identifiant@domaine.mg tel


que:

-identifiant est le nom du correspondant et correspond parfois à un groupe de


destinataire.

-domaine est le nom de domaine. C'est l'endroit où est hébergé le courrier (une
machine ou un ensemble de machines). Plusieurs personnes peuvent être hébergées au même
endroit (sur Wanadoo par exemple).

-@ est un signe appelé arobase. En informatique, @ se lit "at" ("chez" en français).


En effet, un compte e-mail est hébergé sur une machine. Ici identité est hébergé chez
domaine.mg [2]

5
(ii). Les en-têtes [2] [4]

Lorsqu’on affiche un courrier électronique, les premières informations à apparaître


sont d'ordre purement pratique : les noms de l'expéditeur et des destinataires (ou à défaut leur
adresse électronique) ainsi que la date et l'objet du message. Ces informations, qui identifient
le message et permettent son acheminement, constituent les en-têtes du courriel. Il existe deux
types d’en-tête :

• Les en-têtes nécessaires à l'acheminement

Un courrier électronique a besoin, pour être expédié, de quelques informations. Ces


informations sont fournies par l'expéditeur du message, soit lors de la composition du courriel
(expéditeurs et objets), soit lors du paramétrage de son logiciel de messagerie (adresse de
l'expéditeur ou adresse de réponse). Voici un exemple:

From : identifiant@domaine.mg (Adresse électronique de l'expéditeur).

To : gaby@nullepart.mg,lanto@wanadoo.mg (Adresse électronique du ou des


destinataire(s) du courrier).

Reply-To : robert@labas.mg (Adresse électronique à laquelle le courrier sera


renvoyé après utilisation de la commande Reply (Répondre). Si ce champ est vide ou
inexistant, la réponse sera envoyée à l'adresse électronique spécifiée dans le champ From).

Subject : essai (Sujet du message, qui apparaît dans la liste des courriers lorsque le
destinataire les récupère et permet de cerner le contenu du courriel).

Cc : rakoto@voyage.mg,rabe@ami.mg (Liste d'utilisateurs qui recevront le


courrier en copie).

Bcc : andry@voici.mg (même chose que Cc:, sauf qu'ici le destinataire principal n'a
pas connaissance de la liste des personnes qui reçoivent la copie du courrier.)

Priority : 3 (Niveau de priorité du courrier).

6
Disposition-Notification-To : robert.identité@voyage.mg (Adresse définie pour la
réception de la confirmation de lecture. La présence de ce champ active de ce fait la
confirmation de lecture).

X-Mailer : Microsoft Outlook Express 5.5 (Logiciel utilisé par l'expéditeur)

MIME-Version : 1.0 (Signifie que le message utilise le protocole MIME et précise


la version utilisée)

Content-Type : text/plain; charset=iso-8859-1 (Type de contenu MIME présent


dans le message (texte simple, texte enrichi, HTML, images, sons, etc.) et jeu de caractère
utilisé).

Content-Transfer-Encoding : 8 bits (Codage utilisé. Valeurs possibles : 7 bits (par


défaut), 8 bits (binaire mais avec des lignes de taille maxi 998 octets), binary, Base 64,
Quoted-Printable).

• Les en-têtes de trace

D'autres informations sont ajoutées dans les en-têtes au cours du trajet de l'e-mail.
Ces informations sont l'équivalent des tampons postaux des courriers traditionnels : elles
portent la trace (heure et identification) des différents serveurs qui ont participé à
l'acheminement du courriel. On peut donc en les examinant retracer le parcours d'un e-mail.

Comme ces informations sont ajoutées automatiquement lors du parcours, elles ne


peuvent être modifiées. Ce sont donc les seules informations considérées comme fiables dans
un courrier électronique. Ce sont elles qui sont prises en compte lors d'une enquête, pour
remonter au véritable expéditeur d'un message litigieux (spam, injure, escroquerie, etc.).

Received: from mail-gene.net (mail-gw5.gene.net [206.13.28.23]) by


ixmail9.ix.netcom.com (8.8.7-s-4/8.8.7/[NETCOM v1.01]) with SMTP id; for
identifiant@domaine.mg; Thu, 19 Feb 2006 13:23:48 +100.

Trace ajoutée par un serveur SMTP ayant relayé le courriel. Il est fait mention des
noms et adresses IP des précédents serveurs et de l'heure du passage. Chaque serveur SMTP
rencontré laisse sa ligne Received. La dernière ligne Received correspond au premier serveur
rencontré. Cette ligne received est ajoutée par les informations suivantes:

7
Message-ID: 4653.13271127@domaine.fr (Numéro d'identification unique du
message).

Return-path: identifiant@domaine.fr (Adresse de retour en cas d'erreur (adresse


inconnue, etc.). Cet en-tête est généralement ajouté directement par le programme d'envoi de
courriel).

Date: Thu, 19 Feb 2006 13:22:32 +0100 (Date et heure d’envoi. Le dernier chiffre
(+0100) correspond au fuseau horaire de l'émetteur : +0100 signifie GMT+1, -0500 signifie
GMT-5).

(iii). La signature

La signature sert à se présenter et à fournir ses propres coordonnés, à faire de la pub


pour son site ou à mettre une petite touche sympathique à la fin des mails. Elle est donc le
message qui apparaît au bas de chacun des courriers électroniques. Une signature reprend
généralement un nom, un numéro de téléphone, une citation ou un lien vers un site. Seulement
quatre ou cinq lignes sont un maximum pour respecter la Nétiquette. En pratique, on sépare le
corps du message et la signature par le symbole ‘-- ’, et le logiciel reconnaît automatiquement
la suite comme une signature. Il est aussi à noter que la plupart des outils d'envoi de courrier
permettent l'enregistrement d'une, voire de plusieurs, signatures.

Exemple:

Robert Jean

Retraité de la société agri

http://www.agri.mg

Tel : 00261331265018

Fax : 00261331265018

1.2. PRINCIPE DE LA MESSAGERIE

Quel que soit le moyen qu'on utilise, il suffit pour envoyer un e-mail de créer un
nouveau message, de renseigner l'adresse électronique du correspondant, de taper l'objet et le

8
texte du mail, puis de cliquer sur un bouton ou un lien Envoyer. Pour lire un message, il suffit
de cliquer sur le bouton ou le lien Recevoir (ou envoyer et recevoir) puis de cliquer sur chaque
message pour le lire.

Techniquement, le principe est presque une lapalissade, mais le rappel est important:
un courrier électronique circule par définition sur Internet. En clair, il passe d'ordinateur en
ordinateur (ou de serveur en serveur), de l'ordinateur de l'expéditeur à celui du destinataire.
Pour ce, il emprunte différentes voies et utilise plusieurs protocoles.

a. Les protocoles de messagerie

(i). Le protocole SMTP

SMTP est le protocole qui régule les échanges de courrier électronique (cf.
ANNEXE 1). Il est un peu l'équivalent sur Internet du service postal traditionnel, avec toutes
ses règles de fonctionnement.

Le protocole SMTP spécifie ainsi le format des adresses des utilisateurs, l'en-tête des
courriers (from: , to: , etc.), les possibilités d'envoi groupé ou la gestion des heures.

SMTP met en communication deux serveurs, en gros deux bureaux de poste: celui
de la personne qui envoie un courrier (dans cet exemple, il a pour nom smtp.wanadoo.fr) et
celui de la personne qui le reçoit (smtp.free.fr). La figure 1.1 montre cette communication
entreprise par SMTP entre l’expéditeur et le serveur. [3] [5]

Figure 1.1:Transfert du courrier par le protocole SMTP

Le mail passe d'un serveur à l'autre directement ou par quelques relais. Il se peut que
la liaison ne concerne qu'un serveur, quand l’expéditeur et le destinataire sont gérés par un
même serveur. Un message met en général quelques secondes seulement pour aller d'un point
à un autre sur l'Internet.

9
(ii). Le protocole POP

Le protocole POP, dont la dernière version est la version 3 (cf. ANNEXE 1), a été
conçu pour permettre de récupérer un courrier sur une machine distante. POP va relever les
courriers dans la boîte aux lettres de l’utilisateur et les chargent dans le disque dur de ce
dernier comme l’illustre la figure 1.2 ci-dessous. [6][7]

Figure 1.2: Transfert du courrier par le protocole POP

Le protocole POP gère l'authentification, c'est-à-dire la vérification du nom


d’utilisateur et le mot de passe. Il bloque également, la boîte aux lettres pendant que le
propriétaire de celle-ci accède à son compte, ne permettant pas à une autre connexion
d'accéder en même temps au même courrier. Le protocole POP gère l’envoi de message, ainsi
que la réception de messages d'erreur (ERR) ou d'acquittement (OK). Voilà pourquoi dans un
logiciel de courrier, il faut toujours donner l'adresse du serveur POP, généralement du type
pop.quelquechose.fr

L'évolution du courrier électronique vers le multimédia et le manque de flexibilité de


POP favorisent l'émergence d'un nouveau protocole : l'IMAP.

(iii). Le protocole IMAP [8] [9]

L'IMAP est un protocole qui permet, depuis son ordinateur, d'aller relever les
messages dans une boîte aux lettres électronique. Le protocole IMAP est le successeur du
protocole POP3, qui aujourd'hui, est proposé en standard chez tous les fournisseurs d'accès et
supporté par tous les logiciels de messagerie.

10
• Comparaison entre POP et IMAP

Par une relève POP3, les courriers sont transférés du serveur au disque dur et effacé
du serveur. Par conséquent, à moins que l’utilisateur ait configuré son logiciel pour cela, il ne
pourrait plus avoir accès à ses courriers à partir d’un autre ordinateur.

Avec IMAP, en revanche, tous les courriers et dossiers de messages restent sur le
serveur. A chaque fois que l’utilisateur se connecte au serveur par IMAP, il n'effectue plus
une relève des messages, mais une synchronisation des messages. Le logiciel affiche alors une
copie de sa boîte aux lettres, archives comprises. Comme l'original reste sur le serveur, on
peut avoir accès aux courriers à partir de n’importe quel ordinateur.

• Les avantages de IMAP

Avec IMAP, les messages et les modifications que leur sont apportés, demeurent sur
le serveur. Cela permet d'économiser l’espace disque.

Outre, la boîte aux lettres est synchronisée : cela permet à l’utilisateur de consulter
facilement ses courriers depuis différents ordinateurs.

Enfin la synchronisation peut être sélective : on peut ne télécharger que l'en-tête des
messages ou les dossiers de courrier utiles. IMAP est ainsi utile à toutes les personnes qui se
déplacent et désirent rester en contact avec leurs e-mails.

b. Cheminement d’un message électronique

Pour transmettre un courrier électronique, bon nombre d’agents entrent en jeu tout au
long du parcours tant au niveau client qu’au niveau serveur. Quand l’information à échanger
est prête, comportant un certain nombre d’autres indications (l’enveloppe), l’ensemble est
géré par un logiciel installé sur la machine utilisateur (Outlook Express, Eudora, Pegasus,...),
c’est un User Agent (UA). Celui-ci sert à la fois d’éditeur et de transmission de messagerie
vers le serveur.

A la réception du message, le serveur de messagerie, appelé Message Transfert Agent


(MTA) stock le message dans le Mail System ou mailbox (MS) et décode une partie de
l'enveloppe pour connaître sa destination. Le message circule d’abord de MTA en MTA

11
jusqu'au serveur entrant du destinataire. Le protocole employé est SMTP (Simple Message
Transfer Protocol) qui est un protocole TCP. Il faut donc un client et un serveur SMTP pour
envoyer un message d'une machine à l'autre. A ce stade le message n'est pas encore disponible
pour son destinataire puisqu'il repose dans un serveur. La personne doit activer le client de
transmission de son User Agent pour recevoir l'information. Son logiciel UA, qui sert à
confectionner un message, permet également d'afficher les messages entrants. Il décode
certaines informations de l'en-tête pour son fonctionnement. C'est ainsi qu'il peut reconnaître
que l'émetteur demande un accusé de réception. Il permet également d'afficher un résumé
appelé sujet (si l'émetteur l'a renseigné). [10]

La figure 1.3 résume ce cheminement du courrier électronique.

Figure 1.3 : Cheminement du message électronique entre deux User Agents.

c. Parcours de la messagerie électronique

La figure 1.4 montre en gros, la chaîne du courrier électronique. Lorsque


l'expéditeur envoie un courrier électronique, il met en oeuvre le protocole SMTP. Il utilise à
cet effet le serveur SMTP de son fournisseur d'adresses. Pour consulter ses messages, le
destinataire doit les relever en utilisant le protocole POP. Il utilise ainsi le serveur POP (ou
POP3) de son fournisseur d'adresses. Il peut également, si son fournisseur d'adresses le lui
permet, utiliser le protocole IMAP, plus puissant.

12
Figure 1.4: Chaîne du courrier électronique

d- Stockage des messages

Une boîte aux lettres électronique n'est généralement pas située sur l’ordinateur de
l’utilisateur. Elle est située sur une machine distante, appelée "serveur de courrier", esquissé
dans ce paragraphe par la figure 1.5. Cet ordinateur est situé chez le fournisseur d'adresses e-
mail et est, relié de façon permanente à Internet.

Figure 1.5 : serveur de courrier

Ainsi, lorsqu’un utilisateur interroge sa boîte aux lettres électronique, il rapatrie sur
son disque dur les courriers qui se trouvent sur son serveur de courrier (en utilisant le
protocole POP ou IMAP). Et lorsqu’il expédie un courrier à quelqu'un, ce courrier est stocké
dans le serveur de courrier du destinataire, jusqu'à ce que celui-ci relève ses messages.

Il faut cependant remarquer que la boîte aux lettres du correspondant peut être située
sur son ordinateur, s'il possède un ordinateur connecté au sein d'une entreprise et qu'il dispose
d'un logiciel serveur de courrier.

Il est important de se souvenir que le courrier électronique est stocké sur un serveur
extérieur tant que celui-ci n’est pas lu et peut donc y être lu et examiné à souhait. Ceci en fait
donc par nature, un outil moins sécurisé que le courrier ordinaire.

13
e- Encodage du courrier électronique

Lorsque des difficultés d'affichage se présentent, c'est généralement que les


caractères sont "codés" avec un code bien particulier, qui n'est pas celui utilisé
(probablement, le code ISO-8859, ou un équivalent). En regardant l'en-tête du mail, on peut
savoir quel encodage est utilisé. Il suffit alors d'utiliser le même pour lire sans problème.

Le codage dans le courrier électronique marche en 7 bits car les protocoles qu’ils
utilisent, SMTP et POP gèrent des fichiers à 7 bits.

(i). Codage du message

Sur Internet, on ne transmet pas directement les caractères. On associe à chacun un


code en binaire exactement comme un code barre formé de traits fins et de traits épais et c'est
ce code qui circule sur Internet. Le nom du code originel, c'est le code ASCII (ou US-ASCII).
Grâce à lui, chaque caractère (a, b, c, ..., A, B, C, 0,1, 2, ..., $, #, etc.) est associé à un code
sur 7 bits, c'est à dire un code formé de 7 barres.

Le problème est que ce codage sur 7 bits ne peut répertorier que 128 caractères (10
chiffres (de 0 à 9), 26 lettres minuscules, 26 lettres majuscules, une dizaine de signes de
ponctuation, des caractères exotiques (&, #, \, $, %) et des caractères spéciaux), il ne reste
plus assez de cases libres dans les 128 pour introduire les accents [11].

Une seule solution s’impose alors, ajouter une barre (1 bit) pour pouvoir répertorier
davantage de caractères. Passer de 7 bits à 8 bits permet en effet d'accepter le double de
caractères (de 128 à 256) [11] [12].

Par contre le courrier électronique est à l'origine basé sur le protocole SMTP, qui ne
gère que le code à 7 bits. Donc, pour pouvoir faire passer des codes à 8 bits dans un système

14
de codes à 7 bits, il a fallu trafiquer un peu le message pour qu’il puisse passer sans problème
à travers les mailles du filet, soit coder. D’où la naissance d’un standard, le standard MIME.

• Le standard MIME [13] [14]

Conçu à une époque où le courrier électronique se limitait à du texte, le protocole


SMTP impose certaines restrictions sur le contenu des messages : il ne doit être composé que
de caractères ASCII, les lignes ne peuvent pas excéder mille caractères et la taille totale du
contenu ne peut pas excéder une certaine dimension. Un peu problématique pour envoyer des
mails multimédia!

L'extension MIME a été conçue pour remédier à cet inconvénient. MIME est une
spécification d'Internet, permettant d'échanger des textes écrits dans des langues différentes
(et utilisant des ensembles de caractères différents) ainsi que des documents de tous types
(images, sons, vidéos...), entre des machines de systèmes différents (PC, Mac, Linux, Unix,
etc.). Avec MIME, on peut donc transmettre de façon transparente à tous les destinataires
connectés à Internet des messages contenant par exemple :

-des textes contenant des caractères autres que l'ASCII, notamment des caractères
accentués, des cédilles, etc.…

-du texte enrichi (gras, souligné, couleur...)

-des images

-des sons

-des fichiers

Notons que MIME précise en même temps la nature du contenu (text/plain), le jeu de
caractères utilisé (iso-8859-1) et le mode d'encodage : Quoted-Printable ou Base 64.

Deux principaux systèmes de codage cohabitent au sein d’un ensemble appelé


MIME:

Le Quoted-Printable : les caractères accentués sont remplacés par des signes ‘=’
suivis du code hexadécimal du caractère (par exemple =E9 pour "é"...). L'ensemble du

15
message ne contient donc plus que des caractères 7 bits et passe sans encombres à travers les
différentes passerelles du Net. A l'arrivée, le logiciel de messagerie fait l'opération inverse (cf.
ANNEXE 1).

Le Base 64 : les caractères 8 bits sont codés sur 6 bits : un groupe de 3 octets (soit
24 bits) devient ainsi quatre ensembles de 6 bits, les 6 bits représentant un sous-ensemble de
l'US-ASCII : A-Z, a-z, +, /, et = (cf. ANNEXE 1). Là aussi, l'ensemble du message passe sans
encombre à travers les différentes passerelles du Net.

En pratique, il faut plusieurs conditions pour que les accents "passent" :

- que les logiciels de courriers de l’expéditeur et de son correspondant supportent le


MIME (Quoted-Printable et Base 64) et soient correctement configurés.

- et que tous les routeurs (ordinateurs qui font circuler l'information) entre les deux
machines émettrice et réceptrice n'y soient pas trop allergiques.

MIME prend en charge le message électronique. Il en encode les différentes parties


(texte principal, pièces jointes) et place dans l'entête les informations pour que le logiciel qui
réceptionne le message puisse le décoder. Les tableaux suivants montrent l’encodage utilisé,
respectivement dans l’en-tête et dans le corps du message lors de l’envoi du courrier
électronique.

Tableau 1.1 : spécification d’encodage dans l’en-tête

Dans l'entête du message


Mime-version : 1.0 Annonce que le message
utilise MIME et précise la version
utilisée
Content-type: multipart/mixed; Annonce que le message
est composé de plusieurs parties
boundary="E5F934616F3D7E91EBA02022"
hétérogènes

16
Tableau 1.2: spécification d’encodage dans le corps du message

Corps du message
This is a multipart MIME message
Boundary_(E5F934616F3D7E91EBA02022) Première partie du
message: on nous annonce que va
Content-type: text/plain; charset=iso-8859-1
suivre un texte, encodé en Quoted-
Printable
Content-transfer-encoding: Quoted-printable
Ci-joint le sch=E9ma que j'avais promis de Le texte en question : le
t'envoyer. Quoted-Printable est identifiable
aux=E9
Bonne r=E9ception !S=E9b
Boundary_(E5F934616F3D7E91EBA02022) Seconde partie du
message: ici il s'agit d'une image au
Content-type: image/gif; name=schema.gif
format gif, encodée en Base 64.

Content-transfer-encoding: Base 64

Content-disposition:
attachment;filename=schema.gif

Content-description: schema.gif
R0lGODdhEAAQAPAAAAAAAP///ywAAA L'image (encodée) en
AAEAAQ CKIyPqcCt2NyDINR5mMW5Xi5x1pdEhjai question: le Base 64 est identifiable
IZqe7KtubibT44lFbE6KUwEAOw== à l'utilisation exclusive des
caractères A-Z, a-z, +, /, et =)
-Boundary_ (E5F934616F3D7E91EBA02022) Fin

f- Les fichiers joints

Le système de transport des fichiers étant assez rudimentaire, les fichiers souffriront
du voyage s'ils ne sont pas correctement emballés, c'est-à-dire "codés". C'est généralement le
logiciel de messagerie qui se charge automatiquement du codage.

17
Les fichiers sont donc codés en 8 bits mais, le gros problème est que le courrier
électronique marche par 7!

Pour pouvoir faire passer des codes à 8 bits dans un système de codes à 7 bits, une
méthode s’impose.

C'est à peu près la même que celle qui sert à transmettre les accents. Pour
transmettre des codes de 8 bits avec un système 7 bits, il suffit de tout redécouper à un format
différent. En gros, d'aligner tous les 0 et les 1 pour former une gigantesque chaîne, puis de
redécouper cette dernière, par exemple, en blocs de 7 bits. A l'autre bout de la chaîne, on
refera l'opération inverse. [11]

Néanmoins, la liberté de choix dans le domaine informatique explique l’utilisation


de diverses plateformes (types d’ordinateurs, systèmes d’exploitations), divers programmes et
diverses versions, et surtout divers formats. Raison pour laquelle, lors de l’envoi d’un fichier
attaché, il faut toujours s’assurer que le logiciel de messagerie du destinataire sache lire ou
décoder le fichier joint pour éviter les incompatibilités.

g- Format d’échanges [15]

(i) Les textes

Le transfert de fichier contenant du texte est certainement le plus répandu. En effet,


c'est sous cette forme que les données existent le plus souvent.

Si on veut que le destinataire puisse lire et modifier le contenu du fichier, on peut


choisir:

-Le format RTF: La plupart du temps, c’est une meilleure solution. Ce format est
un standard que peuvent lire tous les programmes de traitement de textes. Il permet de
conserver les formats du texte.

Pour transmettre un fichier au format RTF, il faut l'enregistrer dans ce format. Cela
se fait par l'intermédiaire de la commande ‘Enregistrer sous…’ que l'on trouve dans tous les
programmes de traitement de textes. Et pour s'assurer de la bonne transmission du fichier, il
est essentiel de nommer le fichier en terminant son nom par l'extension «.rtf» par exemple
«mon_fichier.rtf».

18
-Le format HTML: est le format dans lequel sont écrites les pages www. Comme
l'un des buts du Web est d'être lu sur un maximum de machines, ce format est donc de facto
un moyen idéal pour transmettre des fichiers. On pourra en principe utiliser ce format pour
transmettre du texte, mais il faut savoir que de nombreuses restrictions de formatage
empêchent qu'il soit utilisé de manière systématique dans ce but. La procédure à suivre pour
enregistrer un fichier dans ce format est analogue à celle du RTF, mais on choisira l'option
HTML à la place de RTF. Il est ici encore important de nommer le fichier en terminant son
nom par l'extension «.html» ou «.htm», par exemple «mon_fichier.html».

-Le format TXT ou ASCII: Il faut citer ici encore le format TXT ou texte pur,
appelé aussi format ASCII. Ce format, qui est le plus standard, offre l'avantage de permettre la
transmission à coup sûr. Cependant, de gros inconvénients ne permettent pas son utilisation
systématique: pas ou peu de formatage, pas de caractères avec marques diacritiques (lettres
accentuées ou avec cédilles). Il convient de l'utiliser lorsque l'on veut transmettre des données
brutes. Si le choix est porté sur ce format, le nom du fichier doit se terminer par l'extension
«.txt».

Si le destinataire ne doit au contraire que consulter et éventuellement imprimer mais


pas modifier le document comme un procès-verbal ou une convocation, l’idéal est d’utiliser le
format PDF.

-Le format PDF de la maison Adobe, est un format qui représente un document de
façon indépendante du matériel, du système d'exploitation et du programme utilisé pour créer
le fichier. Ce format a été développé spécifiquement pour faciliter les transferts de documents
entre ordinateurs.

Ces propriétés confèrent au PDF des avantages très importants: les documents
peuvent être visualisés partout et imprimés sans perte de qualité, et surtout, la mise en page
voulue par l’auteur du document est complètement conservé, pour autant que l'on prenne
certaines précautions lors de la conversion en PDF.

Pour lire les documents en PDF, il suffit de disposer d'un programme appelé Acrobat
Reader. Ce programme existe sur toutes les plateformes. Il est entièrement gratuit et
disponible en téléchargement libre sur internet. Le nom du document PDF se termine par une
extension «.pdf»

19
(ii). Les données

-le format tabulé est utilisé pour les bases de données et les feuilles de calculs. Il
s'agit d'un fichier ASCII pur, donc sans aucun format, dont chaque ligne comporte un
enregistrement de la base de données, les différents champs étant séparés par des caractères de
tabulation. Les enregistrements sont séparés par des retours chariot. Pour enregistrer un
fichier existant sous le format tabulé, on choisit dans le programme la commande Exporter
ou Enregistrer sous…, que l'on trouve dans tous les programmes de gestion de base de
données.

Dans la fenêtre suivante, on choisira dans l'option Tabulations ou l'option Virgules,


suivant le choix du format. Il sera judicieux de terminer le nom du fichier par l'extension
«.tab» dans le premier cas, et par «.csv» dans le second.

(iii) Les images

L'avènement du Web a profondément modifié la façon de transmettre les images, en


définissant de nouveaux formats qui se sont répandus de façon très rapide.

Les images vectorielles en sont restées à des techniques et à des formats moins
récents, qui sont toutefois aussi efficaces.

-Le format PostScript est le standard absolu pour les images vectorielles. Il a été
développé il y a plus de quinze ans par la maison Adobe. Ce format est celui qui est utilisé
dans les imprimeries pour la production de tout le matériel imprimé, journaux, livres,
plaquettes

Pour les images bitmaps, le problème est un peu plus simple à résoudre, l'arrivée du
Web ayant imposé des formats complètement multi-plateformes.

-Les formats GIF et JPEG: cette extension étant attribuée aux images de taille
inférieure à 256Mo, le transfert de ce type de fichier ne pose aucun problème. Il est toujours
possible de visualiser de telles images à l'aide d'un navigateur Web.

20
1.3. FLEAUX DE LA MESSAGERIE ELECTRONIQUE

a- Les virus

Les virus sont désormais une réalité que tout un chacun doit prendre en compte. Il
est ainsi aujourd'hui primordial, lorsqu'on bénéficie d'un accès à Internet et qu'on utilise le
courrier électronique, d'être bien informé et protégé sur les virus. Un virus est un programme
dont le but est de se reproduire. [16].

Les virus se cachent généralement dans les fichiers attachés, les programmes ou les
documents Word par exemple. Mais depuis le développement du courrier électronique
multimédia (avec mise en page, images, sons, animations, etc.), le virus peut aussi se cacher à
l'intérieur même du mail. Ici, ce n'est plus du texte brut qui constitue l'e-mail, mais du code
HTML, accompagné d'images mais aussi parfois de petits programmes conçus pour le Web.
C'est le cas notamment des contrôles ActiveX (écrits dans un langage développé pour le Web
par Microsoft), qui peuvent exploiter des brèches de sécurité dans Windows. En clair, en
programmant bien, on peut concevoir des virus dans ces langages. Et les diffuser ensuite par
courrier électronique, ni vu ni connu. Il importe donc d'être vigilant si le logiciel de
messagerie utilisé interprète les contrôles ActiveX.

b- Le spamming

Le spamming, est le bombardement intempestif des newsgroups ou des boîtes aux


lettres électroniques par des messages de toutes sortes, publicitaires ou non.

Plus précisément, sont notamment considérés comme étant des actes de spamming,
le fait d'écrire à un inconnu pour lui demander de venir visiter un site, d'inclure un individu
dans une liste de diffusion sans son consentement, de diffuser sur un forum de discussion des
messages sans rapport avec le thème de ce dernier. Du simple particulier qui veut faire de la
publicité pour son site perso jusqu'à la PME qui veut promouvoir ses produits à moindre coût.
Généralement les grosses sociétés, pour des questions d'image et d'efficacité, mettent les
formes et respectent un peu mieux les internautes. On parle alors non plus de spam, mais d'e-
mail marketing. Le spamming ne coûte presque rien! L'achat de fichiers d'adresses ou de
logiciels collecteurs d'e-mails se fait à un coût dérisoire. L'envoi des courriers électroniques
ne coûte pas grand chose non plus (il suffit d'avoir une connexion Internet). Enfin, les retours
sont nombreux : même avec un taux de clic faible, un envoi massif à plusieurs millions

21
d'adresses génère quelques milliers de visites! En clair, c’est bénéfique pour l'envoyeur.
[17][18]

c- le mailbombing

Le mailbombing consiste à encombrer volontairement la boîte aux lettres d'un


destinataire par l'envoi de dizaines, centaines ou milliers de courriers électroniques vides,
insultants ou volumineux, parfois même accompagnés de virus en pièce jointe dans le but de
nuire. Les mailbombings sont généralement produits à l'aide de logiciels spécialisés.

Tout d'abord, le mailbombing fait perdre du temps, pour le téléchargement des


messages et le tri et de l'élimination des mails parasites. A la perte de temps s'ajoute le risque
d'une perte de données. Car la plupart des fournisseurs d'accès ou d'adresses e-mail fixent une
taille maximale aux boîtes aux lettres, généralement de 1 à 20 Mo. Si le mailbombing sature
la boîte, alors l’utilisateur ne pourra plus recevoir de mails. [18]

d- Le crackage par mot de passe

La manière la plus classique par laquelle un hacker va essayer d'obtenir un mot de


passe est l'attaque avec un dictionnaire. Dans ce genre d'attaque, le hacker utilise un
dictionnaire de mots et de noms propres, et il les essaie un à un pour vérifier si le mot de passe
est valide. Ces attaques se font avec des programmes qui peuvent deviner des milliers de mots
de passe à la seconde, même quand ceux-ci sont «hachés». Ce procédé est d'autant plus facile
qu'il lui permet de tester des variations sur les mots : mots écrits à l'envers, majuscules et
minuscules, ajout de chiffres à la fin du mot...

22
CHAPITRE 2 :

LE SERVEUR POSTFIX
CONCEPTION DE L’ARCHITECTURE SECURISEE

23
2.1. LE SYSTEME D’EXPLOITATION LINUX

Unix est un système d’exploitation moderne, complet et efficace, disponible sur la


plupart des grands ordinateurs vendus. Son architecture ouverte et sa grande diffusion dans les
centres de recherches et les universités lui ont permis d’évoluer en intégrant de nombreuses
améliorations. Aujourd’hui, Unix est très utilisé en informatique scientifique, et pour les
serveurs réseaux : la grande majorité des serveurs sur Internet fonctionnent sous UNIX. Par
contre, sa relative complexité d’utilisation l’écarte des applications grand public.

Linux est une version libre d’Unix (le code source du système est disponible
gratuitement et redistribuable) qui connaît actuellement un grand succès, tant chez les
utilisateurs particuliers que sur les serveurs Internet/Intranet.

a. Présentation générale [1]

Linux est présenté aujourd'hui comme une alternative au système Windows de


Microsoft dans le domaine des serveurs.

Linux possède quelques avantages par rapport aux autres systèmes. Tout d'abord,
c'est un système d'exploitation stable : Linux est l'un des systèmes les plus fiables et robustes
existant à l'heure actuelle. En outre, Linux est un logiciel libre (liberté de comprendre le
fonctionnement, de diffuser, et de modifier le logiciel), ce qui permet à tous de corriger les
erreurs, d'effectuer des améliorations et d'adapter le logiciel à ses besoins. Linux est
également un système d'exploitation puissant, capable de fonctionner aussi bien sur de petites
machines que sur de gros calculateurs. C'est un système ouvert, c'est à dire conforme à de
nombreuses normes. Enfin, et ce n'est pas le moindre des avantages, Linux possède un faible
coût. Les distributions Linux sont constituées principalement de logiciels libres. Il est donc
possible d'acheter une distribution puis de l'installer sur d’autres machines.

Par ailleurs, Linux est certainement le système multiutilisateur le plus répandu dans
le monde. Il peut en effet traiter simultanément les travaux de différents utilisateurs (quand il
n’y a qu’un seul processeur, il n’y a pas vraiment de simultanéité, le plus souvent, le système
d’exploitation partage le temps de traitements entre les utilisateurs. On parle alors de système
à temps partagé). En outre, Linux est un système multitâche préemptif, il est capable
d’exécuter plusieurs travaux simultanément pour différents utilisateurs ou pour un seul. Pour

24
ce faire, il optimise la gestion de la mémoire virtuelle : une partition spéciale appelée
« swap » est créée lors de l’installation du système à cet effet. Enfin, Linux est un système
d’exploitation multiplateforme : il fonctionne sans problème sur chaque type de processeur
connu.

b. Architecture du système [2]

L’architecture globale de Linux est une architecture par couches (coquilles)


successives comme la montre la figure 2.1. Cette hiérarchie d’encapsulation permet d’écrire
des applications plus portables. Ainsi, par exemple, les applications utilisateurs ne gèreront
pas directement la couche matérielle ; le système d’exploitation servira d’interface entre ces
deux couches.

Figure 2.1 : Vue générale du système Unix

Du point de vue structure, Linux est essentiellement bâti autour de trois éléments : le
noyau, le shell et le système de fichier.

25
(i). Le noyau (kernel)

Le noyau est le programme qui assure la gestion de la mémoire, le partage du


processeur entre les différentes tâches à exécuter et les entrées/sorties. Il est lancé au
démarrage du système et s’exécute jusqu’à son arrêt. C’est un programme relativement petit,
qui est chargé en mémoire principale.

Le rôle principal du noyau est d’assurer une bonne répartition des ressources de
l’ordinateur (mémoire, processeur(s), espace disque, imprimante(s), accès réseaux) sans
intervention des utilisateurs. Il s’exécute en mode superviseur, c’est à dire qu’il a accès à
toutes les fonctionnalités de la machine : accès à toute la mémoire, et à tous les disques
connectés, etc. Tous les autres programmes qui s’exécutent sur la machine fonctionnent en
mode utilisateur : il leur est interdit d’accéder directement au matériel et d’utiliser certaines
instructions. Chaque programme utilisateur n’a ainsi accès qu’à une certaine partie de la
mémoire principale, et il lui est impossible de lire ou écrire les zones mémoires attribuées aux
autres programmes.

(ii). Le shell [3] [4]

Le shell est un interpréteur de commandes qui sert d’intermédiaire entre l’utilisateur


(une personne physique) et le système (un ensemble de programmes). Il permet de lancer les
commandes Linux disponibles sur une station, en leur affectant un certain nombre de
paramètres d’exécution, de contrôler les données d’entrée et de sortie, les messages d’erreurs
éventuelles, et surtout de les enchaîner de manière efficace et pratique. Le service essentiel
rendu par un shell est donc l'exécution de programmes.

Un shell est démarré pour chaque console ouverte (interprétateur de commandes) ; il


est interactif dans ce cas, car les lignes de commande tapées au clavier sont exécutées une par
une avec confirmation systématique (touche <return>). Un shell est également créé chaque
fois que la commande à exécuter se trouve être un fichier ASCII : le shell lit successivement
toutes les lignes du fichier, supposant que ce sont des commandes ; il disparaît (« rend la
main ») une fois la fin de fichier atteinte.

En simplifiant, un shell exécute une boucle infinie sur les actions suivantes:

- lecture d'une ligne

26
- interprétation de cette ligne comme une demande d'exécution d'un programme avec
des paramètres.
- lancement de ce programme avec passage des paramètres.

(iii). Le système de fichiers

Le système de gestion de fichiers est un outil de manipulation des fichiers et de la


structure d’arborescence des fichiers sur disque et a aussi le rôle sous Linux de conserver
toutes les informations dont la pérennité est importante pour le système (et pour les
utilisateurs). Ainsi tous les objets importants du système sont référencés dans le système de
fichiers (mémoire, terminaux, périphériques variés, etc.).[2]

Le système de gestion de fichier permet une manipulation simple des fichiers et gère
de façon transparente les différents problèmes d’accès aux supports de masse :

- partage : utilisation d’un même fichier/disque par plusieurs utilisateurs


- efficacité : utilisation de cache, uniformisation des accès
- droits : protection des éléments importants du système et protection interutilisateurs
- alignement : transtypage entre la mémoire et les supports magnétiques

c. Fonctionnement en réseau

Linux est un système d’exploitation réseau. Il implémente à cet effet la suite de


protocoles TCP/IP, TCP/IP est même considéré comme le protocole natif de Unix, donc de
Linux. Presque la totalité des serveurs sur Internet fonctionnent sous Unix/Linux. Linux est
très utilisé même comme serveur local d’un réseau intranet.

2.2. LE SERVEUR POSTFIX

a. Généralités

Depuis longtemps, le logiciel standard en matière de transfert de courrier était


sendmail qui était livré avec chaque distribution de Linux. Cependant, le paramétrage de
sendmail via son fichier de configuration très complexe /etc/mail/sendmail.cf n’est guère une
tâche facile. Et bien que la version 8 du logiciel s'accompagne d'une nouvelle manière de
générer les fichiers de configuration avec le préprocesseur m4, grâce auquel le travail de

27
configuration à la main se fait à un niveau d'abstraction plus élevé, configurer sendmail était
encore un travail non évident. [5]

Par conséquent, d'autres serveurs de mail tels que postfix ont vu le jour. Postfix
risque même de remplacer un jour prochain sendmail compte tenu de sa solidité et de sa
simplicité de configuration.

Postfix est ainsi devenu le serveur de messagerie (MTA) considéré comme le


remplacement de Sendmail. Il fut conçu par Wietse Venema.. Le projet de concevoir ce
serveur a été financé par IBM. Postfix fut nommé Secure Mailer lors de la première release et
fut publié ensuite comme logiciel libre sous son nom actuel. [6]

Un site Web avec une documentation complète : http://www.postfix.org/ est


disponible pour toute documentation concernant ce serveur.

Le développement du logiciel est très actif : la dernière version date du 4 février


2001. En plus, sa liste de diffusion reste très active (en moyenne 150 mails par jour depuis son
lancement) où Wietse Venema répond lui-même à de nombreuses questions.

Postfix est maintenant en version stable bien que la taille du code source du logiciel
reste légère. Il est disponible gratuitement sur de nombreux sites ftp.

b. Objectifs et fonctionnalités

(i). Objectifs principaux [6]

L'objectif de Postfix est d'implémenter une alternative viable au programme


Sendmail pour Unix/Linux. Ceci implique :

- Une large dissémination. Postfix doit être adopté par un grand nombre de personnes
pour avoir un impact significatif sur l'efficacité et la sécurité du courrier électronique.
C'est pourquoi le programme est distribué comme logiciel libre.
- Performance. Postfix est jusqu'à trois fois plus rapide que son concurrent le plus
proche Qmail. Un PC de bureau avec Postfix peut recevoir et distribuer un million de
messages différents par jour.

28
- Compatibilité. Postfix est conçu pour être compatible avec Sendmail pour rendre la
migration facile. Il supporte de ce fait les fichiers et les concepts manipulés par son
prédécesseur Sendmail.
- Fiabilité et robustesse. Postfix est conçu pour se conduire rationnellement lors des
montées en charge : Quand le système local n'a plus d'espace disque ou de mémoire,
Postfix se retire plutôt que d'aggraver le problème. Par conception, aucun exécutable
du programme ne grossit lorsque le nombre de messages s'accroît, il est conçu pour
rester maître de la situation.
- Flexibilité. Postfix est basé sur une douzaine de petits programmes, chacun d'eux
n’effectuant uniquement qu’une tâche spécifique : recevoir ou distribuer un message
distant, distribuer un message localement, changer une adresse, etc. Les sites avec des
besoins spécifiques peuvent remplacer un ou plusieurs de ces programmes par
d'autres. Il est aussi facile de désactiver une fonctionnalité.
- Sécurité. Postfix utilise plusieurs couches de défense pour protéger le système local
contre des intrus. Presque tous les exécutables de Postfix peuvent fonctionner dans un
répertoire avec des privilèges réduits : environnement chroot. Il n'y a aucun chemin
direct depuis le réseau jusqu'aux exécutables de distribution locale sensible à la
sécurité. Postfix ne fait même pas confiance à ses propres files d'attente, ou au contenu
de ses propres messages. Postfix filtre les informations fournies par l'expéditeur avant
de les exporter dans des variables d'environnement. Enfin, aucun exécutable de Postfix
ne fonctionne en mode setuid (set user identification) c’est à dire que Postfix ne peut
changer les droits et privilèges de ses utilisateurs.

(ii). Autres fonctionnalités [7]

Bien d’autres fonctionnalités ont été implémentées dans Postfix :

- Nombreux moyens de distribution. Précédemment, l'auteur a configuré des systèmes


Sendmail qui pouvait relayer entre l'Internet, DECnet, X400 et UUCP (d’autres
protocoles de distribution de courrier). Postfix est conçu pour être assez flexible pour
qu'il puisse opérer dans de tels environnements. Toutefois, la version initiale de
Postfix ne parle que le SMTP.
- Domaines virtuels. Dans la plupart des cas, ajouter le support pour un domaine virtuel
n'exige qu'un changement dans une table de consultation de Postfix. Les autres

29
serveurs de mail ont généralement besoin de plusieurs niveaux d'alias ou de
redirection pour arriver au même résultat.
- Contrôle du courrier commercial non sollicité (spams). Postfix peut restreindre les
machines qui peuvent être relayées via le système Postfix et supporte des restrictions
sur les courriers autorisés à entrer. Postfix implémente les restrictions habituelles :
listes noires, consultations RBL qui sont une liste des sites spammeurs connus,
vérification expéditeur. L'inspection du contenu n'a pas encore été implémentée.
- Utilisation de tables. Postfix n'implémente pas encore de langage de récriture
d'adresses. Au lieu de cela, il utilise des tables de consultation qui font correspondre
les adresses à réécrire à des adresses valides.

c. Architecture [8]

Postfix est un système de messagerie modulaire, contrairement à la plupart de ses


concurrents. La figure 2.2 montre le schéma fonctionnel du serveur.

• Les ellipses jaunes sont des programmes de


courrier.
• Les rectangles jaunes sont des files d'attentes ou
des fichiers.
• Les rectangles bleus sont des tables de
consultations.
• Les données incluses dans l'encadré sont la
propriété du système de mail Postfix.

Figure 2.2 : Les composants de Postfix, et les flux circulants entre eux.

30
(i). Les files d’attente de Postfix

Il y a cinq files d'attente pour les messages :

- "maildrop" qui reçoit les messages postés localement (depuis l'hôte lui-même).
- "incoming" (file d’attente entrante) qui reçoit aussi bien les messages postés
localement que ceux qui arrivent du réseau (lorsque par exemple cet hôte est utilisé
comme serveur SMTP pour le réseau local). Les messages qui arrivent dans cette file
ont déjà subi quelques traitements qui seront détaillés plus loin.
- "active" (file d’attente active) est la file qui contient les messages en cours d'envoi.
- "deferred" (différé), contient les messages qui, pour une raison ou une autre, n'ont pu
être envoyés. Le protocole SMTP prévoit en effet de ne pas jeter systématiquement les
messages qui n'ont pu être envoyés. Les messages classés dans "deferred" subiront
plusieurs tentatives d'envoi en étant réinjectés dans "active".
- "mailbox" est la file d'attente des messages destinés aux utilisateurs locaux.

(ii). La réception du courrier [9]

Lorsqu'un message entre dans le système de messagerie Postfix, le premier point


d'arrêt est la file d'attente entrante « incoming ». La figure 2.3 montre les principaux
processus invoqués à l'arrivée d'un nouveau message.

Postfix se comporte différemment selon l’origine du message :

- Les messages du réseau entrent dans Postfix via les serveurs smtpd ou qmqpd. Ces
derniers retirent les enveloppes protocolaires (SMTP ou QMQP), effectuent quelques
contrôles de sécurité pour protéger Postfix, et donnent l'expéditeur, les destinataires et
le contenu du message au serveur cleanup. Le serveur smtpd peut être configuré pour
bloquer les messages indésirables.
- Les soumissions locales sont reçues par la commande compatible sendmail de Postfix
et sont stockés dans la file d'attente maildrop par la commande privilégiée postdrop.
Ce dispositif fonctionne même lorsque le système de messagerie Postfix est arrêté. Le
serveur local pickup reprend ces soumissions locales, effectue quelques contrôles de
sécurité pour protéger Postfix et donne l'expéditeur, les destinataires et le contenu du
message au serveur cleanup.

31
Les messages issus de sources internes sont donnés directement au serveur cleanup.
Ces sources ne sont pas montrées dans la figure 2.3 et incluent : les messages transférés par
l'agent de livraison local, les messages retournés à l'expéditeur et les notifications au
Postmaster à propos des problèmes rencontrés par Postfix.

trivial-
rewrite(8)
Réseau -> smtpd(8) ^|
\ |v
Réseau -> qmqpd(8) -> cleanup(8) -> file d'attente entrante
/
pickup(8) <- maildrop
^
|
Local -> sendmail(1) -> postdrop(1)

Les noms suivis par un nombre désignent des


commandes ou programmes de Postfix, et les noms sans
chiffre dans une aire grisée représentent des files
d'attente.

Figure 2.3 : Les méthodes réception de courriers avec Postfix

Le serveur cleanup implémente le processus final avant que les messages ne soient
mis en file d'attente. Il ajoute les « From : » manquants et d'autres en-têtes de message et fait
une transformation d’adresses. Le résultat est ensuite placé dans un fichier dans la file
d'attente entrante et le serveur notifie au gestionnaire des files d'attente l'arrivée d'un nouveau
message.

Le serveur trivial-rewrite réécrit les adresses sous la forme standard


utilisateur@domaine.qualifié.

32
(iii). La livraison du message [8]

Une fois le message arrivé dans la file d'attente entrante « incoming », l'étape
suivante est la livraison. La figure 2.4 montre les principaux composants de la fonction de
livraison de Postfix.

Le gestionnaire de file d'attente est le cœur du système de messagerie Postfix. Il


contacte les agents de livraison local, smtp ou pipe et envoie une demande de livraison avec le
chemin d'accès au fichier qui contient la file d'attente, l'adresse de l'expéditeur, le nom de
l'hôte à qui il faut livrer si la destination n'est pas locale, et une ou plusieurs adresses de
destinataires.

• Les ellipses jaunes sont des programmes de


courrier.
• Les rectangles jaunes sont des files d'attentes ou
des fichiers.
• Les rectangles bleus sont des tables de
consultations.
• Les données incluses dans l'encadré sont la
propriété du système de mail Postfix.

Figure 2.4 : La livraison des courriers

Le gestionnaire maintient une file d'attente "deferred"(retardée) séparée pour chaque


message qui n'a pas pu être livré, de manière à ce qu'un compte-rendu de livraison trop
volumineux ne vienne pas ralentir l'accès des autres files.

33
Le gestionnaire maintient une petite file d'attente "active" avec juste quelques
messages prêts pour la livraison. "active" agit comme une petite fenêtre sur les files d'attentes
"incoming"(entrante) ou "deferred"(retardée). Cette méthode évite au gestionnaire de faire des
débordements de mémoire si le serveur est fortement chargé.

Optionnellement, le gestionnaire fait "rebondir" le message pour les destinataires qui


sont référencés dans une table appelée "relocated". Cette table contient des informations sur
les utilisateurs qui ont changé d'adresse.

Sur la demande du gestionnaire de file d'attente, le daemon "trivial-rewrite" résout


les destinations. Par défaut, il fait uniquement la distinction entre les destinations locales ou
distantes. Des informations de routage additionnelles peuvent être spécifiées dans la table
« transport ».

Sur la demande du gestionnaire de file d'attente, les daemons "bounce" et "defer"


génèrent des rapports de non-livraison lorsqu'un message ne peut être acheminé, soit à cause
d'une erreur non récupérable, soit parce que le destinataire n'est pas joignable pendant une
durée trop longue.

L'agent local de la livraison sait gérer plusieurs types de boîtes aux lettres. De
multiples agents locaux de livraison peuvent être exécutés en parallèle, mais la livraison en
parallèle au même utilisateur est habituellement limitée. L'agent de la livraison locale a des
possibilités pour utiliser d'autres moyens de livraison locale : il peut être configuré pour livrer
aux fichiers de boîte aux lettres dans les répertoires locaux d'utilisateur ou même déléguer la
livraison de boîte aux lettres à une commande externe.

Le client smtp recherche une liste d'échangeurs de courrier pour l'hôte de destination,
trie la liste par préférence, et essaye chaque adresse alternativement jusqu'à ce qu'il trouve un
serveur qui répond. Sur un système postfix chargé, plusieurs processus de client de smtp
peuvent fonctionner en parallèle.

Le pipe est l'interface de sortie vers d'autres transports de courrier (Le programme
"sendmail" est l'interface d'entrée).

34
d. Configuration simple [10]

Postfix a plusieurs centaines de paramètres de configuration qui sont contrôlés par


l'intermédiaire du fichier main.cf. Heureusement, ils ont des valeurs par défaut. Dans la
plupart des cas, configurer postfix revient à configurer seulement deux ou trois paramètres.

Par défaut, les fichiers de configuration de Postfix se trouvent dans le répertoire


/etc/postfix. Les deux plus importants sont main.cf et master.cf ; ces fichiers doivent
appartenir à root (administrateur du système).

Postfix utilise des bases de données pour le contrôle d'accès et les réécritures
d'adresses.

A chaque changement des fichiers main.cf ou master.cf, le service postfix doit être
relancé en tant que root pour prendre en considération ces changements.

Dans une configuration simple de postfix, les premiers paramètres dignes d'intérêt
indiquent l'identité de la machine et son rôle dans le réseau. Ces paramètres sont :

- Quel domaine afficher dans le courrier sortant : il s’agit du nom de domaine qui
apparaît dans le courrier envoyé à partir de la machine émettrice. La valeur par défaut
est le nom de la machine elle-même.
- De quels domaines recevoir le courrier : ce paramètre indique les domaines pour
lesquels la machine délivrera le courrier localement, au lieu de le transmettre à une
autre machine.
- De quels clients relayer le courrier : La valeur par défaut autorise tous les clients des
sous réseaux IP auxquels la machine est reliée.
- De quelles destinations relayer le courrier.
- Quelle méthode de livraison : directe ou indirecte : Par défaut, Postfix tente de délivrer
le courrier directement sur Internet. Suivant l’environnement, ce n'est pas toujours
possible ou souhaitable. Par exemple, le système peut être éteint en dehors des heures
ouvrées, il peut être derrière un firewall, ou bien encore être connecté via un
fournisseur d'accès qui n'autorise pas la livraison directe du courrier. Dans ces cas,
Postfix doit être configuré pour effectuer les livraisons via un relais.

35
Les valeurs par défaut pour beaucoup d'autres paramètres de configuration sont juste
dérivées de ces derniers.

D’autres configurations beaucoup plus complexes comme la réécriture des adresses,


l’hébergement des sites virtuels, les problèmes d’authentification, etc. sont encore
disponibles. Toutefois, les paramètres mentionnés dans ce paragraphe s’avèrent suffisants
pour une configuration de base de postfix.

e. Les différents moyens de sécurisation inclus au niveau du serveur Postfix

Les principales technologies de défense dans un réseau englobent une politique


d’authentification et de cryptographie. Les gens inquiets d'installer Postfix peuvent espérer
que Postfix est plus sûr que les autres serveurs de messagerie car il supporte et implémente les
protocoles d’authentification et de cryptage standard.

(i). Authentification SASL et Support TLS de Postfix

SASL est une méthode pour ajouter un support d’authentification aux protocoles
orientés connexion tel que TCP.

Le but de l’authentification exposé ici est d’éviter le relayage par des spammeurs. En
effet, sans une bonne politique d’authentification, le serveur peut devenir le cible des
spammeurs et leur servira de relais pour les courriers indésirables : les spammeurs semblent
être des utilisateurs locaux. SASL a pour but de permettre au client de s'authentifier auprès du
serveur. Si le client ne s'authentifie pas, le serveur peut décider de ne pas relayer le message.
[11]

Ce support SASL peut ainsi être utilisé pour authentifier les clients SMTP distants
sur le serveur SMTP de Postfix et pour authentifier le client SMTP de Postfix auprès des
serveurs SMTP distants. Lorsqu'un message arrive, Postfix enregistre le nom d'utilisateur
fourni, la méthode d'authentification et l'adresse de l'expéditeur dans le fichier de logs et
éventuellement autorise l'accès via la restriction anti-spam.

Postfix n'enregistre pas les informations d'authentification SASL dans les en-têtes du
message et ne les passe pas dans les commandes SMTP lorsqu'il transfert le courrier car cela

36
ne regarde pas les autres serveurs. Ceux qui doivent y accéder les trouveront dans les fichiers
de logs. [12]

Pour activer la dite méthode d’authentification, Postfix va être compilé avec le


support d’authentification SASL (les librairies SASL peuvent être téléchargées sur
ftp://ftp.andrew.cmu.edu/pub/cyrus-mail/.). Quelques lignes qui activent l’authentification
SASL dans le serveur SMTP de postfix et qui autorisent le relais de courrier des utilisateurs
authentifiés seront ensuite ajoutées dans le fichier de configuration /etc/postfix/main.cf de
Postfix.

Pour tester la partie serveur, une connexion au serveur SMTP va être lancée. Pour ce
faire, soit à lancer une session telnet sur le port 25 à notre serveur mail : Les informations
envoyées par le client hoby.electronic.mg sont en gras. Le serveur rianala.electronic.mg
répond aux requêtes du client : les réponses sont précédées par des chiffres commençant par 2
Les échanges s’illustrent comme suit :

220 rianala.electronic.mg ESMTP Postfix


EHLO hoby.electronic.mg
250-rianala.electronic.mg
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-AUTH DIGEST-MD5 PLAIN CRAM-MD5
250 8BITMIME
AUTH PLAIN dGVzdAB0ZXN0AHRlc3RwYXNz
235 Authentification successful

La ligne commençant par AUTH est la requête d’authentification envoyée par le


client. La chaîne dGVzdAB0ZXN0AHRlc3RwYXNz qui suit est la représentation cryptée
du nom d’utilisateur et du mot de passe du client.

Par ailleurs, le support TLS dans Postfix permet de chiffrer les messages et
d'authentifier les clients et les serveurs. Il permet d’activer également des milliers de lignes de
code de la librairie OpenSSL (librairie de chiffrement). Cette partie n’explique cependant pas
les principes et algorithmes de chiffrement tel que SSL mais les exploite seulement pour le
cryptage des messages. Une bonne notion des algorithmes de cryptage à clé publique et clé
privé est nécessaire avant de pouvoir activer le support TLS de Postfix. [13]

37
(ii). L’inspection des contenus des messages [14]

Postfix supporte trois méthodes d'inspection du contenu, depuis l'inspection légère


ligne par ligne avant la mise en file d'attente jusqu'à l'examen sophistiqué après cette mise en
file d'attente. Chaque approche poursuit un but différent.

• Inspection légère intégrée en temps réel

Cette méthode examine le message AVANT la mise en file d'attente et utilise


l'inspection des en-têtes et du contenu intégrée à Postfix. Bien que la finalité principale soit de
stopper la propagation des virus, elle est également pratique pour bloquer les messages
indésirables et les notifications issues des anti-virus.

La figure 2.5 présente le fonctionnement de cette inspection intégrée. Elle précise les
travaux de filtrage qui se font pendant que Postfix reçoit le message. Ceci signifie que Postfix
peut le rejeter sans avoir à retourner un avis de non remise à l'expéditeur (qui est souvent
artificielle). Cependant cette capacité a un prix : si l'inspection prend trop de temps, le client
distant risque d'interrompre la livraison (timeout) et recommencer aussitôt.

L'examen des en-têtes/du corps de Postfix est implémenté dans le serveur cleanup
avant qu'il injecte le courrier dans la file d'attente entrante (incoming). La figure 2.6 se
concentre sur le serveur cleanup et montre ses différentes sources.

Notification
du
Postmaster
|
v
Réseau ou ->
Filtrage -> File d'attente -> Agents de -> Réseau ou
utilisateurs locaux intégré Postfix livraison boîtes-aux-lettres locales
^ |
| v
Courrier non-livrable
Courrier transféré

Figure 2.5 : Inspection du contenu des messages avec Postfix

38
bounce
(non-
livrable)
smtpd |
(réseau) \ v

qmqpd -\ file d'attente


cleanup ->
(réseau) -/ entrante
pickup / ^
(local) |
local
(transférés)

Figure 2.6 : Inspection du contenu par le serveur cleanup

Pour de bonnes raisons, seuls les messages qui entrent depuis l'extérieur de Postfix
sont inspectés. Il serait inutile de refiltrer de messages déjà filtrés et risquerait de bloquer les
notifications du postmaster

• Inspection lourde externalisée et en temps différé

Cette méthode examine le courrier APRÈS le stockage en file d'attente. L’inspection


après stockage permet d'utiliser des filtres complexes sans causer des interruptions liées aux
timeouts lors de la réception du courrier et sans faire exposer les ressources du système.

Normalement, Postfix reçoit le courrier, le stocke en file d'attente puis le livre. Avec
le filtrage du contenu externalisé, le courrier est filtré APRÈS sa mise en file d'attente. Le
filtrage de contenu après mise en file d'attente est schématisé dans la figure 2.7.

Réseau ou ->
File d'attente -> Filtre de -> File d'attente -> Réseau ou
utilisateurs locaux Postfix contenu Postfix utilisateurs locaux

Figure 2.7 : Filtrage de contenu après mise en file d’attente

• Inspection intermédiaire externalisée et en temps réel

Cette méthode examine le courrier AVANT le stockage en file d'attente et utilise le


protocole SMTP. Bien qu'elle paraisse la plus attractive, elle cumule en les inconvénients des
deux précédentes. Comme le courrier est examiné avant la mise en file d'attente, le logiciel
d'inspection doit finir dans un temps limité sans consommer trop de ressources. Si l'inspection

39
prend trop de temps alors la livraison entrante échoue (timeout) et si trop de mémoire est
nécessaire, le logiciel sera interrompu. Cette méthode n'est disponible que sur les versions 2.1
et supérieures de Postfix.

Le filtrage avancé n'est pas intégré à Postfix pour de bonnes raisons : l'écriture d’un
système de routage du courrier ne se conçoit pas comme l'écriture d'un anti-spam ou d'un anti-
virus. Postfix encourage l'utilisation de filtres externes et de protocoles standards car cela
permet de choisir séparément le meilleur MTA et le meilleur logiciel inspecteur de contenu.

2.3. AUTRES DISPOSITIFS DE SECURITE POUR UN SERVEUR DE MESSAGERIE

La sécurité informatique c'est l'ensemble des moyens mis en oeuvre pour minimiser
la vulnérabilité d'un système contre des menaces accidentelles ou intentionnelles. Il est
toujours plus commode de sécuriser le serveur que les clients qui lui sont rattachés. En effet,
ceci évite de refaire la configuration de sécurité pour chaque machine cliente. En plus, l’ajout
d’un nouveau client ne remettra pas en cause la politique de sécurité choisi.

Les problèmes liés aux courriers électroniques vus dans le précédent chapitre nous
amène à concevoir une architecture plus sécurisée de notre serveur de courriers.

a. Topologie du réseau

La machine serveur sera placée derrière un firewall pour éviter les intrusions venant
de l’extérieur. Un firewall est un système physique (matériel) ou logique (logiciel) servant
d'interface entre un ou plusieurs réseaux afin de contrôler et éventuellement bloquer la
circulation des paquets de données. Il représente le dispositif à l'entrée du réseau qui permet
de protéger le réseau interne d'éventuelles intrusions en provenance des réseaux externes
(souvent Internet). Le firewall simplifie la gestion de la sécurité et donc l'administration du
réseau car il centralise les attaques potentielles au niveau du firewall plutôt que sur le réseau
tout entier. La figure 2.8 illustre la topologie adoptée pour notre serveur local : Tous les
paquets venant de l’extérieur passent d’abord par le firewall avant d’entrer dans notre réseau
local. Notons que notre serveur sert également de relais pour les courriers extérieurs. [15]

40
Figure 2.8 : Topologie adoptée pour le serveur

b. Autres dispositifs de sécurité : Lutte anti spam et antivirus

Depuis quelque temps, presque la totalité des internautes se plaignent que plus d'un
e-mail sur deux reçus est un spam ou contient un virus. La lutte anti spam et anti virus est
donc devenue une nécessité. Cette partie présente les outils nécessaires à cet effet. Elle
présente entre autres quelques outils de filtrage des messages électroniques qui ont été choisis
afin de pouvoir mieux raffermir la sécurité de notre serveur mail.

(i). Le logiciel Procmail pour le filtrage basique du courrier électronique

Procmail est un logiciel de filtrage sous Linux. Le filtrage repère si le mail répond ou
non à un ou plusieurs critères. Procmail est une commande simple qui permet de faire
beaucoup de choses. Il est très simple de définir des filtres. L'exemple ci-dessous permet de
supprimer les mails contenant dans le sujet « I Love You ». [16]

:0
* ^Subject:.*ILOVEYOU
/dev/null

Il suffit d'adapter cette règle en fonction du sujet (ou du from). Cette autre règle très
utile permet de sauvegarder dans un fichier virus tous les mails arrivant avec les extensions
qui y sont citées.

:0 H
*^Content-type: (multipart/mixed)
{
:0 B
*^Content-Disposition: (attachment|inline)
*filename=".*\.(ocx|vbs|wsf|shs|exe|com|bat|chm|pif|vbe|hta|scr)"

41
{
:0
virus
}
}

Le fichier virus pourra être ouvert en tant que boîte aux lettres avec n’importe quel
logiciel de messagerie.

(ii). Filtrage des spams avec spamassassin [16]

• Présentation

Spamassassin est un logiciel anti spam, il repose entre autres sur l'analyse heuristique
et bayesienne des e-mails.

• Le filtrage heuristique

C'est une technique qui permet d'identifier du spam en fonction de certaines


caractéristiques communes (ponctuation, html, lien vers une image, etc.)

• Le filtrage bayésien

le filtrage bayésien repose sur le principe qu'un évènement peut se produire en


fonction des mêmes évènements survenus précédemment. En clair pour le mail, si certains
mots ou phrases sont plus souvent rencontrés dans du mail classé spam que dans du mail
classé normal, on peut penser que la prochaine fois qu'on rencontrera ces mêmes mots et
phrases il y a de bonnes chances que ce soit dans un mail de spam.

Pour cela une base de données de mots et phrases est créée et enrichie au fur et à
mesure de la réception et de l'envoi de mails qui soient valides ou considérés comme spam.
Chaque mot reçoit une valeur calculée en fonction de la probabilité qu'il soit relié à du spam,
elle dépend du nombre de fois que le terme apparaît dans du spam par rapport au nombre de
fois que le même terme est rencontré dans du courrier valide. Par conséquent certains mots
pourront avoir une forte probabilité d'être rattaché à du spam pour certains utilisateurs et pour
d'autres pas. Par exemple, pour une entreprise travaillant dans le domaine médical, le terme
"drug" aura une faible probabilité d'être rattaché à du spam car il est très souvent employé
dans les mails valides, pour d'autres personnes ce terme sera systématiquement rattaché à du

42
spam. Par conséquent le filtre bayésien a la particularité et l'avantage de s'adapter à
l'utilisateur, il réduit le risque des faux positifs (courrier valide considéré comme spam). Par
ailleurs le filtre n'est pas statique, la base de donnée est en constante évolution et donc le filtre
sera de plus en plus performant de jour en jour et s'adaptera en fonction des utilisateurs de
votre réseau et des techniques nouvelles utilisées par les spammeurs.

Exemple concret du dernier point, jusqu'à présent les spammeurs envoyaient des
mails avec des mots du style "sex, free, viagra, ...", il était assez simple de mettre en place un
filtre basé sur des mots clef pour supprimer les mails en question, les spammeurs ont donc
modifié légèrement la sémantique de mots "s-e-x, f r e e" ou bien encore "v$i$a$g$r$a", avec
un simple filtrage par mots clé, il est quasi impossible d'établir une règle efficace pour filtrer
ces mails. Le filtre bayésien n’aura aucun problème pour lui attribuer une valeur de
probabilité de spam élevée.

Autre avantage du filtre bayésien et non des moindres, il s'adapte à toutes les
langues.

En clair pour qu'un spammeur puisse tromper un filtre bayésien il doit connaître
l'utilisateur qu'il veut toucher et éviter d'utiliser les mots que l'utilisateur en question utilise le
moins.

• Configuration de Spamassassin

La configuration de Spamassassin est faite via le fichier local.cf placé sous


/etc/mail/spamassassin/. Il contient entre autres le score à partir duquel le mail est considéré
comme spam (généralement autour de 4 ou 5). Le paramètre le plus important est le chemin
bayes_path qui indique le chemin où sera stockée la base de données du filtrage bayésien.
généralement /var/spool/mail.

43
(iii). Mettre en place un anti virus

• Présentation et installation

Clam Anti virus (clamav) est un antivirus qui est totalement libre. La configuration
de clamAv se fait via le fichier /etc/clamd.conf. La commande clamd est la commande qui
sert à lancer l’antivirus en tant que root sur le système.

(iv). Filtrage avancé avec MailScanner [17]

MailScanner est aujourd’hui l’outil le plus fiable et le plus utilisé en matière de


filtrage des courriers. Il permet de filtrer à la fois les virus et les spams et peut travailler
conjointement avec les autres logiciels de filtrage décrits ci-dessus tels que spamassassin ou
ClamAv. En outre, MailScanner est compatible avec Postfix : Il suffit de modifier le
propriétaire de MailScanner via son fichier de configuration
/etc/MailScanner/MailScanner.conf par le groupe postfix. La deuxième étape consiste à
indiquer à MailScanner les fichiers de file d’attente incoming sur lesquels doivent s’opérer le
scan et le filtrage avant leur mise en file d’attente outoing.

c. Récapitulation sur l’architecture sécurisé du serveur

La figure 2.10 illustre l’architecture globale du serveur mail sécurisé à concevoir :

- Fetchmail permet de chercher les courriers chez le serveur mail du FAI. Il présente
l’avantage de pouvoir crypter les messages venant du serveur distant. [18]
- Procmail sert à trier les courriers dans les différentes boîtes aux lettres locales

Ces deux premiers outils ne seront pas beaucoup détaillés car ils ne servent
généralement qu’à relayer les courriers du serveur SMTP du FAI aux boîtes locaux.

- Postfix avec le support TLS sert de relais MTA


- Spamassassin, MailScanner et ClamAv servent au contrôle de contenu et filtrage
des courriers
- Les serveurs IMAP et Webmail permettent aux utilisateurs de récupérer leurs
messages.

44
Serveur
Mail
externe Réseau externe

Fetchmail

Procmail

Postfix / TLS

Spamassassin
Serveur Mail local

MailScanner et
ClamAv

Serveur
IMAP

Squirrelmail
(Webmail)

Figure 2.9 : Architecture globale du serveur mail sécurisé

45
CHAPITRE 3 :

EXEMPLE PRATIQUE D’UTILISATION

46
Ce chapitre se focalise surtout sur la partie technique de l’exposé. Il sera vu comme
un guide pratique quant à la configuration de la machine serveur et servira aussi de références
pour le paramétrage des logiciels clients. Comme postfix implémente une multitude d’options
et supporte plusieurs protocoles de gestion du courrier, tous les possibilités offertes ne
pourront pas s’exposer ici. Seules les grandes lignes pour le fonctionnement standard de
l’architecture sécurisée que l’on a conçue dans le deuxième chapitre seront abordées.

3.1. CONFIGURATION COTE SERVEUR

Avant de pouvoir utiliser les services de courrier, les fichiers de configuration de


Postfix main.cf et master.cf doivent être préalablement configurés pour supporter
l’architecture conçue. Un exemple de configuration est donné en Annexe 3. De plus, le
paramétrage des outils de filtrage procmail, spamassassin, ClamAv et Mailscanner doit tenir
compte de ce qu’ils travaillent conjointement avec Postfix. Quelques lignes y seront aisi
ajoutés ou modifiés afin d’indiquer à ces logiciels le type de serveur de courriers et le degré
de filtrage voulu.

Cette partie a été traitée sous la distribution Mandriva Linux 2006. Cependant, les
commandes exposées ici devraient être également compatibles avec les autres distributions de
Linux existant. Dans le cas échéant, d’autres lignes de commandes propres à chaque
distribution sont à pourvoir.

a. Opérations préliminaires

La première étape à considérer est l’activation de l’interface réseau au niveau du


serveur. Pour ce faire, en se logant en tant que root, on édite la commande :

# ifup eth0

Cette commande active ainsi l’interface réseau du serveur. Notons au passage que le
serveur peut implanter plusieurs interfaces réseau. L’activation de chacun d’entre eux est donc
nécessaire.

L’opération qui suit cette première sera le lancement du serveur DNS. Ce serveur,
utile pour établir une correspondance entre les adresses IP et des noms de domaine plus
commode à retenir, hébergera notre domaine electronic.mg . D’autres domaines virtuels

47
informatique.mg et automatique.mg alias du domaine electronic.mg qui ne sont pas intégrés
dans le serveur DNS ont été également ajoutés dans le but d’illustrer le support des domaines
virtuels de Postfix. De plus, un autre domaine espa.mg, domaine virtuel indépendant de
electronic.mg fut également conçu dans ce même but.

Dans notre cas, on a choisi le serveur bind comme serveur DNs. Il a l’avantage
d’être à la fois disponible sur chaque distribution de Linux et d’être facile à configurer. Le
paramétrage de ce serveur est donné en Annexe 2. Le service associé au serveur DNS bind est
appélé named. Ainsi pour démarrer le service, la commande suivante sera tapée :

# service named start

b. Lancement du serveur

Par défaut, le service de courrier postfix est lancé au démarrage de Linux.


Cependant, ce service ne fonctionnera pas dans le cas où l’on a ignoré les deus opérations
précédentes. Pour voir l’état du service, on édite la commande :

# service postfix status

Normalement, comme le service est lancé au boot, on devrait avoir une réponse du
genre : master pid(1923) est en cours d’exécution…Cette réponse indique que le service est
actif et fournit le pid du processus.

Bien qu’il semble que tout le service de courrier marche correctement, notons
qu’aucun message ne sera délivré dans la file d’attente entrante de postfix sans avoir
préalablement passer par les outils de filtrage antivirus et antispam de MailScanner. Tant que
MailScanner ne sera pas lancé, aucun message ne passera. Le lancement de MailScanner se
fait comme suit :

# service MailScanner start

Le paramétrage du serveur SMTP est ainsi fait. Pour pouvoir lire les courriers à
partire des autres machines distantes, un serveur IMAP sera configuré. Notre choix optait
pour le serveur cyrus-imap. Le fichier de configuration de ce serveur devrait aussi être
préconfiguré. L’essentiel de la configuration consiste à indiquer au serveur les répértoires de

48
files d’attente Mailbox. Ce service est également lancé au démarrage. Dans le cas contraire, la
commande suivante est à éditer :

# service imap start

D’autres serveurs restent à configurer dans le cas où les clients ne supportent pas
IMAP et se servent surtout d’un partage NFS pour la lecture des courriers.

Le serveur NFS sert à partager le répertoire des mails à des machines autorisées sur
le réseau. Ainsi, les machines clientes peuvent monter ce répertoire localement et agir comme
si les courriers sont locaux. Les logiciels clients mail habituels supportent ce protocole
d’échange de courrier.

Le paramétrage du serveur NFS se fait via le fichier /etc/exports. On doit y partager


le répertoire de Mailbox et indiquer les clients autorisés à le consulter dans /etc/hosts.allow.
Le lancement du service NFS se fait avec :

# service nfs start

D’autres options sont également possibles pour le serveur. Toutefois, celles exposées
ici s’avèrent suffisantes pour la mise en marche de l’architecture proposée dans le deuxième
chapitre.

3.1. CONFIGURATION COTE CLIENT

On peut aujourd'hui envoyer un courrier électronique de plusieurs façons. Les plus


courantes sont les logiciels de messageries et les webmails. Le point le plus important quant
au paramétrage des clients de messagerie est d’indiquer aux logiciels clients le nom serveur
de courrier ou son adresse IP et les protocoles utilisées par le serveur.

a. Le logiciel de messagerie

C’est un logiciel installé sur l'ordinateur qui permet d'envoyer et de recevoir des
messages. Le plus connu des logiciels de messagerie est Outlook Express, mais il en existe
encore d'autres. Il faut configurer ce logiciel pour aller chercher le courrier en paramétrant
l'adresse "POP3" (le plus souvent), de mettre le prestataire "courrier" de l’utilisateur, de même
que préciser l'adresse "SMTP" pour l'envoi. L'adresse "POP3" correspondant au centre postal

49
de réception et l'adresse "SMTP" correspondant au centre postal d'émission. En outre, pour
des raisons purement liées à la sécurité du système, il faut dès la configuration, désactiver
l’affichage des e-mails en mode Web (HTML). Par contre, le mode texte est plus sûr. Donc en
d’autres termes, l’astuce est de désactiver les exécutions automatiques (JavaScript, VbScript,
activex, Java, etc.) : elles activent les virus et les parasites.

• Sécurisation

Un logiciel de messagerie est très confortable quand il lance, automatiquement ou


par double-clic, tout type de fichier inclus dans l'e-mail (programme, texte, image, son,
vidéo). Mais ce confort est une catastrophe en sécurité. Il est la source de toutes les infections
et certaines failles sont tellement faciles à exploiter que même un simple amateur pourrait
tendre un piège : un virus peut se glisser dans l'entête de l'e-mail, le corps ou une pièce jointe
de nombreuses manières possibles ou se font passer pour des fichiers multimédia, les patchs
de sécurité sont inutiles face à l'exploitation d'une nouvelle faille, les images peuvent être des
web-bugs, utilisés par les spammeurs.

Un logiciel de messagerie sécurisé ne doit faire que deux choses, c’est à dire
n’affiche qu’en mode texte, autrement dit il ne lance aucun type de fichier automatiquement et
ne se connecte qu’aux deux serveurs d'e-mail (courrier entrant et sortant) et nulle part ailleurs.

Par ailleurs, pour avoir plus de sérénité à l’envoi des courriers, chiffrer les messages
devient le moyen le plus efficace. Outlook Express permet de le faire facilement en ouvrant
une fenêtre de rédaction de message et rédiger le message en clair. POUR CRYPTER le
message, dérouler ensuite le menu OUTILS, puis cliquer sur CRYPTER. Un petit cadenas
bleu vient alors s'afficher dans partie supérieure de la fenêtre du message. Le message sera
crypté à l'envoi. Quand le correspondant recevra ce message, son logiciel le décryptera
automatiquement et l'identifiera par une icône spécifique. Dans Outlook Express, un message
crypté est identifié par ‘ ’.

Finalement, il ne faut pas oublier que sur le Net, notamment avec le courrier
électronique, il est facile d’usurper l’identité c'est-à-dire se faire passer pour un autre (une
banque, un collègue de société ou un associé). Raison de plus pour adopter une technique
supplémentaire pour authentifier l’expéditeur, surtout quand l’information à transmettre a une
importance particulière: la signature numérique. La signature numérique est un dispositif

50
technique, dérivé du cryptage, qui permet d’authentifier le message. En clair, chaque message
émis est crypté avec la clef privée de l’expéditeur ‘E’. Et ne peut donc être lu par les
destinataires qu'avec la clé publique. On est alors sûr que ‘E’ est vraiment l'auteur et que le
contenu du message n'a pas été modifié durant le transport.

Avec Outlook Express, la signature numérique peut aussi se faire assez facilement :
OUVRIR d’abord une FENETRE DE REDACTION de message et REDIGER le message.
Pour signer numériquement le message, dérouler le menu OUTILS, puis cliquer sur SIGNER
NUMERIQUEMENT. Un label rouge vient alors s'afficher à droite dans la partie supérieure
de la fenêtre. Le message sera signé numériquement à l'envoi. Quand le correspondant le
recevra, son logiciel l'identifiera par une icône spécifique. Outlook Express le signale par
exemple par l'icône ‘ ’.

b-Le webmail

C’est un site Web qui remplit les mêmes fonctions que le logiciel de messagerie. Il
n'y a cependant pas besoin d'installer quoi que ce soit sur son ordinateur pour l'utiliser, un
navigateur (comme Internet Explorer) suffit. A ce niveau il n'y a pas de paramétrage à
effectuer (pour un usage courant) : aller sur le site de gestion des courriers et saisir son nom
d'utilisateur et son mot de passe pour arriver sur une page où, lecture et composition de
courrier sont proposées.

• Installation

L'objet de ce paragraphe est d'expliquer la procédure d'installation et de


configuration d'une interface graphique de messagerie basée sur SquirrelMail, sur un
environnement serveur Linux Mandriva 2006. Pour configurer correctement ce qui suit, il faut
être connecté au serveur en tant qu'administrateur (root).

A propos des conditions d’installations, il faut un serveur Linux, sur lequel sont
installés, entre autres : Bind, Apache2, Apache2-mod_php, php-ini, Apache2-mod_ssl, imap,
postfix, perl, xinetd, ispell. MySQL n'est pas requis, sauf pour certains plugins. Les services
httpd, postfix, xinetd, imap doivent aussi être activés comme la montre l’exemple ci-dessous :

#service httpd start (pour démarrer apache)

51
# chkconfig imap on (pour faire en sorte qu’à chaque démarrage imap fonctionne)
/*ou bien
#service imap on */
#service xinetd restart (service par laquelle imap dépend pour son fonctionnement)
#service postfix start
Pour installer le webmail en question, il faut :
-télécharger la dernière version de Squirrelmail (squirrelmail-1.4.2.tar.gz : 2.74Mo),
-la décompresser dans un répertoire lisible par le serveur web c'est-à-dire dans
var/www/html/,
-changer le nom du répertoire (mv squirrelmail-1.4.2 squirrelmail),
-créer les deux répertoires de stockage des données et des fichiers joints :
#mkdir –p /var/squirrel/data
#chown apache /var/squirrel/data
#chgrp apache/var/squirrel/data
#mkdir -p /var/squirrel/attachement
#chgrp apache /var/squirrel/attachement
#chmod730 /var/squirrel/attachement
Puis, l’installation se termine par la modification des paramètres dans
/var/www/html/squirrelmail/config en éditant config.php et en modifiant comme suit par
exemple:

-Organization Preferences / Default Language : remplacer en_US par fr_FR

-Server Settings / Domain : nom de domaine de la forme « exemple.net ».

-General Options / Data Directory : /var/squirrel/data

-General Options / Attachment Directory: /var/squirrel/attachement

-Themes : /*au choix de l’utilisateur*/.

-Plugins : pour installer un plugins, parmi ceux disponibles (Available Plugins)

-S sauve ces modifications, Q quitte l'application de configuration.

Sécuriser les webmails revient à sécuriser le serveur web lui-même. La sécurité du


contenu se fait au niveau du serveur de messagerie pour que les messages livrés au
destinataire soient préalablement filtrés et protégés.

52
c- Autres moyens en vracs

Accessoirement on peut aussi envoyer des e-mails depuis

- le minitel.
- le téléphone (le courrier est alors lu / enregistré).
- le terminal WAP (téléphone ou assistant personnel).
- messages courts sur son téléphone (SMS).

53
CONCLUSION

Le courrier électronique est considéré comme étant le service le plus utilisé sur
Internet. Son principe repose sur l’utilisation des protocoles textuels dans le transfert des
courriers via les différents serveurs de messagerie ou MTA. Il n'existe qu'un seul protocole
entre MTA : SMTP. Il sert à transférer des mails d'une machine à une autre. Le transfert du
courrier du serveur mail vers le client s’effectue avec d’autres protocoles. Le protocole POP
permet d'aller récupérer son courrier sur le serveur distant. Il est nécessaire pour les personnes
n'étant pas connectées en permanence à Internet afin de pouvoir collecter les mails reçus hors
connexion. En outre, le protocole IMAP est un protocole alternatif au protocole POP3 mais
offrant beaucoup plus de possibilités. Lors de son envoie, le courrier est encodé selon le mode
d’encodage choisi par l’expéditeur et sera ensuite décodé par le logiciel client de messagerie.

Par ailleurs, une solution viable et efficace quant à la gestion des courriers consiste à
opter pour des logiciels libres. Linux offre dans chacune de ses distributions le serveur Postfix
qui a l'ambition d'être rapide, facile à administrer et particulièrement sécurisé tout en étant
suffisamment compatible avec son prédécesseur sendmail pour ne pas dérouter les
utilisateurs.

Une architecture sécurisée d’un serveur mail consiste ainsi à combiner le serveur
Postfix avec d’autres outils de filtrage antivirus et antispam. D’autres solutions libres sont
prévues à cet effet.

Comme il n’existe de politique de sécurité garantie à 100%, ce document n’est qu’un


début quant à la sécurisation des serveurs mails. D’autres méthodes consisteraient à insérer au
niveau même du serveur Postfix des modules permettant de sécuriser les e-mails. Une suite
logique de ce mémoire peut amener à penser à faire des recherches sur la messagerie unifiée
qui gère les services de courrier entre des terminaux autres que des ordinateurs (téléphone,
minitel,etc.).

54
ANNEXES

55
ANNEXE 1 : Protocoles d’échange et standard d’encodages

A.1.1. Les procédures SMTP [5]

Pour pouvoir envoyer un courrier en utilisant SMTP, il existe des procédures


d'ouverture et de fermeture des échanges. Une transaction de courrier SMTP se déroule en
trois étapes. La transaction est initiée par une commande MAIL donnant l'identification de
l'émetteur. Une série contenant une ou plusieurs commandes RCPT suit, donnant les
informations sur les destinataires. Puis une commande DATA passe le contenu du message.
Dans cette troisième phase, la marque de fin de données à transmettre marque la fin de la
transaction.

La première étape de la procédure est donc la commande MAIL.


L'argument contient le nom de la boîte aux lettres de l'émetteur.

MAIL <SP> FROM: <reverse-path> <CRLF>

Cette commande indique au récepteur SMTP qu'une nouvelle transaction de courrier


débute et lui demande de réinitialiser ses tables d'états et ses tampons, y compris ses boîtes de
réception et toute donnée de courrier latente. Elle lui donne le chemin inverse qui pourra être
utilisé en cas de rapport d'erreur à transmettre. Si l'émetteur accepte la commande, un code
"250 OK" est renvoyé à l'émetteur.

L'argument <route-inverse> peut contenir plus d'une boîte aux lettres. On peut y
inscrire une liste de plusieurs boîtes aux lettres dans des hôtes différents. La première boîte
inscrite dans l'argument <route-inverse> doit néanmoins être celle désignant l'émetteur du
message.

La deuxième étape de la procédure est l'émission des commandes RCPT.

RCPT <SP> TO:<chemin-Direct> <CRLF>

Cette commande transmet une adresse de courrier désignant un récipiendaire. Si elle


est acceptée, le récepteur SMTP renvoie une réponse de code "250 OK", et mémorise le
chemin d'acheminement. Si le récipiendaire est inconnu, le récepteur SMTP renvoie un code

56
d'erreur "550 Failure". Cette seconde étape de la procédure peut être répétée autant de fois que
nécessaire.

L'argument <route-directe> peut contenir plus d'une adresse de boîte aux lettres. On
peut y inscrire une liste de boîtes aux lettres dans des hôtes différents. Le premier hôte à être
mentionné dans l'argument <route-directe> sera l'hôte à qui est envoyé cette commande.

La troisième étape consiste en l'émission de la commande DATA.

DATA <CRLF>

Si elle est acceptée, le récepteur SMTP renvoie une réponse de code "354
Intermediate" et prend en compte toutes les lignes de texte suivantes comme étant le texte du
message. Lorsque la marque indiquant la fin du texte est reçue et enregistrée, le récepteur
SMTP envoie une réponse de code "250 OK".

Comme les données du courrier sont émises sur le même canal de transmission, il
faudra donner un indicateur de fin de données pour que le dialogue requête-réponse puisse
reprendre. SMTP indique la fin des données du message en envoyant une ligne contenant un
point unique. Une procédure de "transparence" est utilisée pour éviter que celle-ci n'interfère
avec le texte de l'utilisateur. Il faut noter ici que les données du message incluent un résumé
d'en-tête comprenant les champs tels que : Date, Subject, To, Cc, From. L'indicateur de fin de
message confirme en outre la transaction de courrier et signale au récepteur-SMTP qu'il peut
désormais traiter les récipiendaires enregistrés pour ce message. Si les données sont
acceptées, le récepteur-SMTP renvoie une réponse de code "250 OK". La commande DATA
ne doit échouer que si la transaction de courrier s'avère incomplète (par exemple, pas de
récipiendaires), ou si les ressources suffisantes pour traiter le courrier ne sont pas disponibles.

La procédure qui suit est un exemple de transactions de courrier. Ces commandes ne


doivent être employées que dans l'ordre précisé ci-dessus. L'exemple 1 (ci-dessous) illustre
l'utilisation de ces commandes dans une transaction.

57
Exemple 1 : Exemple de procédure SMTP

Cet exemple de séquence SMTP montre un courrier envoyé par ‘ami’, utilisateur de l'hôte
‘wanadoo.un’, à ‘bella’, ‘candy’, et ‘david’ utilisateurs de l'hôte ‘wanadoo.deux’. Nous
supposerons que l'hôte ’un’ contacte l'hôte ‘deux’ directement.

S: MAIL FROM :< ami@un.wanadoo>

R: 250 OK

S: RCPT TO :< bella@deux.wanadoo>

R: 250 OK

S: RCPT TO :< candy@deux.wanadoo>

R: 550 No such user here

S: RCPT TO :< david@deux.wanadoo>

R: 250 OK

S: DATA

R: 354 Start mail input; end with <CRLF>.<CRLF>

S: Blah blah blah...

S: ...etc. etc. etc.

S: <CRLF>.<CRLF>

R: 250 OK

Le courrier a été accepté pour ‘bella’ et ‘david’, ‘candy’ n'avait pas de boîte aux lettres sur
l’hôte ‘deux’.

58
A.1.2. Procédures POP [6]

D’abord, l’hôte serveur lance le service POP3 en écoutant le port TCP 110. Quand
un hôte client souhaite utiliser ce service, il établit une connexion TCP avec l’hôte serveur.
Quand la connexion est établie, le serveur POP3 envoie un message de bienvenue. Le client et
le serveur POP3 échangent alors des commandes et des réponses (respectivement) jusqu’à ce
que la connexion soit fermée ou avortée.

Une session POP3 évolue à travers un certain nombre d’états au cours de sa vie. Une
fois que la connexion TCP a été ouverte et que le serveur POP3 a envoyé le message de
bienvenue, la session entre dans l’état AUTORISATION (AUTHORIZATION). Dans cet
état, le client doit s’authentifier auprès du serveur POP3. Une fois que le client a réussi à faire
cela, le serveur acquiert les ressources associées au dépôt de courrier du client, et la session
entre dans l’état TRANSACTION. Dans cet état, le client demande des actions de la part du
serveur POP3. Quand le client a émis la commande QUIT (quitter), la session entre dans l’état
MISE-A-JOUR (UPDATE). Dans cet état, le serveur POP3 libère les ressources acquises
durant l’état TRANSACTION et dit au revoir. La connexion TCP est alors fermée.

Un serveur POP3 PEUT implémenter un mécanisme afin de déconnecter les clients


trop longtemps inactifs (inactivity autologout timer). Ce temps d’inactivité entraînant la
déconnexion DOIT être d’au moins dix minutes. La réception de n’importe qu’elle commande
du client durant ce temps devrait justifier la remise à zéro de ce mécanisme. Quand ce temps
expire, la session N’ENTRE PAS dans l’état MISE-A-JOUR (UPDATE), le serveur devrait
fermer la connexion TCP sans effacer de message et sans envoyer une réponse au client.

A.1.3 Encodage MIME

(a)Le Quoted-Printable

Ce type de codage nécessite un en-tête MIME en émission :

Mime-Version : 1.0

Content-Type : Text/Plain ; Charset= « iso-8859-1 »

Content-Transfert-Encoding : Quoted-Printable.

59
Ce codage est employé pour transformer un texte écrit avec un codage sur 8 bits en
un texte qui ne contiendra que des caractères codables sur 7 bits. Le principe est d’utiliser un
code d’échappement qui est le signe ‘=’. Ce signe signifie que les deux caractères qui suivent
représenteront le code hexadécimal d’un caractère et non le caractère lui-même. L’exemple
qui suit donne un aperçu de quelques caractères codés en Quoted-Printable :

• le é dont le code 8 bits est E9, sera codé sur trois caractères de 7 bits de la façon
suivante : =E9
• De la même façon, le è sera codé =E8.
• le ç donnera =E7
• le à donnera =E0
• Comme le = revêt une signification particulière : C'est le code d'échappement, il sera
lui-même codé en =3D.

L'expression çà et là sera donc transmise sous la forme =E7=E0 et l=E0

Ainsi, on peut transporter les données uniquement sous la forme de caractères


US-ASCII (7 bits), même s'ils nécessitent 8 bits pour être définis. En effet, les caractères =,
E, et 0 ont tous des codes ASCII sur 7 bits.

(b). Le Base 64

Plus généralement, ce codage permettra de passer non seulement du texte codé sur 8
bits, mais aussi tout type de données constituées d'octets. Dans le Base 64 trois caractères de
8 bits (24 bits au total) sont découpés sous la forme de 4 paquets de 6 bits (toujours 24 bits au
total). Chaque valeur sur 6 bits, comprise donc entre 0 et 3F en hexadécimal, sera symbolisée
par un caractère présent, et avec le même code, dans toutes les versions de code ASCII. La
table d'équivalence est représentée par le tableau A.1 suivant. On remarque que les caractères
choisis sont tous codés sur 7 bits en US-ASCII, mais que la valeur qu'ils représentent n'est
pas leur code ASCII. Par exemple, soit à coder le texte suivant : 012

60
Tableau A.1 : Table d’équivalence entre caractère hexadécimale et binaire 8 bits

caractèr
0 1 2
e initial

Code
30 31 32
ASCII hexa

Code
0011000 0011000 0011001
ASCII
0 1 0
binaire

En assemblant les codes binaire, on obtient donc la suite de 24 bits suivante :


001100000011000100110010. Puis, on coupe le message initial en quatre morceaux de 6 bits.
Ce qui donne le résultat affiché sur le tableau A.2.

Tableau A.2 : Table d’équivalence entre caractère hexadécimale et binaire 6 bits

0011 00001 00010 11001


les valeurs sur 6 bits
00 1 0 0

Equivalent hexadécimal 0C 03 04 32

Caractère équivalent en
M D E y
Base 64

A la fin, 012 donne, une fois codé en Base 64 MDEy. On peut constater surtout que
ces caractères seront transcrits en US-ASCII, donc sur 7 bits. Et pour décoder, il suffit de le
faire dans l'autre sens.

61
ANNEXE 2 : MISE EN PLACE D’UN SERVEUR DNS AVEC BIND

Un serveur DNS est un serveur qui transforme l'adresse de type


http://www.nom_du_site.domain en adresse IP, qui est la seule sorte d’adresse valide sur
Internet. Lors d’une navigation sur internet, le serveur DNS de la machine devrait au
préalable être bien configuré, sinon il serait impossible d'atteindre le moindre site web, à
moins de connaître son adresse IP, ce qui est assez difficile à retenir. Le serveur DNS a une
autre fonctionnalité qui est d'indiquer le serveur SMTP (serveur de messagerie) qui est
autorisé à recevoir les messages pour un domaine. Le serveur DNS Bind qui a été installé sur
notre serveur de messagerie est le serveur le plus utilisé sur Internet.

• Configuration du serveur Bind

Les fichiers suivants seront obtenus après l’installation de Bind

/etc/named.conf Contient les paramètres généraux.

/var/named/named.ca Indique les serveurs dns racines.

/var/named/named.local résolution locale des adresses loopback

Il nous faut en ensuite créer les fichiers suivants :

/var/named/electronic.mg fichier qui fait correspondre le nom de machine et son adresse IP

/var/named/db.192.168.1 fichier de zone inverse qui fait correspondre l'adresse IP avec le


nom de machine.

On cherche ici à configurer un domaine electronic.mg avec comme adresse de réseau


192.168.1.0.

• Paramétrage des fichiers de configuration

/etc/named.conf :

options {
directory "/var/named";
dump-file "/var/tmp/named_dump.db";
pid-file "/var/run/named/named.pid";
statistics-file "/var/tmp/named.stats";

62
auth-nxdomain yes;
query-source address * port 53;
listen-on port 53 { any; }; } ;

zone "." {
type hint;
file "named.ca";};
zone "0.0.127.in-addr.arpa" {
type master;
file "named.local";};
zone "electronic.mg" IN {
type master;
notify no;
file "electronic.mg.zone" ;
allow-update { key "rndc-key";};};
zone "1.168.192.in-addr.arpa" IN {
type master;
notify no;
file "db.192.168.1";
allow-update { key "rndc-key";};};
key "rndc-key" {
algorithm hmac-md5;
secret"U3rIvWs3VcZzk5j5tbHN/w=="; };
controls {
inet 127.0.0.1 port 953
allow { 127.0.0.1; 192.168.1/24; 192.168.1.3; } keys { "rndc-
key"; }; };

Fichier de zone « electronic.mg » : /var/named/electronic.mg.zone

$TTL 86400
@ IN SOA rianala.electronic.mg.
root.rianala.electronic.mg. (
1997022700 ; Serial
28800 ; Refresh
14400 ; Retry
3600000 ; Expire
86400 ) ; Minimum
IN NS rianala.electronic.mg.

localhost IN A 127.0.0.1
rianala IN A 192.168.1.1
hoby IN A 192.168.1.2
victor IN A 192.168.1.3

www IN CNAME rianala


ftp IN CNAME rianala

rianala IN A 192.168.1.1
MX 10 rianala.electronic.mg.
electronic.mg IN MX 10 rianala.electronic.mg.

63
ANNEXE 3 : FICHIER DE CONFIGURATION DE POSTFIX

Paramètres du fichier /etc/postfix/main.cf :


Les lignes commençant par # sont des commentaires ajoutés pour une meilleure
compréhension de la configuration

# Paramètres et chemins des fichiers d’installation


readme_directory = /usr/share/doc/postfix-2.2.5/README_FILES
html_directory = /usr/share/doc/postfix-2.2.5/html
sendmail_path = /usr/sbin/sendmail.postfix
setgid_group = postdrop
command_directory = /usr/sbin
manpage_directory = /usr/share/man
daemon_directory = /usr/lib/postfix
newaliases_path = /usr/bin/newaliases
mailq_path = /usr/bin/mailq
queue_directory = /var/spool/postfix
mail_owner = postfix

# Paramètres personalisés

# Déclaration des domaines virtuels


virtual_alias_domains = informatique.mg automatique.mg
virtual_alias_maps = hash:/etc/postfix/virtual

#Paramètres des boîtes à lettres virtuelles


virtual_mailbox_domains = espa.mg
virtual_mailbox_base = /var/mail/vhosts
virtual_mailbox_maps = hash:/etc/postfix/vmailbox
virtual_minimum_uid = 100
virtual_uid_maps = static:5000
virtual_gid_maps = static:5000

64
#Paramètres généraux
myorigin = $mydomain
mydestination = $myhostname localhost.$mydomain localhost $mydomain
mynetworks = 127.0.0.0/8 192.168.1.0/24
relay_domains =

myhostname = rianala.electronic.mg
mydomain = electronic.mg
inet_interfaces = all
mynetworks_style = subnet
delay_warning_time = 1h
smtpd_banner = $myhostname ESMTP $mail_name ($mail_version) (Mandriva Linux)
unknown_local_recipient_reject_code = 450
smtp-filter_destination_concurrency_limit = 2
lmtp-filter_destination_concurrency_limit = 2
smtpd_sasl_path = /etc/postfix/sasl:/usr/lib/sasl2

# Configuration pour le support d’authentification SASL


broken_sasl_auth_clients = yes
smtpd_sasl_auth_enable = yes
smtpd_sasl_local_domain =
smtpd_sender_restrictions = permit_sasl_authenticated, permit_mynetworks
smtpd_recipient_restrictions = permit_sasl_authenticated, permit_mynetworks,
reject_unauth_destination

# Configuration pour le support TLS


smtp_use_tls = yes
smtpd_use_tls = yes
smtp_tls_note_starttls_offer = yes
smtpd_tls_key_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_cert_file = /etc/postfix/ssl/smtpd.pem
smtpd_tls_CAfile = /etc/postfix/ssl/smtpd.pem
smtpd_tls_loglevel = 1

65
smtpd_tls_received_header = yes
smtpd_tls_session_cache_timeout = 3600s
tls_random_source = dev:/dev/urandom

# Paramètres d’activation de MailScanner avec Postfix


header_checks = regexp:/etc/postfix/header_checks

66
REFERENCES

[1] http://www.arobase.org/culture/histoire.htm

[2] http://fp3.com/courriel/cestquoi.htm

[3] http://christian.caleca.free.fr/smtp/les_bases.htm

[4] http://www.arobase.org/ecole/entetes-detail.htm

[5] J. Postel, « Protocole Simple de Transfert de Courrier, [RFC821] », Août 1982

[6] M. Crispin, « Post Office Protocol, [RFC1725]», Août 1982

[7] http://www.cri.upsud.fr/info/info.cgi?path=/infomail/principe/fonctionnement/pop3

[8] M. Crispin, « Internet Access Message Protocol, [RFC1730] », Université de

Washington, Déc. 1994

[9] http://www.arobase.org/ecole/imap.htm

[10] http://www.ext.lmcp.jussieu.fr\enseignement\ye\informatique\app_reseaux\textuel

[11] Cours de « Codage », E411, 4ème Année, Département Electronique, ESPA,

2003-2004

[12] Philipe berger, http://philippe.berger2.free.fr/automatique/cours/numeration.htm

[13] http://www.grappa.univ-lille3.fr/polys/IP3/sortie004.html

[14] http://www.arobase.org/ecole/ccm-mime.htm

[15] http://www.cscfr.ch/publications/cours_echanges.html

[16] http://www.arobase.org/virus/index.htm

[17] Technlogy help desk, spam_filtering-faq, mai 2004, PDF

67
[18] http://www.secuser.com/dossiers/spamming_mailbombing.htm

[19] http://www.webenic.enic.fr/_vanoudendycke/linux.htm

[20] Emmanuel Viennet, Introduction au système Unix, 2001-2002, PDF

[21] Bernard Cassagne, Le Bourne Shell, Novembre 2001, PDF

[22] Jean François Pujol, Guide du Korn Shell sous Unix, Août 1993, PDF

[23] http://linux.developpez.com/secubook/node22.html

[24] http://www.linux-gull.ch/cours/postfix/general.html

[25] http://x.guimard.free.fr/postfix/goals.html

[26] http://www.christian.caleca.free.fr\smtp\const_smtp.htm

[28] http://x.guimard.free.fr/postfix/index5764.html?page=OVERVIEW.html

[29] http://www.postfix.org/BASIC_CONFIGURATION_README.html

[30] http://asg.web.cmu.edu/sasl/SASL Simple Authentication and Security Layer.htm

[31] http://www.postfix.org/SASL_README.html

[32] http://www.postfix.org/TLS_README.html

[33] http://www.postfix.org/CONTENT_INSPECTION_README.html

[34] http://webenic.enic.fr/~vanoudendycke/firewall.htm

[35] http://www.funix.org/fr/linux/main-linux.php3?ref=filtrermail&page=menu

[36] http://www.sng.ecs.soton.ac.uk/mailscanner/install/postfix.shtml

[37] http://www.catb.org/~esr/software.html

68
Auteurs : RANDRIAMBOLOLONA Manantena Rianala (**)
VONJISOA RAMILATSIHOARANA Dina (*)

Titre : « ETUDE SUR LE COURRIER ELECTRONIQUE »


Nombre de pages : 62
Nombre de figures : 14
Nombre de tableaux : 4

RESUME
Les courriers électroniques se basent essentiellement sur l’utilisation des protocoles
textuels tels que SMTP, POP ou IMAP selon le type du serveur sur lequel sont stockés les
courriers. Le fait que l’on peut lire des messages quel que soit leur forme est dû à un
procédure d’encodage et de décodage bien défini. Les principales sources de problèmes quant
à la sécurité des courriers sont les virus et les spams. Les solutions proposées dans ce
document consistent à adopter des règles et astuces de sécurité au niveau du client et à opter
pour un serveur libre travaillant sous linux : Postfix.

Mots-clés : Linux, SMTP, POP, IMAP, encodage, e-mail, postfix, antispam, antivirus, DNS.

ABSTRACT
Nowadays, e-mail contributes strongly to keep people much closer. E-mails are originally
based on specific sending and receiving protocols such as SMTP and POP. These protocols
respect definite rules to formulate address, subject and all contents otherwise receiver gets
confusing and unreadable message. That is encoding process. Through this evolution comes
the question of security because e-mails become the number one in the hacker’s list target,
one more reason to suggest a secured mail server including successively, firewall, anti spam,
anti virus and mail scanner.

Key words: Linux, SMTP, POP, IMAP, encoding, e-mail, postfix, anti spam, antivirus, DNS.
.

Rapporteur : Monsieur RAKOTONDRASOA Justin


Adresses des auteurs : Lot 20160, rue des Thermes ANTSIRABE 110 (**)
Lot IVG201 Porte 10 Antanimena ANTANANARIVO 101 (*)

Vous aimerez peut-être aussi