08.01.2015 Views

Mail (Amine Bouabid).pdf

Mail (Amine Bouabid).pdf

Mail (Amine Bouabid).pdf

SHOW MORE
SHOW LESS

Create successful ePaper yourself

Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.

La messagerie<br />

sur Internet


Présentation : Terminologie<br />

•agent utilisateur : (mail user agent MUA: interface utilisateur).<br />

•mail, elm, mailtool, xmh, ...<br />

•eudora, outlook, MS <strong>Mail</strong>, Netscape messenger, ...<br />

•agent de transfert de messages :(message transfert agent MTA)<br />

•sendmail (Unix et NT) , IMS (NT) , Exchange (NT), Eudora<br />

Worldmail server (NT), ...<br />

•Agent de remise local : (local mail delivery agent MDA)<br />

•mail, procmail, ...<br />

•mémoire de messages : (mailbox - fichier texte)<br />

•/usr/spool/mail/jean, /var/mail/jean …<br />

•Queue de messages (/var/spool/mail/queu)<br />

•Contient les messages en attente d’être délivré


utilisateur<br />

Sendmail.cf<br />

Fonctionnement<br />

général<br />

Agent<br />

utilisateur<br />

<strong>Mail</strong>,<br />

outlook,<br />

eudora, etc..<br />

aliases<br />

UUCP<br />

mailer<br />

Sendmail<br />

MTA<br />

TCP/IP<br />

Local: mail<br />

procmail etc ..<br />

MDA<br />

Boite au<br />

lettre


Relayage<br />

Courrier<br />

<strong>Mail</strong> User Agent<br />

Envoi d’un message en utilisant des machines<br />

relais<br />

M T A<br />

local<br />

SMTP<br />

M T A<br />

relais<br />

SMTP<br />

M T A<br />

relais<br />

SMTP<br />

M T A<br />

local<br />

Boite


Lecture du courrier<br />

Depuis la machine qui contient la boite<br />

POP (Post Office Protocol)<br />

<strong>Mail</strong><br />

Pine<br />

ELM<br />

Boite<br />

messagerie<br />

Client POP<br />

Eudora, Netscape,<br />

Outlook, Palm Pilot,<br />

Téléphone<br />

recopie<br />

simple<br />

IMAP (Internet Message Access Protocol)<br />

Boite<br />

messagerie<br />

Syn chronisation<br />

Boite<br />

locale<br />

Boite<br />

messagerie


Format des adresses<br />

• Une adresse est la désignation d'une boîte aux lettres<br />

dans l'Internet ou ailleurs.<br />

• Les adresses utilisées dans l'Internet sont définies par la<br />

RFC 822 et amendées par la RFC 1123<br />

• Format des adresses internet:<br />

• Adresses global:<br />

user @domaine.dz : c’est le format le plus simple.<br />

• user (user amine) @ domaine.dz : la même<br />

adresse avec un commentaire (user amine).<br />

• ``user amine``@ domaine.dz : la partie ``user<br />

amine`` est considérée comme un seul mot.<br />

• Etc..


user1@domaine1.dz<br />

Format des messages<br />

Analogie<br />

Enveloppe<br />

user2@domaine2.dz<br />

En-Tête<br />

From:user1@domaine1.dz<br />

Date: 4 mars 2002<br />

message<br />

Corps<br />

To : user2@domaine2.dz<br />

Bonjour,<br />

etc…<br />

……


Format des messages<br />

• L’enveloppe: contient l’information utilisée par l’agent de<br />

transfert pour remettre le message à sa destination final.<br />

Structure d’un message:<br />

• En-tête : contient des informations de contrôle et<br />

d’identification mais qui ne sont pas utilisé par l’agent de<br />

transfert pour router le message.<br />

• Ligne blanche<br />

• Corps du message<br />

• suite de lignes terminées par CR/LF


Format des messages<br />

Format des lignes d'en-tête<br />

– FROM: expéditeur<br />

