Module 1 · 1.1
De reis van een e-mail
Module 1: Hoe e-mail werkt · Leestijd: 9 minuten
Leerdoel: Na deze les kun je stap voor stap beschrijven hoe een mail van de verzender bij de ontvanger komt, en bij elke stap zeggen welk programma of welke server het werk doet.
Kernbegrippen: mailprogramma (MUA), verzendserver (MSA, submission), mailserver (MTA), MX-record, wachtrij, aflevering (MDA), mailbox, ophalen (IMAP/POP3), envelope, kopregels
Mail is post, geen chatbericht
Als je een chatbericht stuurt, gaat het via één bedrijf: de app van de verzender en de app van de ontvanger praten met dezelfde servers. E-mail werkt anders. De verzender en de ontvanger kunnen elk bij een andere aanbieder zitten: de een bij een hostingbedrijf, de ander bij Gmail, een derde bij Microsoft 365 of bij zijn eigen bedrijfsserver. Toch komt de mail aan. Dat lukt omdat alle mailservers ter wereld dezelfde afspraken volgen.
Je kunt e-mail goed vergelijken met de post. Je schrijft een brief (het bericht), stopt hem in een envelop met een adres (de envelope), brengt hem naar de brievenbus (de verzendserver), het postbedrijf zoekt uit waar het adres ligt (de MX-opzoeking), vervoert de brief naar het juiste sorteercentrum (de ontvangende mailserver) en die legt hem in de brievenbus van de ontvanger (de mailbox). De ontvanger haalt hem daar op wanneer het hem uitkomt.
De stations op een rij
Stel: Anna mailt vanaf anna@example.com naar jan@example.net. Dit gebeurt er:
| Stap | Wie | Wat gebeurt er | Protocol |
|---|---|---|---|
| 1 | Anna's mailprogramma (MUA, mail user agent) | Anna drukt op Verzenden. Het programma logt in bij de verzendserver van haar aanbieder en geeft de mail af. | SMTP-submission, poort 587 of 465, met inloggen |
| 2 | Verzendserver van example.com (MSA, mail submission agent) | Controleert dat Anna echt Anna is (gebruikersnaam en wachtwoord), zet de mail in de wachtrij. | |
| 3 | Uitgaande mailserver (MTA, mail transfer agent) | Vraagt in de DNS op: welke server neemt mail aan voor example.net? Dat zijn de MX-records. | DNS |
| 4 | Uitgaande MTA naar ontvangende MTA | Maakt verbinding met de server uit het MX-record en levert de mail af. | SMTP, poort 25 |
| 5 | Ontvangende server van example.net | Controleert de mail (spam, virussen, SPF, DKIM, DMARC) en stopt hem in de mailbox van Jan. Dit laatste deel heet de MDA (mail delivery agent). | |
| 6 | Jan's mailprogramma of webmail | Haalt de mail op of toont hem rechtstreeks van de server. | IMAP (poort 993) of POP3 (poort 995) |
Bij kleine aanbieders zijn de MSA, de MTA en de MDA vaak één en hetzelfde programma op één server. Bij grote aanbieders zijn het aparte clusters. Voor jou maakt dat weinig uit: het zijn rollen, geen kastjes.
Let op het verschil tussen stap 1 en stap 4. Allebei gebruiken ze SMTP, het Simple Mail Transfer Protocol (RFC 5321). Maar bij stap 1 log je in en gebruik je poort 587 of 465; dat heet submission (RFC 6409). Bij stap 4 praten twee servers met elkaar op poort 25, zonder in te loggen: de ontvangende server neemt mail aan voor zijn eigen domeinen van wie dan ook. In les 1.4 zie je waarom die scheiding er is.
Stap 3 van dichtbij: de MX-opzoeking
De verzendende server weet niet uit zichzelf waar example.net zijn mail ontvangt. Hij vraagt het aan de DNS:
example.net. 3600 IN MX 10 mx1.mailprovider.example.
example.net. 3600 IN MX 20 mx2.mailprovider.example.Het laagste getal heeft voorrang. De server probeert eerst mx1, en als die niet antwoordt mx2. Daarna vraagt hij het IP-adres van die naam op (A- of AAAA-record) en maakt verbinding.
Twee bijzondere gevallen die je in de praktijk tegenkomt:
- Geen MX-record. Dan probeert de verzender het A- of AAAA-record van het domein zelf (de "impliciete MX" uit RFC 5321, paragraaf 5.1). Dat is een overblijfsel uit vroeger en werkt niet betrouwbaar; elk domein dat mail ontvangt, hoort een MX te hebben.
- Een null MX:
0 .Dit betekent: "dit domein ontvangt nooit mail" (RFC 7505). Het domeinexample.comheeft er zo een. Een verzender geeft meteen op en stuurt een foutmelding terug, in plaats van dagen te blijven proberen.
Hoe MX-records en prioriteiten precies werken, lees je in les 4.1 van de DNS-cursus.
De wachtrij: e-mail mag even duren
Een mail is niet altijd binnen een seconde aangekomen. Antwoordt de ontvangende server niet, of zegt hij "probeer het later nog eens" (een code die met een 4 begint), dan blijft de mail in de wachtrij van de verzendserver staan. Die probeert het later opnieuw, steeds met wat meer tijd ertussen. RFC 5321 (paragraaf 4.5.4.1) adviseert minstens 30 minuten tussen pogingen en pas na 4 tot 5 dagen op te geven. Veel servers sturen na een paar uur alvast een waarschuwing ("delayed", nog niet afgeleverd) en na een paar dagen de definitieve foutmelding.
Dat is een sterk punt van e-mail: is een mailserver een uur stuk, dan raakt er geen mail kwijt. Het is ook de reden dat een mail soms pas uren later binnenkomt. In module 6 zie je hoe je zo'n vertraging herkent.
Envelope en kopregels: twee adressen
Net als bij de post heeft een mail twee soorten adressen:
- De envelope. Dat zijn de adressen die de servers onderling in het SMTP-gesprek gebruiken:
MAIL FROM(de afzender voor foutmeldingen, later te zien als Return-Path) enRCPT TO(de ontvanger). De servers bezorgen op basis van de envelope. - De kopregels (headers). Dat is wat in de brief zelf staat:
From:,To:,Cc:,Subject:,Date:. Je mailprogramma toont die.
Meestal zijn ze gelijk, maar niet altijd. Een BCC-ontvanger staat wel in de envelope, maar niet in de kopregels; daarom zien anderen hem niet. Een nieuwsbriefdienst zet zijn eigen adres als envelope-afzender, zodat foutmeldingen bij de dienst terechtkomen, terwijl in From: jouw adres staat. En een oplichter kan in From: zetten wat hij wil.
Waarom dit ertoe doet: SPF controleert de envelope-afzender, de gebruiker ziet de From:. Daarom is er DMARC, dat die twee aan elkaar koppelt (module 4).
Waar het kan misgaan
Met dit plaatje kun je bij elk probleem vragen: bij welk station gaat het mis?
- Verzenden lukt niet (foutmelding meteen in je programma): stap 1 of 2. Bijna altijd instellingen: poort, inloggen, wachtwoord (module 2).
- Je krijgt een bounce terug: stap 4 of 5. De ontvangende server weigerde de mail, of het adres bestaat niet (module 6).
- De mail komt aan, maar in de spammap: stap 5. De ontvanger vertrouwt de mail niet (modules 4 en 5).
- De ontvanger ziet niets, en jij krijgt geen foutmelding: de mail staat misschien nog in een wachtrij, of is bij de ontvanger stil gefilterd. Hier helpen de logboeken van de verzendserver (module 6).
- Mail komt nergens binnen voor je domein: stap 3. De MX-records kloppen niet, bijvoorbeeld na een verhuizing (module 8).
In de praktijk: zo ziet het eruit bij een hostingpakket
Bij een hostingpakket van WebOké doet één server per pakket alle rollen: je mailprogramma levert de mail af op die server (stap 1 en 2), de server verstuurt hem naar buiten (stap 3 en 4) en ontvangt mail voor je domein (stap 5). In DirectAdmin kun je met E-mail Tracering per bericht zien of het is afgeleverd. Bij andere aanbieders werkt het vergelijkbaar; daar heet zo'n functie bijvoorbeeld "berichttracering" of "mail log".
Samenvatting
- Een mail gaat van je mailprogramma (MUA) via de verzendserver (MSA/MTA) naar de ontvangende server (MTA/MDA) en van daar naar het mailprogramma van de ontvanger.
- Versturen vanuit je programma is SMTP-submission met inloggen (587/465); servers onderling praten SMTP op poort 25; ophalen gaat met IMAP of POP3.
- De verzendende server zoekt de MX-records van het domein achter de @ op. Een null MX (
0 .) betekent: dit domein ontvangt geen mail. - Een mail die niet meteen kan worden afgeleverd, blijft in de wachtrij en wordt dagen opnieuw geprobeerd.
- Envelope (Return-Path) en kopregels (From) zijn twee verschillende afzenders. SPF kijkt naar de eerste, de gebruiker naar de tweede.
Quiz
Opdracht
Opdracht Z1.1: De eerste mailserver vinden. Zoek de MX-records op van gmail.com (of van je eigen domein). Vul in welke server als eerste wordt geprobeerd, met zijn prioriteitsgetal, en één IP-adres (IPv4 of IPv6) van die server. Het programma vraagt dezelfde gegevens live op en kijkt na.
Verder lezen
De stappen in deze artikelen gelden voor de panelen van WebOké; bij andere aanbieders werkt het vergelijkbaar.
- Uitleg verzendproces van emails / SMTP
- DirectAdmin handleiding 8.7: IMAP of POP3: wat is het verschil?
- Gratis DNS-cursus 4.1: MX-records en prioriteit
- RFC 5321 (SMTP), paragraaf 5.1 (MX en impliciete MX) en 4.5.4.1 (opnieuw proberen); RFC 7505 (null MX)
