technique · réponse sourcée

SMTP utilise-t-il TCP ou UDP ? Analyse technique du protocole

SMTP est un protocole TCP. Il s’appuie sur le Transmission Control Protocol pour garantir que les e-mails sont livrés de manière fiable, dans le bon ordre et sans perte de données, ce qui est indispensable pour les protocoles de communication où chaque octet du message doit arriver intact.

Pourquoi SMTP a besoin de TCP

SMTP nécessite un protocole orienté connexion, car la livraison d’e-mails ne tolère pas la perte de paquets. TCP fournit une poignée de main en trois étapes pour établir une session, des numéros de séquence pour ordonner les paquets et des accusés de réception pour confirmer leur arrivée. Si un paquet est perdu en cours de transmission, TCP en demande automatiquement la retransmission. UDP fonctionne sans connexion et ne garantit pas la livraison, ce qui le rend inadapté à la nature structurée commande-réponse des sessions SMTP.

Le déroulement du handshake SMTP

La connexion TCP permet à SMTP de mener un échange de type conversation. Une fois le socket TCP ouvert, le serveur envoie un message d’accueil 220. Le client envoie ensuite EHLO ou HELO pour ouvrir la session. Cette interaction avec état se poursuit avec les commandes MAIL FROM et RCPT TO. Sans le flux fiable fourni par TCP, le serveur et le client ne pourraient pas synchroniser ces transitions d’état ni gérer efficacement les codes d’erreur.

Ports TCP standard de SMTP

SMTP fonctionne sur plusieurs ports TCP enregistrés selon l’usage. Le port 25 sert au relais de serveur à serveur. Le port 587 est la norme pour la soumission par les clients avec STARTTLS. Le port 465 est utilisé pour le TLS implicite. Toutes ces attributions sont gérées par l’IANA et reposent précisément sur la couche de transport TCP pour préserver l’intégrité de la session pendant la transmission des en-têtes et du corps des messages.

Sécurité et couche de transport

Les implémentations SMTP modernes encapsulent le flux TCP dans TLS pour assurer le chiffrement. Cela passe soit par la commande STARTTLS sur le port 587, soit par le TLS implicite sur le port 465. Comme TLS a lui-même besoin d’une couche de transport fiable pour effectuer sa propre négociation et son échange de clés, la connexion TCP sous-jacente est obligatoire. Les développeurs peuvent utiliser les outils gratuits de SendHQ pour vérifier leurs paramètres DNS pour ces connexions sécurisées.

Comparaison avec les protocoles UDP

Alors que SMTP utilise TCP, d’autres services liés à l’e-mail, comme le DNS, utilisent UDP pour des requêtes rapides et légères. Toutefois, une fois que la requête DNS a résolu l’IP du serveur de messagerie via UDP, le transfert de l’e-mail proprement dit passe par TCP. Cette approche hybride permet une résolution rapide et une livraison fiable. UDP est utilisé pour la rapidité et l’efficacité, TCP pour l’exactitude et la gestion des sessions.

Les questions que posent les équipes

SMTP peut-il fonctionner sur UDP ?

Non, la spécification SMTP exige un flux de données fiable et ordonné, que seul TCP fournit. UDP ne prend pas en charge la gestion de session nécessaire.

Quel port TCP privilégier pour envoyer des e-mails ?

Le port 587 est le port recommandé pour la soumission d’e-mails, car il prend en charge STARTTLS pour une transmission sécurisée.

TLS change-t-il le protocole de transport ?

Non, TLS est une couche cryptographique qui repose sur TCP. Il chiffre les données, mais s’appuie toujours sur TCP pour le transport effectif des paquets.

Pourquoi le DNS utilise-t-il UDP alors que SMTP utilise TCP ?

Le DNS utilise UDP pour des requêtes courtes et rapides afin de réduire la latence. SMTP utilise TCP, car la perte d’un seul paquet pourrait corrompre un e-mail entier.

Sources primaires