– TO: destinaire(s)<br />

– CC: copie à<br />

– BCC: copie aveugle<br />

– REPLY-TO: adresse de réponse.<br />

– ERROR-TO: adresse en cas d ’erreurs.<br />

– DATE: date expédition.<br />

– RECEIVED informations de transferts.<br />

– MESSAGE-ID: identificateur unique du message.<br />

– SUBJECT: sujet.


Format des messages<br />

• L’Adresse électronique : identifie de manière<br />

unique chaque boite aux lettres.<br />

– Personne@Machine.Domaine :<br />

jean@smtphost.dim.jussieu.fr<br />

– Personne@Domaine: Gautier@urec.cnrs.fr<br />

– les adresses littérales sont déconseillées :<br />

jean@134.157.4.21<br />

– Pas de différence entre minuscules et<br />

majuscules pour la partie distante mais en<br />

théorie importante pour la partie locale ( de<br />

nombreux systèmes ne la font pas )<br />

– Attention aux caractères autorisées ( limitation<br />

par RFC du DNS)


Autre types d’adresses:<br />

– Adresse UUCP: site1!site2!…!siten!user<br />

– user@site.uucp --> nécessite une passerelle<br />

uucp/Internet<br />

– Adresses Bitnet: user@site ou site est un nom de<br />

machine<br />

– user@site.bitnet<br />

– Adresse decnet: user::machine<br />

– Adresses X400:


Simple <strong>Mail</strong> Transfer<br />

Protocol SMTP: RFC821<br />

• Permet d'échanger du courrier électronique (E-<br />

<strong>Mail</strong>) sur Internet.<br />

• Transfert direct Entre l'ordinateur émetteur et<br />

un ordinateur destinataire.<br />

• Utilisation des enregistrements MX du DNS pour<br />

définir l'ordinateur destinataire .<br />

• La remise du message dans la boite aux lettres du<br />

destinataire du message est fonction de la<br />

politique messagerie du site.


Structure d'un courrier<br />

standard<br />

– Limitations (minimum admissible) :<br />

Tout est sous forme de lignes ASCII sur 7 bits<br />

– 2 parties<br />

• l'entête (définit les services attendus)<br />

• corps (le texte de la lettre) terminé par une ligne avec "."<br />

comme premier et unique caractère<br />

– nom utilisateur < 64 caractères<br />

– nom de domaine < 64 caractères<br />

– nombre de destinataires < 100<br />

– ligne à ligne avec CR/LF<br />

• ligne < 1000 caractères.<br />

– Les besoins d ’extensions et l ’arrivée de mime ont donné lieu à<br />

=> Extended SMTP (RFC 1425)<br />

– L ’envoi d’un binaire n ’est pas possible sans structuration<br />

préalable.


Envoi-Réception entre deux<br />

ordinateurs<br />

– Définit par le protocole SMTP.<br />

– Mode client – serveur.<br />

– Utilise TCP, le serveur est en attente sur le port 25<br />

• Pour test : telnet nom_du_serveur_smtp 25<br />

– Un seul exemplaire du message est envoyé à un site<br />

ayant plusieurs destinataires.<br />

– Le dialogue est en ASCII.<br />

– Il n'y a pas de vérification sur l'origine du message.


Courrier et DNS<br />

• "Resource record" du DNS de type MX<br />

Cerist.dz. IN MX 100 mail.wissal.dz.<br />

IN MX 200 mail.eldjazair.net.dz.<br />

• Il est utile d ’avoir plusieurs MX ( le poid le plus faible<br />

est préféré )<br />

• Tolérance aux pannes et répartition de charges:<br />

Cerist.dz IN MX 10 smtp.cerist.dz<br />

smtp.cerist.dz. IN A 193.194.64.85


Courrier et DNS<br />

Traitement:<br />

• s ’il n ’y a pas de règles spécifiques de routage (local, mailertable),<br />

utilisation des MX<br />

