Mail (Amine Bouabid).pdf
Mail (Amine Bouabid).pdf
Mail (Amine Bouabid).pdf
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