technisch · antwoord met bronnen
Gebruikt SMTP TCP of UDP? Technische analyse van het protocol
SMTP is een TCP-protocol. Het vertrouwt op het Transmission Control Protocol om e-mailberichten betrouwbaar, in de juiste volgorde en zonder dataverlies af te leveren. Dat is essentieel voor communicatieprotocollen waarbij elke byte van het bericht intact moet aankomen.
Waarom SMTP TCP nodig heeft
SMTP heeft een verbindingsgericht protocol nodig, omdat e-mailbezorging geen pakketverlies verdraagt. TCP biedt een three-way handshake om een sessie op te zetten, volgnummers om pakketten te ordenen en bevestigingen (acknowledgments) om ontvangst te bevestigen. Gaat er tijdens de overdracht een pakket verloren, dan vraagt TCP automatisch om een nieuwe verzending. UDP is verbindingsloos en garandeert geen bezorging, waardoor het ongeschikt is voor het gestructureerde command-responsekarakter van SMTP-sessies.
Het SMTP-handshakeproces
Dankzij de TCP-verbinding kan SMTP een dialoog voeren. Nadat de TCP-socket is geopend, stuurt de server een 220-begroeting. De client stuurt daarna EHLO of HELO om de sessie te starten. Deze stateful interactie loopt verder via de commando's MAIL FROM en RCPT TO. Zonder de betrouwbare stream die TCP biedt, zouden server en client deze statusovergangen niet kunnen synchroniseren of foutcodes goed kunnen afhandelen.
Standaard TCP-poorten voor SMTP
SMTP draait, afhankelijk van het gebruik, op verschillende geregistreerde TCP-poorten. Poort 25 wordt gebruikt voor relay van server naar server. Poort 587 is de standaard voor submission door clients met STARTTLS. Poort 465 wordt gebruikt voor impliciete TLS. Al deze toewijzingen worden beheerd door IANA en maken specifiek gebruik van de TCP-transportlaag om de sessie intact te houden tijdens de overdracht van headers en berichtteksten.
Beveiliging en transportlaag
Moderne SMTP-implementaties verpakken de TCP-stream in TLS voor versleuteling. Dat gebeurt via het STARTTLS-commando op poort 587 of via impliciete TLS op poort 465. Omdat TLS zelf een betrouwbare transportlaag nodig heeft voor zijn eigen handshake en sleuteluitwisseling, is de onderliggende TCP-verbinding verplicht. Developers kunnen de gratis tools van SendHQ gebruiken om hun DNS-instellingen voor deze beveiligde verbindingen te controleren.
Vergelijking met UDP-protocollen
Terwijl SMTP TCP gebruikt, gebruiken andere e-mailgerelateerde diensten zoals DNS UDP voor snelle query's met weinig overhead. Zodra de DNS-query via UDP het IP van de mailserver heeft opgeleverd, schakelt de eigenlijke mailoverdracht over op TCP. Deze hybride aanpak zorgt voor snelle lookups en betrouwbare bezorging. UDP wordt gebruikt voor snelheid en efficiëntie, TCP voor nauwkeurigheid en sessiebeheer.
Vragen die teams stellen
Kan SMTP ooit via UDP draaien?
Nee, de SMTP-specificatie vereist een betrouwbare, geordende datastroom, en die biedt alleen TCP. UDP ondersteunt het benodigde sessiebeheer niet.
Welke TCP-poort is het best voor het verzenden van e-mail?
Poort 587 is de aanbevolen poort voor e-mailsubmission, omdat hij STARTTLS ondersteunt voor veilige overdracht.
Verandert TLS het transportprotocol?
Nee, TLS is een cryptografische laag bovenop TCP. Het versleutelt de data, maar blijft voor het eigenlijke transport van pakketten afhankelijk van TCP.
Waarom gebruikt DNS UDP als SMTP TCP gebruikt?
DNS gebruikt UDP voor kleine, snelle query's om de latentie te beperken. SMTP gebruikt TCP, omdat het verlies van één pakket een volledig e-mailbericht kan beschadigen.