Solution de serveur de courrier électronique auto-hébergé (partie 1)🔗

Posted by Médéric Ribreux 🗓 In blog/ Sysadmin/

#email #sysadmin #auto-hébergement

Introduction

L'e-mail ! Un truc vieux comme Internet, plus ancien que le Web… Un truc moins facile à configurer et à faire tourner à la maison. Avant de se lancer dans la configuration d'un (en fait de plusieurs) serveurs, il est important de comprendre les principes du courrier électronique, car ils sont moins (mais beaucoup moins) accessibles que ceux du Web.

Après avoir cherché pendant longtemps, j'ai enfin trouvé comment fonctionne le système du courrier électronique sur Internet (et sur un réseau IP d'une manière générale). Pour cela, j'ai du compulsé les éléments donnés par les sites suivants:

Qu'est-ce-que ça donne ?

Le courrier électronique est une chaîne d'acteurs situés entre une personne qui envoie le courrier et celle qui la reçoit. Les acteurs de la chaîne sont des programmes qui ont différents rôles. Voici la liste de ces programmes et un bref résumé de leur rôle:

Thundebird, qu'est-ce-que c'est finalement ?

Thunderbird = MUA+MSA+MRA le tout en un ! Thunderbird est un MUA, car il permet de rédiger et de lire des e-mails. Thunderbird est un MRA, car il cause en POP/IMAP à des machines distantes. Enfin, Thunderbird est un MSA, car il sait parler en SMTP directement à un MTA.

Comment tout ça fonctionne ?

Après les présentations, un petit schéma vaut plus qu'un grand discours…

Principes du courrier électronique complet:

                   +---------+          +-------+          +-------+
+-------+  écrit   |         |  envoie  |       |  SMTP    |       |
| Alice |--------->|   MUA   |--------->|  MSA  |--------->|  MTA  |::::>::::
+-------+          |         |          |       |          | envoi |       ::
                   +---------+          +-------+          +-------+       :: 
                                                                           :: 
                                                                      SMTP ::   
 ::::::::::::::::::::::::::::<::::::::::::::::::::::::::::<::::::::::::::::::
 ::
 ::
 ::
 ::   +---------+          +-----+             +-------------+
 ::   |         | appelle  |     | écrit dans  | Boîte       |
 ::::>|   MTA   |--------->| MDA |============>| aux lettres |::::>::::
      |         |          |     | le fichier  | de Bob      |       ::
      +---------+          +-----+             +-------------+       ::
                                                                     ::
                        POP ou IMAP                                  ::
 ::::::::::::::::::::::::::::<:::::::::::::::::::::::::::::::::::::::::
 ::
 ::
 ::   +----------+              +-------+
 ::   |          |              |       |     +-------+
 :::::| POP/IMAP |------------->|  MUA  |---->|  Bob  |
      |   MRA    |              |       |     +-------+
      +----------+              +-------+

Quelques programmes connus…

Les néophytes (comme moi pour le moment) de ce sujet se doivent de connaître les programmes de référence dans le domaine. Aussi, voici quelques MxA célèbres:

Pourquoi avoir tout cassé en plusieurs morceaux alors qu'aujourd'hui, tout est intégré ?

Au début (enfin, c'est toujours vrai aujourd'hui), le principe retenu pour la conception de programmes sous Unix était le KISS. Du coup, à chaque rôle un programme… Et c'est ce qui a permis de mettre en place plus facilement des solutions au spam. En effet, plutôt que de devoir modifier toute la chaîne, du client (pardon, du MUA) jusqu'au MRA, il a suffi de travailler sur le MDA et tout était réglé. D'ailleurs, les programmes de MTA utilisés dans le monde entier sont les mêmes qu'il y a 20 ans: sendmail (1980s), postfix (1999), qmail, exim (1995) sont des programmes dont les origines remontent aux débuts d'Internet. Ils ont, certes, été modifiés depuis notamment sur ce qui concerne la sécurité (le protocole SMTP étant pas forcément terrible en termes de design de ce côté) mais les principes de fonctionnement n'ont pas changé.

