technique · réponse sourcée
STARTTLS : sécuriser SMTP avec le TLS opportuniste
STARTTLS est une extension de service SMTP qui permet de transformer une connexion non sécurisée en connexion sécurisée grâce à TLS. Elle permet à un client et à un serveur de négocier un canal sécurisé sur un seul port, pour que le contenu des e-mails et les identifiants d’authentification soient chiffrés pendant le transit.
Fonctionnement technique
Le processus commence par un échange SMTP standard en clair. Le serveur annonce la prise en charge de STARTTLS dans sa réponse EHLO. Le client émet alors la commande STARTTLS. Si le serveur accepte, les deux parties effectuent un échange TLS pour établir le chiffrement. Une fois la couche sécurisée active, la session se poursuit avec les commandes SMTP standard, mais toutes les données suivantes sont chiffrées.
Pourquoi c’est important pour les expéditeurs
STARTTLS empêche l’écoute clandestine et les attaques de l’homme du milieu en chiffrant le chemin de communication entre serveurs de messagerie. Sans lui, le trafic SMTP circule en clair et expose le corps des messages sensibles et les identifiants de connexion à quiconque surveille le chemin réseau. La plupart des serveurs destinataires modernes privilégient, voire exigent, les connexions chiffrées pour accepter les e-mails.
Considérations opérationnelles
Un risque critique est l’attaque par rétrogradation (downgrade), dans laquelle un attaquant supprime la commande STARTTLS de la réponse du serveur pour forcer le client à envoyer l’e-mail en clair. Pour s’en prémunir, les administrateurs peuvent mettre en place MTA-STS ou configurer un TLS obligatoire. Les outils gratuits de SendHQ (https://sendhq.cc/tools) peuvent vous aider à vérifier la configuration générale de votre domaine pour une meilleure livraison.
Erreurs de mise en œuvre courantes
Une erreur fréquente consiste à confondre STARTTLS et TLS implicite. STARTTLS démarre sur un port en clair (comme le 587) puis bascule en chiffré, alors que le TLS implicite (port 465) exige un échange sécurisé avant l’envoi de toute commande SMTP. Une mauvaise configuration du port ou l’absence de certificat SSL valide provoque des échecs de connexion ou un repli vers une transmission non sécurisée.
Exemple concret
Un client se connecte au port 587 et envoie EHLO. Le serveur répond 250-STARTTLS. Le client envoie STARTTLS. Le serveur répond 220 Ready to start TLS. Le client et le serveur négocient les clés et chiffrent la session. Le client envoie ensuite AUTH LOGIN pour fournir ses identifiants en toute sécurité, sans les exposer sur le réseau.
Les questions que posent les équipes
STARTTLS est-il la même chose que SSL/TLS ?
STARTTLS est une commande qui sert à ouvrir une session TLS sur une connexion en clair existante, tandis que SSL/TLS désigne les protocoles de chiffrement sous-jacents eux-mêmes.
Que se passe-t-il si STARTTLS échoue ?
Par défaut, la plupart des serveurs utilisent le TLS opportuniste : ils se rabattent sur une transmission en clair si l’échange échoue, sauf si un TLS obligatoire a été explicitement configuré.
Quel port est généralement utilisé pour STARTTLS ?
Le port 587 est le port de soumission standard pour STARTTLS, mais STARTTLS est aussi fréquemment utilisé sur le port 25 pour le relais de serveur à serveur.