Gå direkte til indholdet

Cookieindstillinger

Vælg for hver type, hvilke cookies du tillader. Du kan altid ændre dit valg via Cookieindstillinger nederst på hver side. Privatlivspolitik

Nødvendige

Altid slået til

Nødvendige for at logge ind, gemme din kurv og huske dine valg. De er altid slået til.

Hvilke cookies?
  • weboke_sessie, weboke_klant, weboke_remember: din session og at forblive logget ind
  • weboke_basket: din kurv
  • wkBtwIncl: vise priser med eller uden moms
  • wok_cookies: dit cookievalg, 12 måneder

Måler, hvilken annonce der fører til et besøg eller en bestilling, så vi ikke betaler for annoncer, der ikke virker.

Hvilke cookies?
  • Google Ads via Google Tag Manager (_gcl_au, _gcl_aw), op til 90 dage
  • OpenAI Ads, annoncer i ChatGPT
  • wok_aff: hvilken partner der henviste dig til os (affiliateprogram), 60 dage

4,6

Land og sprog

Hvert land har sin egen side med landets priser og moms.

Se

SMTP: samtalen mellem mailservere

Modul 1: Sådan virker e-mail · Læsetid: 10 minutter

Læringsmål: Efter denne lektion kan du læse en SMTP-samtale, forklare hvad EHLO, MAIL FROM, RCPT TO og DATA gør, og ud fra en svarkode se om en fejl er midlertidig eller permanent.

Kernebegreber: SMTP (RFC 5321), session, EHLO/HELO, MAIL FROM, RCPT TO, DATA, QUIT, svarkode (2xx, 3xx, 4xx, 5xx), udvidet statuskode, udvidelser (STARTTLS, AUTH, SIZE), null MX

En samtale i almindelig tekst

SMTP er en meget gammel protokol (den første version er fra 1982), og derfor meget letlæselig. To servere sender hinanden linjer med tekst. Afsenderen (klienten) sender en kommando, modtageren (serveren) svarer med et tal på tre cifre og en lille forklaring. Du kan læse sådan en samtale direkte i en fejlmeddelelse eller logfil, og det er netop derfor det kan betale sig at forstå den.

Herunder ses en komplet samtale. S: er den modtagende server, C: den afsendende server. Mailen går fra anna@example.com til jan@example.net.

S: 220 mx1.mailprovider.example ESMTP ready
C: EHLO out.hosting.example
S: 250-mx1.mailprovider.example Hello out.hosting.example [192.0.2.25]
S: 250-SIZE 52428800
S: 250-8BITMIME
S: 250-STARTTLS
S: 250 SMTPUTF8
C: STARTTLS
S: 220 2.0.0 Ready to start TLS
   (herfra er forbindelsen krypteret; klienten sender EHLO igen)
C: EHLO out.hosting.example
S: 250 ...
C: MAIL FROM:<anna@example.com> SIZE=24310
S: 250 2.1.0 Ok
C: RCPT TO:<jan@example.net>
S: 250 2.1.5 Ok
C: DATA
S: 354 End data with <CR><LF>.<CR><LF>
C: From: Anna <anna@example.com>
C: To: Jan <jan@example.net>
C: Subject: Tilbud
C: Date: Sun, 8 Nov 2026 10:15:00 +0100
C: Message-ID: <a1b2c3@example.com>
C:
C: Hej Jan, her er tilbuddet.
C: .
S: 250 2.0.0 Ok: queued as 4F2A1B
C: QUIT
S: 221 2.0.0 Bye

Kommandoerne en for en

KommandoBetydningBemærk
(forbindelse)Serveren hilser med 220 og sit navn.Dette kaldes banneret. Svarer serveren straks 554, vil den slet ikke tale med din IP-adresse (ofte en blocklist).
EHLO navn"Hej, jeg er out.hosting.example." Serveren svarer med de udvidelser, den kender.Navnet bør være det rigtige navn på den afsendende server, helst identisk med dens PTR-record (lektion 5.1). HELO er den gamle variant uden udvidelser.
STARTTLS"Lad os kryptere fra nu af."Kun hvis serveren tilbyder det. Mellem servere er dette som regel frivilligt (lektion 5.4).
MAIL FROM:<adresse>Envelope senderen (envelope sender): fejlmeddelelser sendes hertil.Bliver senere til headeren Return-Path. SPF kontrollerer denne adresse. En tom afsender <> bruger servere selv til fejlmeddelelser, så en bounce aldrig udløser en ny bounce.
RCPT TO:<adresse>Modtageren. Kan gentages, en gang pr. modtager.Her bør serveren allerede sige om adressen findes. En 550 5.1.1 på dette tidspunkt er en pæn, hurtigt kendt fejl.
DATA"Nu kommer selve mailen." Serveren svarer 354.Derefter følger headere, en tom linje og teksten. En linje med kun et punktum afslutter.
QUITSamtalen afsluttes.

Det vigtigste at forstå: alt før DATA er envelope, alt efter DATA er indholdet. Det der står i MAIL FROM, og det der står i headeren From:, leveres hver for sig og behøver ikke være ens. Serveren leverer ud fra RCPT TO; To:-linjen i indholdet spiller ingen rolle for leveringen.

Svarkoderne

Det første ciffer i koden er det vigtigste:

Begynder medBetydningHvad gør afsenderen?
2Lykkedes.Videre til næste trin. 250 efter DATA betyder: serveren har modtaget mailen og er nu ansvarlig for den.
3Fortsæt, jeg venter på mere.Kun ved 354 efter DATA (og ved login).
4Midlertidig fejl: ikke nu, prøv senere.Mailen bliver i køen og bliver sendt igen senere.
5Permanent fejl: dette vil ikke lykkes.Afsenderen opgiver og sender en fejlmeddelelse (bounce) til envelope senderen.