Le fait de casser en plusieurs morceaux vous donne également plus de liberté: si vous préférez utiliser procmail comme MDA au lieu d'un autre programme (le MDA par défaut de sendmail par exemple), rien ne vous l'interdit: vous choisissez ce qui est le plus adapté à vos besoins.

Pourquoi on a tout intégré alors qu'il semble que c'était mieux de tout casser ?

S'il fallait demander à Madame Michu (ou à d'autres que je ne citerai pas) de mettre en place toute cette chaîne pas forcément triviale à configurer, je crains qu'elle se passe de messagerie électronique. On pourrait tout aussi bien dire que ce sont les programmes qui ne sont pas assez simples à configurer et on aura sans doute un peu raison également (n'oublions pas que l'objectif est d'installer son propre serveur de messagerie électronique).

Un MTA n'est pas simple à configurer car, on peut faire des milliers de choses avec: router des e-mails ailleurs, faire des contrôles, ne pas accepter des fichiers plus gros que xMo, faire des notifications à certaines personnes, et j'en passe (surtout que je suis néophyte dans le sujet), etc. De plus, un MTA mal configuré peut relayer du SPAM (et vous pouvez être tenu pour responsable).

Pour l'instant, comme ça semble complexe, le modèle qui a émergé est l'hébergement des serveurs par des spécialistes. Tout ce qui ne nécessite pas de serveur (MUA/MSA/MRA) est souvent intégré dans le client. Même Mutt qui respecte bien la chaîne et qui est un simple MUA (mais qui fait plein de trucs) sait faire du SMTP, du POP et du IMAP. Du coup, on en revient à un modèle plus simple mais qui s'éloigne un peu de l'origine. C'est ainsi que tous vos e-mails sont hébergés (et donc potentiellement lus) par d'autres personnes.

Et parfois, certaines madames Michu ne savent même pas qu'il existe des clients de messagerie électronique qu'on peut installer sur sa machine. Les webmails ont le vent en poupe… Est-ce-bien ? Je dirais que ça peut être utile quand on se déplace. Mais rien n'empêche d'installer son propre serveur de webmail sur sa propre machine… Ainsi, il n'y a que moi qui garde mes e-mails qui n'ont rien à faire chez les autres: je veux qu'on les transporte jusqu'à moi mais après, c'est à moi de gérer ce qui m'appartient.

Pourquoi ne pas utiliser tout simplement GMail ?

D'abord, c'est intéressant de savoir comment ça fonctionne: même Gmail suit le modèle indiqué. Google a des MDA, il a des serveurs SMTP (donc des MTA), le MUA peut être celui de Google (l'interface web) ainsi que des serveurs POP et IMAP qui permettent à votre MRA de récupérer les e-mails. Pour pouvoir lire vos e-mails et les analyser, il y a forcément quelque-chose au niveau du MTA et du MDA qui sont tous les deux directement gérés par Google pour récupérer les informations via des filtres (ou comment passer d'un filtre anti-spam à filtre qui fait de la pub !), etc.

Ensuite, ces principes ont toujours cours actuellement; le fait de les comprendre vous permet de voir ce qu'est vraiment Internet à la base. Ne pas oublier que Google lit vos e-mails pour faire de la pub ciblée !

Quand c'est trop simple, c'est blasant ;-)

Et puis, si je trouvais le moyen pour madame Michu de devenir sa propre hébergeuse de services mails en deux clics au lieu de faire du Minitel 2.0 ?

Conclusion

C'est sûr, la chaîne de courrier électronique est d'un concept moins simple que celle du mail avec son modèle client-serveur à deux acteurs. Il est indispensable de connaître ses principes avant d'envisager la configuration d'un "serveur de messagerie électronique" car les programmes eux, se qualifient en tant que MTA ou MDA ou MRA.

Le prochain article de cette série sera complètement technique… mais il me faut un peu de temps avant d'arriver à monter un truc adapté à mes besoins et sécurisé !