Réseau - Web - GNU/Linux

2016 06 juin

La vue d'ensemble - Debian 8.0 Jessie

Rédigé par Marc GUILLAUME | Aucun commentaire
Article précédent Mail façon FAI - Debian 8.0 Jessie Article suivant

Traduction de la page https://workaround.org/ispmail/jessie/migrate-from-wheezy

Le serveur de mail que vous vous apprêtez à installer utilise plusieurs composants logiciels. Laissez moi d'abord vous expliquer brièvement le rôle de chacun de ces logiciels :

  • Debian "jessie" est le système d'exploitation ;
  • Postfix reçoit les courrier arrivant d'Internet et envoit les mails sortant vers d'autres serveurs mail ;
  • SpamAssassin effectue des tests sur les mails entrant pour déterminer leur probabilité d'être des spams ;
  • Dovecot range les mails sur votre disque dur, applique des filtres et permet à vos utilisateurs de récupếrer leur courrier en utilisant les protocoles POP3 ou IMAP ;
  • Roundcube est une interface de webmail permettant à vos utilisateurs de consulter leur courrier en utilisant un navigateur Internet, de créer des règles de filtrage et de changer leur mot de passe ;
  • MySQL est une base de données qui contient les informations concernant vos domaines, vos alias mail et comptes mail.

Que se passe-t-il quand quelqu'un vous envoit un mail ?

Supposons que vous soyez responsable du domaine de courrier "example.org" et que quelqu'un sur Internet envoie un mail à john@example.org. Voici ce qui se passe, étape par étape :

ispmail-jessie-bigpicture-incoming

  1. Le serveur distant interroge le plus proche serveur DNS pour connaître le MX (Mail eXchanger) du domaine du destinataire. Le domaine est example.org donc il demande l'enregristrement MX du domaine example.org. Le serveur DNS lui répond que le nom d'hôte du serveur responsable du courrier pour ce domaine est mx.example.org. (dans le cas où il n'existe pas d'enregistrement MX il essayera d'utilise l'enregistremet A comme solution de repli).
  2. Le serveur de mail interroge de nouveau le DNS pour obtenir l'IP du serveur de courrier mx.example.org. Le DNS répond avec l'adresse IP (ou des adresses IP multiples).
  3. Maintenant le serveur de mail établit une connection TCP sur le port 25 (qui est par définition utilisé pour SMTP - le "simple mail transport protocol") sur cette adresse IP. Il informe le serveur de réception de l'adresse de l'expéditeur et de l'adresse de destination. Si le serveur de réception ne trouvait pas d'information sur le destinataire dans sa base de données il répondrait par un message d'erreur et terminerait la connexion SMTP. Le serveur émetteur enverrait un accusé de non distribution (également appelé "bounce", c'est à dire rebond) pour que l'expéditeur sache qu'il était impossible de délivrer du courrier à l'adresse du destinataire.
  4. Le destinataire semble connu. Donc Postfix accepte le mail, et le place dans sa file de courriers entrants et en envoit une copie au programme SpamAssassin en utilisant le protocole "milter". SpamAssassin va exécuter différentes vérifications pour calculer la probabilité qu'a le mail entrant d'être un spam. Il rajoute une ligne dans les entêtes de mail (qui contient les informations de contrôle) indiquant un résultat chiffré (qui représente la probabilité d'être un spam).
  5. Postfix transfert le mail au programme Dovecot qui est responsable de la distribution du courrier sur le disque.
  6. Dovecot sait que le répertoire de l'utilisateur john@example.com est /var/vmail/example.com/john et vérifie si des règles de filtrage ont été définies. Il possède aussi un filtre global qui range les spams dans un dossier appelé "Junk" si la probabilité de spam est au moins de 5. Pour terminer il copie le mail sous forme d'un fichier sur le disque dans /var/vmail/example.com/john/Maildir/…

Donc un tas de choses se passent quand un de vos utilisateurs reçoit un email. La situation suivant que je voudrais expliquer est…

Que se passe-t-il si un utilisateur relève son courrier en utilisant IMAP/POP3 ?

Ce processus est beaucoup plus simple :

ispmail-jessie-bigpicture-fetching
ispmail-jessie-bigpicture-fetching

  1. L'utilisateur habituellement utilise un client de mail (aussi appelé un "mail user agent") qui peut utiliser les protocoles POP3 ou IMAP pour relever le courrier sur le serveur de mail.Par exemple pour ma part je préfère Thunderbird. Ce client de mail se connecte sur le port POP3 (TCP 110) ou sur le port IMAP (TCP 143), envoit la commande STRTTLS pour entammer une connexion chiffrée et envoit l'identifiant de connexion de l'utilisateur (qui est l'adresse mail dans note cas) et son mot de passe. Si possible il est préférable que les utilisateurs se servent d'IMAP qui laisse toujours les mails sur le serveur et qui également supporte les dossiers multiples. POP3 est très limité et tombe à peu-près en désuétude de nos jours.
  2. Dovecot lance une requête sur la base de données MYSQL et vérifie que l'identifiant d'utilisateur et le mot de passe appartiennent à un utilisateur connu. Le mot de passe n'est pas enregistré en clair dans la base de données. Dovecot calcule le hachage du mot de passe et le compare avec celui enregistré dans la base de données. Si le mot de passe n'est pas bon, Dovecot refuse la connexion.
  3. La façon dont les mails sont rangés sur le disque correspond à un schéma défini. AInsi si l'utilisateur est jane@example.com alors Dovecot va rechercher le courrier dans /var/vmail/example.com/jane/Maildir/… et envoyer à l'utilisateur les mails demandés.