• s'il n'y a pas de MX, alors envoyer le courrier directement à la<br />

machine en utilisant l ’adresse IP. Si il n ’y a pas d ’adresse IP,<br />

rejet du message.<br />

• Si on apparaît dans la liste des MX, retirer les MX de poids égaux<br />

et supérieurs (moins prioritaires).<br />

• essayer les MX par ordre de priorité décroissante. En cas d ’échecs,<br />

on conserve le message et on réessaye à intervalle régulier.<br />

• Toujours mettre un champ MX même sur le serveur (<br />

dione.urec.fr IN MX 0 dione.urec.fr )<br />

• Attention, certains routeurs modifient ce traitement...


POP et IMAP<br />

• Des protocoles permettant à des interfaces utilisateur<br />

(Eudora, Outlook, … ) de relever le courrier sur un serveur<br />

• POP: Post Office Protocol<br />

• protocole simple<br />

• transfert les nouveaux messages de la boîte au lettre, a<br />

partir le serveur, vers la machine cliente (Mac ou PC)<br />

• IMAP: Interactive <strong>Mail</strong> Access Protocol<br />

• évolution de POP, permet de gérer les dossiers sur le<br />

serveur<br />

• les courriers restent sur le serveur, sont triés et rapatriés à<br />

la demande de l'utilisateur, puis remis en place à la fin de<br />

la session.


Session SMTP (1)<br />

– Depuis l'ordinateur machin.cerist.dz vers mail.transfer.dz<br />

– Commande : <strong>Mail</strong> -v user@cerist.dz<br />

– Les réponses de la machine distante sont précédées par un<br />

nombre .<br />

– Les commandes envoyées par la machine mail.transfer.dz<br />

sont précédées de >>> (ce n'est pas dans le protocole)<br />

– machin appelle en IP la machine mail<br />

– ce n'est pas encore le dialogue:<br />

user@cerist.dz. Connecting to mail.transfer.dz. (smtp)...<br />

– le daemon de messagerie de mail.transfer.dz répond<br />

– 220-mail.transfer.dz.dz Sendmail 8.6.11/8.6.9 ready at<br />

Wed, 7 Feb 1996 10:59:34 +0100


Session SMTP (2)<br />

– les stations entament le dialogue<br />

• 220 ESMTP spoken here<br />

• >>> EHLO machin.cerist.dz<br />

• 250-mail.transfer.dz Hello machin.cerist.dz<br />

[134.157.4.15], pleased to meet you<br />

• 250-EXPN<br />

• 250-SIZE<br />

• 250 HELP<br />

– machin donne le nom de l'expéditeur<br />

– >>> MAIL From: SIZE=200<br />

– 250 ... Sender ok<br />

– machin donne le nom du destinataire<br />

– >>> RCPT To:<br />

– 250 ... Recipient ok


Session SMTP (3)<br />

• machin indique qu'il va transférer le message<br />

>>> DATA 354 Enter mail, end with "." on a line by itself<br />

la lettre avec son entête et son corps est envoyée ici<br />

• mail indique qu'il l’a bien remis à user<br />

250 KAA18774 Message accepted for delivery<br />

user@transfer.dz... Sent (KAA18774 Message accepted for<br />

delivery)<br />

• machin désire terminer la transaction (QUIT)<br />

Closing connection to dom.dom.dz >>> QUIT 221<br />

mail.transfer.dz closing connection


Structure de la lettre reçu<br />

• La lettre reçu est modifié par chaque agent de transfert traversé<br />

(sendmail).<br />

• Exemple de lettre reçu:<br />

Received: from mail.cerist.dz by m1.domaine1.dz (8.6.10/dom-1.0)<br />

with ESMTP; Mon, 5 Feb 1996 10:51:13 +0100<br />

Received: from (mail.cerist.dz [192.54.193.133]) by<br />

m2.domaine2.dz (8.7.1/8.7.1) with ESMTP id KAA11083 for<br />

Mon, 5 Feb 1996 10:51:12 +0100 (MET)<br />

Date: Tue, 30 Jul 2002 13:33:09 -0400<br />

Message-Id: <br />

From: user@cerist<br />

Reply-to: postmaster@cerist.dz<br />

To: amine@wissal.dz<br />

Subject: Salut


Lettre reçue (1)<br />

• Les "Received" indiquent le chemin suivi, dans l'ordre<br />

inverse.<br />

Ils sont ajoutés par les machines ( relais SMTP ) à<br />

travers lesquelles le message a transité.<br />

Ils indiquent: l ’origine, la destination, date et<br />

parfois l ’adresse de l ’enveloppe de destination.<br />

Ils permettent de retrouver l ’origine du message.<br />

Utile pour le suivie et la correction an cas de<br />

problèmes.<br />

Évite les bouclages de messages ( arrêt entre 17 et 25<br />

champs received ).


Lettre reçue (3)<br />

• Destinataire<br />

To: user@transfer.dz<br />

• Copie conforme<br />

Cc: user2@transfer.dz<br />

• Sujet du courrier<br />

Subject: SALUT<br />

• Date d'envoi (départ - attention à la synchronisation des<br />

horloges)<br />