Efter de tre cifre står der hos moderne servere en udvidet statuskode i formen class.subject.detail (RFC 3463), for eksempel 5.1.1. Det første ciffer er igen 2, 4 eller 5. Det andet ciffer fortæller hvad det handler om: 1 = adresse, 2 = postkasse, 3 = mailsystem, 4 = netværk og routing, 5 = protokol, 6 = indhold, 7 = sikkerhed og politik. Nogle du ofte ser:

550 5.1.1  The email account that you tried to reach does not exist
452 4.2.2  Mailbox full (midlertidig)
552 5.3.4  Message size exceeds fixed limit
451 4.7.1  Greylisted, please try again later
550 5.7.1  Message rejected (politik: spam, blocklist, DMARC)

I modul 6 lærer du at læse en komplet bounce, og du finder en tabel med de mest almindelige koder.

Hvorfor midlertidig og permanent er så vigtigt

En server der er i tvivl, svarer ofte med en 4xx. Et kendt eksempel er greylisting: en server der endnu ikke kender en afsender, siger første gang "prøv igen senere". En rigtig mailserver kommer tilbage efter et par minutter, mange spamprogrammer gør ikke. Store modtagere bruger også 4xx til at bremse tempoet, hvis de endnu ikke har tillid til en IP-adresse. For dig som afsender betyder det: forsinkelse, men ikke tab. Systemet løser det som regel selv.

En 5xx er anderledes. Her forsøger afsenderen ikke igen. Får du en 5xx tilbage, skal nogen ændre noget: adressen, indholdet eller indstillingerne for det afsendende domæne.

En faldgrube: nogle servere giver en 5xx, selvom problemet er midlertidigt (for eksempel ved en fuld postkasse 552 5.2.2), og andre giver en 4xx for noget der aldrig vil lykkes. Læs derfor altid teksten efter koden, ikke kun tallet.

Hvem er ansvarlig?

Efter 250 på punktummet efter DATA ligger ansvaret hos den modtagende server. Lykkes det den ikke bagefter at lægge mailen i postkassen, skal den selv sende en fejlmeddelelse tilbage. Det er kilden til et besværligt fænomen: backscatter. En server der først modtager alt og først senere opdager at adressen ikke findes, sender en bounce til envelope senderen. Var den forfalsket af en spammer, får en uskyldig tredjepart bouncen. Derfor bør servere allerede ved RCPT TO afvise det der ikke kan lade sig gøre (se også catch all i lektion 3.3).

I praksis: at se SMTP i dit eget miljø

En almindelig bruger ser sjældent hele SMTP-samtalen, men wel i stykker:

  • i en bounce står den sidste linje af samtalen, for eksempel Remote-MTA: mx1.mailprovider.example og Diagnostic-Code: smtp; 550 5.1.1 ...;
  • i headerne for en modtaget mail står der pr. server en Received:-linje med EHLO-navnet og IP-adressen (lektion 1.5);
  • i et panel med maillogfil, som E-mailsporing i DirectAdmin hos WebOké, ser du for hver besked svaret fra den modtagende server. Hos andre udbydere hedder noget tilsvarende for eksempel besked-sporing eller mail log, og indholdet er sammenligneligt.

Du behøver altså ikke selv forbinde til en mailserver for at kunne læse dette. Hvis du vil prøve det: med openssl s_client -starttls smtp -connect server:25 kan du føre samtalen manuelt, men mange private internetudbydere blokerer udgående trafik på port 25 (lektion 1.4).

Opsummering

  • SMTP er en letlæselig samtale: EHLO, (STARTTLS), MAIL FROM, RCPT TO, DATA, QUIT.
  • Alt før DATA er envelope (levering og fejlmeddelelser), alt derefter er indholdet med de headere du ser.
  • 2xx = lykkedes, 4xx = midlertidig (prøves igen senere), 5xx = permanent (bounce).
  • Den udvidede kode X.Y.Z fortæller hvad det handler om; X.1 adresse, X.2 postkasse, X.7 politik og sikkerhed.
  • Læs altid teksten efter koden; servere er ikke altid konsekvente.

Quiz

1. Hvilken kommando indeholder adressen, som en fejlmeddelelse sendes til?



2. En server svarer 451 4.7.1 Greylisted, please try again later. Hvad gør en god afsenderserver?



3. I hvilken del af samtalen står headeren Subject:?



4. Hvad fortæller det andet ciffer i 550 5.1.1?



5. Hvorfor er det bedre at en server afviser en ikke-eksisterende adresse allerede ved RCPT TO, frem for først at modtage mailen?



Opgave

Opgave Z1.2: Et domæne der ikke modtager mail. Slå MX-records op for example.com. Skriv hvad du finder, og vælg hvad en afsenderserver gør med mail til info@example.com: (a) leverer til serveren med prioritet 0, (b) prøver A-recorden, (c) opgiver straks, eller (d) prøver igen senere. Programmet slår MX-recorden op live og kontrollerer dit svar.

Opgave Z1.2: Et domæne der ikke modtager mail

Slå MX-recorderne op for example.com og vælg hvad en afsenderserver gør med mail til info@example.com.



Det, du udfylder, og hvad vi finder, gemmer vi ikke. Din browser husker dine svar, og om du har bestået opgaven. Er du logget ind, gemmer vi kun, at du (næsten) bestod opgaven, i Mine kurser; der kan du også slette det.

Læs mere

Trinene i disse artikler gælder for WebOkés paneler; hos andre udbydere fungerer det tilsvarende.

Et øjeblik…

Opsæt dine domæner

Angiv for hvert domæne navneserverne, tilknytningen til din hosting, og hvem der bliver ejer.

Indlæser dine domæner…