·
  • Etat des services
  • 03 57 75 61 46
  • Espace Client
Devclic
 
Nos serveurs SMTP ont fait peau neuve
Actualités|mercredi 17 janvier 2024

Nos clients en hébergement mutualisé utilisent nos serveurs SMTP pour leurs envois d’e-mail, l’infrastructure avait besoin d’un petit coup de jeunesse et c’est fait depuis la fin 2023, cette maintenance a été réalisée sans aucune remonté, ni plainte client, un point sur ce que nous avons mis en place

Cette solution, mise en place, repose sur des micro-services développés en TypeScript qui fournissent un serveur SMTP et un wrapper (un wrapper est un système permettant d’envelopper quelque chose en vue de lui rajouter des fonctionnalités ou bien d’en changer le comportement sans le modifier) vers le vrai backend qui réalise les authentifications.

Pourquoi avoir redéveloppé un serveur SMTP ?

Comme tous les fournisseurs de solution e-mail, nous faisons face à un nombre assez important d’attaques en vue d’essayer d’usurper des comptes fournis à nos clients. Toutes ces tentatives, qui ne servent, au cout du compte à rien, sont arrêtées le plus tôt possible pour éviter de consommer de la ressource inutilement.

Par exemple, nous vérifions dès l’entrée du mot de passe de sa complexité, celui avec une complexité très faible est rejeté directement, ou bien encore si l’adresse IP qui nous contacte, est présente dans un nombre important de listes RBLs ou enfin, si l’utilisateur contient un nom de domaine invalide, on rejette directement la tentative.

En redéveloppant un serveur SMTP, il nous a été possible de mettre les systèmes que nous voulions en place, sans devoir changer une ligne d’un programme existant. Dovecot que nous utilisons ne vérifie pas le nom de domaine lors de la connexion et ne vérifie pas si celui-ci est valide, c’est une de nos contraintes et non une contrainte de son côté. Ainsi l’implémentation doit se faire de notre côté et non de son côté, de sorte à que qu’il puisse répondre à tous les besoins.

Attention, nous ne confondons pas un SMTP et Dovecot. Dovecot est utilisé pour authentifier nos utilisateurs, notre serveur SMTP se base sur le système d’authentification de Dovecot mais détaillons plus le fonctionnement en question.

Comment ça fonctionne exactement ?

Dès que nous recevons une demande d’authentification, notre serveur SMTP, va utiliser un microservice, dont son but est de vérifier que couple utilisateur / mot de passe correspond à un vrai compte utilisateur. Ce microservice (développé en TypeScript) va faire appel à Dovecot via le protocole POP3 … (vous l’aurez donc compris, ce système fonctionne avec n’importe quel serveur de mails !). Le protocole POP3 étant standardisé, nous ne sommes pas dépendants du fonctionnement d’un logiciel.. Ainsi, si nous changeons de logiciel gérant le POP3, nous n’avons rien à changer sur cette partie qui fonctionnera comme avant.

Dans ce serveur SMTP, nous implémentons, avant l’appel au serveur POP3, les vérifications que nous voulons et si le retour du serveur est positif, alors la demande est traitée. S’en suit une batterie de tests sur l’e-mail que nous recevons (l’objectif est d’éviter des bounces à gogo). Si notre utilisateur indique un nom de domaine ayant une extension qui n’existe pas, nous le lui indiquons directement. Des tests par nos antispams sont réalisés et si tout est en ordre, nous traitons son e-mail qui est routé vers nos serveurs SMTP de sortie. Au passage, nous en profitons pour rajouter des entêtes dans les e-mails et une signature DKIM automatiquement afin que la délivrabilité soit optimale !

Pour réaliser des “seamless upgrade”, nous lançons deux versions de notre serveur SMTP (une nouvelle et une ancienne) ces deux instances sont testées par un HAProxy qui traite toutes les connexions entrantes, de cette façon, nous pouvons effectuer des mises à jour sans coupure.

Vers de nouvelles fonctionnalités

Le fait d’avoir implémenté notre serveur SMTP va nous permettre de par exemple faire de l’envoi de SMS en passant par les e-mails. Avec un simple compte mail, votre application peut vous envoyer des SMS, sans avoir à développer une seule ligne de code. On peut également imaginer une historisation de tous les e-mails envoyés et des protections avancées sur les comptes e-mail.

A terme, nous passerons vers de l’anycast et un peu plus de loadbalancing, nous avons, pour le moment préféré faire simple et itérer sur la solution au fur et à mesure

Merci à notre partenaire Weobia, pour le coup de main sur le développement logiciel de la solution !