Date: Fri, 10 Jan 92 15:39:16 +0000<br />

• Origine<br />

From: utilisateur@domaine.dz<br />

• Ligne blanche de fin d'en-tête et de début de corps:<br />

Salut, comment tu va


ESMTP et MIME<br />

• Ajoute des fonctionnalités nouvelles<br />

• Transport de messages 8 bit MIME<br />

• Taille maximale de message<br />

• Fonctions autorisées (EXPN, VRFY, ...)<br />

• Autres extensions (Pipelining, extensions privées)<br />

• Le message de bienvenue ESMTP est EHLO (au-lieu de<br />

HELO), en cas de réponse négative le client doit<br />

basculer vers l'ancien protocole


Le format MIME<br />

• Le format MIME Multipurpose Internet <strong>Mail</strong><br />

Extension est une extension de la spécification du<br />

format du message (RFC 1341 a 1345).<br />

• Permet d’intégrer plusieurs formats de données<br />

dans le message (images, vidéo, etc..)<br />

• Pour cela il contient des entêtes supplémentaires<br />

qui décrivent les différentes composants du<br />

message.


ESMTP(2)<br />

• A la connexion, le serveur indique les extensions qu'il<br />

supporte<br />

– Exemple:<br />

EHLO mail.eldjazair.net.dz<br />

250-mail.cerist.dz Hello mail.eldjazair.net.dz<br />

250-8BITMIME<br />

250-SIZE 2048000<br />

250-EXPN<br />

250-DSN<br />

250-VERB<br />

250-HELP


Configuration de sendmail<br />

Sendmail se configure via plusieurs fichiers:<br />

• /etc/mail/sendmail.cf : le fichier de configuration<br />

principal.<br />

• /etc/mail/aliases : le fichier de configuration des<br />

alias.<br />

• /etc/mail/access.db<br />

• /etc/mail/virtusertable.db<br />

• /etc/mail/genercistable.db


Configuration de sendmail<br />

• Le fichier Sendmail.cf est le fichier de configuration<br />

central de sendmail.<br />

• Caractérisé par une syntaxe très compliquée.<br />

• On n’écrit pas à la main le fichier sendmail.cf on utilise<br />

des fichiers de configuration types livrés généralement<br />

avec sendmail puis on modifie quelques paramètres .<br />

• Sinon on doit le générer avec le macro processeur m4.


Configuration de sendmail<br />

Le fichier sendmail.cf contient:<br />

• des définitions de variables (macros en terminologie sendmail<br />

)une variable est précédé par une seul lettre en minuscule ou en<br />

majuscule sans séparation.<br />

• des définitions de classes: une classe est similaire a une variable<br />

sauf qu’elle peut prendre plusieurs éléments etc...<br />

• des définitions d'options.<br />

