Table des matières
1. Objectifs
Ce TP va nous permettre d’approfondir la compréhension des protocoles intervenant dans la transmission des email, du rôle d’un serveur mail ainsi que de sa configuration.
L’accent sera mis sur la démarche analytique : compréhension de la configuration, validation et débugging.
A la fin de ce TP, vous devrez :
- Sur base d’un email, expliquer les différents éléments qui le constituent : Format, en-tête, organisation du/des contenus
- Expliquez le rôle des protocoles SMTP et POP/IMAP dans la transmission d’un email
- Mettre en place un serveur Postfix avec une configuration basique
- Valider le fonctionnement du serveur SMTP via l’utilitaire telnet
- Consulter les emails directement sur la boîte mail, ou via l’utilitaire mail
- Configurer un client mail (mutt) pour permettre l’envoi d’email
- Pouvoir modifier le comportement du serveur Postfix sur base des fichiers de configuration
- Utiliser les outils adéquat pour observer les transmissions d’email : netstat, wireshark et les fichiers de logs Postfix.
2. Questions théoriques
Avant de s’attaquer à la configuration d’un serveur mail, il est important de comprendre la manière dont les échanges d’email fonctionnent, et quels protocoles interviennent. Essayez de répondre aux questions ci-dessous pour vérifier vos connaissances du sujet.
- Supposons que Alice envoie un email depuis son compte alice@yahoo.com à Bob, qui utilise bob@yahoo.com. Quels protocoles sont impliqués dans la transmission de cet email?
- Même question lorsqu’Alice envoie un email à son ami Trudy, trudy@gmail.com
- Trois protocoles sont utilisés pour la transmission du courrier électronique : SMTP, POP et IMAP. Quel(s) numéro(s) de port utilise chacun d’eux? Sur UDP ou sur TCP?
- En utilisant votre client mail favori, envoyez-vous un email contenant une simple ligne. Après réception, affichez-en la source, et essayez d’expliquer les lignes d’en-tête qui y figurent, en repérant celles qui ont été ajoutées par les serveurs intermédiaires. Ensuite, refaites l’analyse en envoyant cette fois un email contenant une pièce jointe.
- La plupart des agents mail permettent d’envoyer des emails à des destinataires en mode «carbon copy» et «blind carbon copy». Que sont ces deux types d’envoi, et comment sont-ils supportés par les serveurs SMTP?
3. Configuration Postfix
Postfix est un serveur SMTP Open Source fréquemment utilisé au même titre que son concurrent sendmail, mais avec des principes de configuration plus simples que ce dernier.
1. Fichiers de configuration
Les fichiers de configuration de Postfix se trouvent dans dans /etc/postfix
. Le fichier principal est main.cf. Examinez-le et familiarisez vous avec la syntaxe, et notamment la définition de variables, accessibles par après avec le préfixe $
.
A présent, faites une copie de backup de secours de ce fichier, puis remplacez ce contenu par les lignes ci-dessous. Prenez le temps de comprendre chaque ligne de configuration.
# Define server identity
myhostname = mail.woodytoys.lab
mydomain = woodytoys.lab
# Outgoing mail must use this as source address domain
myorigin = $mydomain
# Accepting local mail delivery for those destinations
mydestination = $myhostname localhost.$mydomain localhost $mydomain
smtpd_banner = $myhostname ESMTP $mail_name
# Network from which we accept smtp connexions
mynetworks = 192.168.0.0/24 127.0.0.0/8 [::1]/128
smtpd_relay_restrictions = permit_mynetworks, reject
#Log configuration
maillog_file=/var/log/postfix.log
#debug_peer_list = woodytoys.lab
#debug_peer_level = 5
2. Démarrage du serveur
Avant de commencer cette étape, faites un ps -A et observez les processus qui tournent.
Pour démarrer le serveur, utilisez simplement la commande ci-dessous :
postfix start
Vous pourrez ultérieurement utiliser la même commande avec les arguments stop
ou reload
.
- Regardez à présent quels processus ont été lancés par postfix. Si vous êtes curieux, vous pouvez essayer de comprendre à quoi ils servent sur base de la présentation de l’architecture Postfix dans la documentation officielle.
- Vérifiez dans les logs si le serveur vous renseigne sur son statut actuel
- Vérifiez les ports utilisés par Postfix, et depuis quelles adresses source/destination il recevra des requêtes.
3. Test du serveur
Vous allez à présent tester l’envoi d’email depuis l’utilisateur toto
vers l’utilisateur tutu
. Pour cela, commencez par créer ces deux utilisateurs avec la commande adduser
sur le serveur.
A présent, depuis le serveur, nous allons utiliser telnet
sur le port 25. telnet
va nous permettre d’ouvrir une connexion TCP sur le port spécifié, et puis d’échanger des données applicatives par dessus. Nous allons donc “parler” nous-même le “langage SMTP”.
Vérifiez d’abord si la commande telnet
est bien accessible. Si pas, exécutez update-alternatives --config telnet
et choisissez une des options proposées.
Vous pouvez ensuite effectuer la conversation suivante :
> telnet mail.woodytoys.lab 25
[Réponse du serveur]
HELO mail.woodytoys.lab
[Réponse du serveur]
MAIL FROM: toto
[Réponse du serveur]
RCPT TO: tutu
[Réponse du serveur]
DATA
[Réponse du serveur]
Bonjour Tutu,
Comment vas-tu?
.
[Réponse du serveur]
BYE
- Vérifiez à présent dans la boite mail de l’utilisateur tutu si le mail est bien arrivé. Cette boîte se trouve dans
/var/mail
. Vous pouvez également lire cet email en vous connectant en tant qu’utilisateur tutu, et en activant la commandemail
. Cette commande permet d’ailleurs également d’envoyer des email, en indiquant cette fois le destinataire en paramètre (ex :mail toto@formation.lab
) - Recommencez la procédure, cette fois en utilisant les adresses
toto/tutu@localhost
, puistoto/tutu@mail.woodytoys.lab
puistoto/tutu@woodytoys.lab
. Est-ce que cela fonctionne? Pourquoi? - Testez également l’envoi d’un email depuis le poste du directeur, via
telnet
, tout en effectuant une capture Wireshark. Affichez le contenu de l’échange SMTP via la fonction “Suivre flux TCP”.