Certains utilisateurs n'aiment pas installer et configurer un client de mail. Ils préfèrent lire leur courrier sur leur navigateur Internet. Donc…

Qu'arrive-t-il si un utilisateur lit ses mails en utilisant un webmail ?

Le logiciel Roundcube qui fournit l'interface de courrier Web est essentiellement un logiciel PHP qui agit comme une passerelle entre des pages HTML et un client IMAP incorporé. Ainsi lorsqu'un utilisateurs utilise son navigateur pour se connecter à l'interface de courrier web

ispmail-jessie-bigpicture-webmail

  1. L'utilisateur saisit dans son navigateur l'URL HTTPS de l'interface de webmail. Le serveur web Apache accepte la connexion et lance les scripts PHP de Roundcube. Roundcubr présente un formulaire d'identification pour le nom d'utilisateur et le mot de passe. L'utilisateur saisit son identifiant (qui est son adresse mail) et son mont e passe et soumet le formulaire d'identification.
  2. Roundcube se connecte à Dovecot en utilisant IMAP et transmet le nom d'utilisateur et le mot de passe pour vérifier si ils sont valides.
  3. Dovecot traite cette connexion de la même façon que si elle émanait d'un client de mail. Il interroge la base de données MYSQL pour vérifier le nom d'utiliateur (= l'adresse mail) et le mot de passe.
  4. Si l'identification réussit Dovecot relève les mails sur le disque dur et les envoit via IMAP à Roundcube. Roundcube affiche les mails au format HTML et l'utilisateur peut les lire.

On voit donc que l'accès par web mail fonctionne également en utilisant IMAP. Sans que l'utilisateur s'en rende compte.

So you see that the web mail access also works through IMAP. The user does not realize that though.

Bon le dernier scénarion que je voudrais expliquer est…

Que se passe-t-il lorsque l'utilisateur veut envoyer un mail vers l'Internet?

Bien entendu vos utilisateurs veulent pouvoir envoyer des mails à d'autres utilisateurs sur Internet. Mais ils ne peuvent envoyer de mails directement au serveur de mail destinataire. D'abord parce que leur client de mail ignore quel serveur distant est responsable de l'adresse du destinataire - cette fonctionnalité n'est pas incluse dans le programme. Ensuite il est vraissemblable que l'utilisateur se voit assigner une adresse IP dynamique qui est bloquée par la plupart des serveurs de mail à cause des abus créés par les PC sous Windows infectés qui envoient des spams. La bonne façon d'envoyer des mails par Internet est de passer par votre serveur de courrier. Cette procédure est appelée relayage car votre serveur de mail agit comme un relais. Dans cet exemple votre utiliateur veut envoyer un email à fred@example.net.

ispmail-jessie-bigpicture-relaying

L'utilisateur écrit un mail dans son client de mail et clique sur "envoyer". Le client de mail établit une connexion SMTP avec votre serveur Postfix. Pour être certain que cet utilisateur est autorisé à envoyer du courrier électronique en passant par votre système, il demande un nom d'utilisateur et un mot de passe. Cette information est envoyée sous forme chiffrée.

Postfix pourrait maintenant contrôler le mot de passe dans la base de données directement. Mais comme Dovecot est déjà configuré pour se charger des authentifications il est plus simple de demander à Dovecot de vérifier le nom d'utilisateur et le mot de passe (sinon l'authentification SMTP est absolument affreuse avec Postfix).

Dovecot envoit donc une requête à MySQL pour vérifier si le nom d'utilisateur et le mot de passe (hachage) sont corrects et renvoit à Postfix le résultat.

Postfix sait maintenant si il est autorisé à envoyer le mail de la part de l'utilisateur. Il informe l'utilisateur qu'il a accepté le mail. Ce dernier est mis dans la file d'attente de Postfix pour envoi ultérieur. Postfix va maintenant interroger le DNS le plus proche (serveur de nom) pour déterminer le serveur à qui est destiné le mail. Comme le destinataire a un adresse en "...@exemple.net" il recherche l'enregistrement MX du domaine "exemple.net" et obtient ainsi son adresse IP.

Maintenant Postfix sait à quel serveur de courrier envoyer le mail. Il ouvre une connexion SMTP et délivre le mail.

Écrire un commentaire

Quelle est la deuxième lettre du mot mqvuu ?

Fil RSS des commentaires de cet article

À propos

Yakati.info - Réseau - Web - GNU/Linux © 2017

Généré par PluXml en 0.075s  - Administration

Mes coordonnées

Marc Guillaume
contact[at]yakati.info
79150 ÉTUSSON

Crédits

Pour la gestion du contenu

Généré par PluXml, le Blog ou Cms sans base de données

Pour le contenu

Licence Creative Commons
Ce(tte) œuvre est mise à disposition selon les termes de la Licence Creative Commons Attribution - Pas d’Utilisation Commerciale - Partage dans les Mêmes Conditions 4.0 International.

Pour le thème

Thème SOLID de blacktie.co adapté pour PluXml