• des définitions de priorités.<br />

• des définitions d'utilisateurs fiables.<br />

• des définitions de champs d'en-tête.<br />

• des définitions de tables de correspondances.<br />

• des définitions d'agents de transport de messages.<br />

• des règles de réécriture.


Définition d’une d<br />

variable dans<br />

sendmail.cf<br />

La commande<br />

de définition<br />

La valeur de<br />

la variable<br />

DDdom.com<br />

La variable à<br />

définir


Quelque commandes de sendmail.cf<br />

Command Syntaxe Signification<br />

• Version Level Vlevel[/vendor] Specify version level.<br />

• Define Macro Dxvalue Set macro x to value.<br />

• Define Class Ccword1[ word2]... Set class c to word1<br />

word2....<br />

• Define Class Fcfile Load class c from<br />

file.<br />

• Set Option Ooption=value Set option to value.<br />

• Trusted Users Tuser1[ user2...] Trusted users are<br />

user1 user2....


Quelque commandes de sendmail.cf<br />

Command Syntaxe Signification<br />

• Define <strong>Mail</strong>er Mname, {field=value} Define mailer name.<br />

• Define Header H[mflag]name:format Set header format.<br />

• Set Ruleset Sn Start ruleset number n.<br />

• Define Rule Rlhs rhs comment Rewrite lhs patterns to


Quelques exemples<br />

Quelques variables prédéfinis:<br />

Variable utilisation signification<br />

• J Djtransfer.dz définit ce domaine comme<br />

domaine par défaut.<br />

• M le nom de ce domaine (le domaine uniquement)<br />

• X le nom complet de l’emtteur<br />

• Etc..<br />

Il est possible de définir ses propres variables avec la macro<br />

Dxvaleur ou x est le nom de la variable, et valeur la valeur<br />

assigné a cette variable.


Définition de classes:<br />

Quelques exemples<br />

• Une classe est précédée par les lettres C ou F<br />

• Sa syntaxe est similaire a une définition de variable a<br />

ceci prêt qu’elle peut contenir plusieurs variables dans<br />

la même ligne ou sur plusieurs lignes.<br />

Par exemple :<br />

Cwval1 val2<br />

Cwval3<br />

Assigne a la classe w les valeurs: val1 val2 et val3<br />

• La commande F permet d’assigner a la classe des<br />

valeurs a partir d’un fichier:<br />

Fwnon-fichier<br />

Ou nom-fichier contient des valeurs sur chaque ligne


Quelques exemples<br />

• Définition des options:<br />

Une option est défini après la commande O, elle permet<br />

de définir l’environnement de sendmail, par exemple,<br />

les chemins d’accès pour certain fichiers important.<br />

Exemple: la définition du chemin du fichier des alias<br />

O AliasFile=/etc/aliases<br />

Autres exemples:<br />

# temporary file mode<br />

O TempFileMode=0600<br />

# default timeout interval<br />

O Timeout.queuereturn=5d


Règles de réér<br />

éécriture<br />

• Les règles de réécritures sont le cœur de la<br />

configuration du fichier sendmail.cf.<br />

• C’est un ensemble de règles individuelles utilisées<br />

pour transformer les adresses de messagerie du format<br />

émis par le programme utilisateur (outlook ou autre),<br />

vers un format compris par l’agent de remise des<br />

messages (smtp).<br />

• Le format d’une règle:<br />

R <br />

Sendmail analyse l’adresse, si elle correspond au motif,<br />

il lui applique la transformation.<br />

• Le résultat obtenu peut être re transformé par une<br />

autre règle de réécriture.


Exemple d’une d<br />

réér<br />

éécriture d’uned<br />

adresse<br />

dupont@machine<br />

Utilisation des alias<br />

Ajout du domaine<br />

Suppression du nom de<br />

la machine<br />

Henri.Dupont@machine<br />

Henri.Dupont@machine.truc.net<br />

Henri.Dupont@truc.net


Variables et classes utilisées pour la<br />

configuration de sendmail<br />

• La liste des domaines qui recevrons leur mail a partir<br />

de sendmail:<br />

Cwlocalhost localdomain.dz mail.autredomaine.dz ….<br />

Ou bien<br />

Fw/etc/mail/local-host-names<br />

local-host-names contient la liste des domaines dont<br />

sendmail reçoit les mails.<br />

• Le domaine officiel:<br />

Djwissal.dz<br />

Lorsqu’un e-mail est émis, le message contient ce nom de<br />

domaine par défaut.


Problèmes de sécurits<br />

curité(1)<br />

• Divers problèmes:<br />

– pertes de messages<br />

• par l ’agent de transport ( le MTA )<br />

• par l ’utilisateur<br />

• par un incident matériel<br />

• Écoute des messages<br />

• Falsification des messages


Securité (2)<br />

Réponses:<br />

• extension DSN informe l’expéditeur sur ce qui est<br />

arrivé au message.<br />

• Chaque relais sait indiquer si le message est<br />

envoyé correctement ou non au relais suivant.<br />

• Limitation possible du nombre de relais par<br />

SMTP.<br />

• Utilisation du Chiffrement entre les serveurs<br />

(PGP).


SPAM (1) : Le problème<br />

• Courrier non sollicité envoyé à plusieurs personnes (<br />

idem au prospectus des boites aux lettres )<br />

• Les adresses sont récupérées via les News, les listes de<br />

diffusion, les pages Web ( analyse des champs mailto ).<br />

• Apparu avec l ’explosion du nombre d ’utilisateur de<br />

l ’Internet ( solutions apparues en 1997 ).<br />

• Un commerce florissant ( vente de fichiers<br />

d ’utilisateurs… )


SPAM (2) - Solutions<br />

• Reconnaître l ’auteur d ’un SPAM<br />

• Adresse « abuse »<br />

• Filtrage au niveau personnel<br />

• Filtrage au niveau d ’un site<br />

– liste noir des « spammeurs » connus<br />

– interdire le relayage<br />

– refuser les adresses invalides<br />

– refuser les adresses IP d’expéditeurs non valides<br />

• L ’avenir : règles anti-spam , initiative MAPS RBL (<br />

<strong>Mail</strong> Abuse Protection System - realtime Blackhole List<br />

) de P.Vixie ( constitution d ’une arborescence DNS<br />

composée des @IP de domaines spammeurs -<br />

d.c.b.a.maps.vix.com )


un autre serveur de messagerie<br />

POSTFIX<br />

• Un Agent de transfert de messages comme<br />

sendmail .<br />

• C’est un serveur qui est caractérisé par sa<br />

rapidité par rapport a d’autres serveurs.<br />

• Sa configuration et très simple par rapport à<br />

d’autres (notamment sendmail).


Configuration de postfix<br />

• Les fichiers de configurations se trouvent<br />

sur le répertoire /etc/postfix.<br />

• Le fichier principale est /etc/postfix/main.cf


Le fichier main.cf<br />

• #Informations sur les répertoires locaux.<br />

• Queue directory = /var/spool/postfix<br />

• Command_directory = /usr/local/sbin<br />

• Daemon_directory = /usr/local/libexec/postfix


Le fichier main.cf<br />

• #possession des fichiers de postfix:<br />

• <strong>Mail</strong>_owner = postfix<br />

• #nom de la machine et du domaine :<br />

• Myhostname = alex.linux.dz<br />

• #pour l’envoi du courrier<br />

• Myorigine = $myhostname<br />

• #mode de transport<br />

• Default_transport = smtp


Le fichier main.cf<br />

• #gestion des alias<br />

• Alias_map = hash :/etc/postfix/alias<br />

• Alias_database = hash : /etc/postfix/alias<br />

• #délivrance du courrier<br />

• <strong>Mail</strong>_box_command = /usr/local/bin/procmail


FIN

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!