SMTP-server – SMTP-protokollen

Elektronisk post har eksisteret i en eller anden form helt tilbage fra 1960’erne. Folk efterlod beskeder til hinanden ved hjælp af en række forskellige metoder på mainframe-computere, men det var først i august 1982, da Information Sciences Institute offentliggjorde The Simple Mail Transfer Protocol (SMTP; RFC 821), at der blev foreslået en standardiseret metode til afsendelse og modtagelse af e-mail.

SMTP blev hurtigt populært på ARPANET, hvor det afløste ældre og mere komplicerede metoder til at overføre e-post fra den ene mainframe til den anden, og blev første gang understøttet i slutningen af 1982 af den tidlige Mail Transfer Agent Sendmail i BSD 4.1c.
Protokollen er siden da blevet revideret og udvidet med jævne mellemrum, men den grundlæggende metode til at sende e-mails er stort set forblevet uændret.

Protokollen er en tekstbaseret protokol, der oprindeligt ikke understøttede overførsel af binære data. Det faktum, at den var tekstbaseret, gjorde imidlertid protokollen nem at implementere og vedligeholde. MIME (Multipurpose Internet Mail Extensions) blev populært i slutningen af 80’erne til kodning og afsendelse af binære data via SMTP. I dag er SMTP den dominerende protokol til afsendelse og modtagelse af e-mail på internettet, og indgående kendskab til denne protokol er afgørende for enhver netværksadministrator.

Da SMTP er tekstbaseret, er det betydeligt nemmere at lære protokollen end mange andre, og det eneste, der kræves for at kommunikere direkte med en SMTP-server, er et program, der kan sende ASCII-data via TCP/IP-port 25, f.eks. Telnet.

E-mails sendes via SMTP i en transaktion, hvilket vil sige, at hvis afsendelsen af meddelelsen ikke gennemføres fuldt ud og uden at generere en fejl, kasseres meddelelsen. RFC 821 beskriver en transaktion som bestående af tre faser: angivelse af en afsender, angivelse af en eller flere modtagere og derefter selve afsendelsen af meddelelsen. Det er dog nemmere at opfatte en SMTP-transaktion som bestående af 5 faser:

  • Håndtryk
  • Send svaradresse
  • Send til modtagere
  • Send beskeddata
  • Afslut transaktion

Håndtryk

Når der oprettes forbindelse til en SMTP-server på port 25, skal afsenderen af en besked vente på, at modtageren accepterer forbindelsen og identificerer sig i følgende format:

220 [domæne] [Serviceoplysninger]
Eksempel: 220 example.com Klar til brug

Afsenderen skal derefter identificere sig over for modtageren ved hjælp af HELO-kommandoen.

HELO [domæne]
Eksempel: HELO example.com

Mailserverne forventer, at hver enkelt server identificerer sig ved hjælp af et domænenavn, som kan bruges til at verificere serverens identitet ved at foretage en MX-opslag. Den modtagende server må dog ikke afvise forbindelsen på dette tidspunkt, selvom afsenderens identitet ikke kan verificeres, og skal derfor svare med:

250 [Besked]
Eksempel: 250 example.com Hej bob@example.com

Svarkode 250 er det generelle ‘OK’-svar fra en SMTP-server, der angiver, at den sidste handling er gennemført uden problemer.

Afsenderadresse:

Når de to servere har gennemført deres håndtryk, er SMTP-transaktionen gået i gang, og vi kan begynde at sende kommandoer til serveren. Hvis du vil se, hvilke kommandoer serveren understøtter, skal du sende kommandoen HELP, hvorefter SMTP-serveren bør svare med en besked, der angiver, hvilke kommandoer der understøttes.

For at vi kan sende en besked til en bruger på denne server, skal vi dog først angive en svaradresse. Svaradressen skal angives først, så eventuelle fejl under SMTP-transaktionen kan rapporteres til denne adresse. Til dette bruger vi kommandoen ‘MAIL FROM:’:

MAIL FRA:
Eksempel: MAIL FROM:

Bemærk tegnene »mindre end« og »større end«. Ifølge RFC 821 skal disse indeholde selve e-mail-adressen. Hvis adressen accepteres, returnerer SMTP et 250 OK-svar.

Send til modtagere

Når vi har angivet en svaradresse, giver SMTP os mulighed for at identificere modtagerne af meddelelsen. Til dette bruger vi kommandoen ‘RCPT TO:’:

RCPT TIL:
Eksempel: RCPT TIL:

For at angive flere modtagere skal du blot gentage denne kommando for hver modtager. Hvis modtageren accepterer e-mails til denne bruger og kan modtage beskeden på nuværende tidspunkt, bør den svare med et 250 OK-svar. Hvis der imidlertid ikke accepteres e-post for denne bruger, vil der blive sendt et 550-fejlsvar eller den relevante fejlkode. Modtager vi et 250 OK-svar, kan vi fortsætte med at sende beskeddataene.

Send beskeddata

Det er ret nemt at sende data via SMTP, men meddelelsesformaterne kan være ret komplicerede, især når der sendes binære vedhæftede filer. For at begynde at sende data skal vi indtaste kommandoen ‘DATA’, hvorefter serveren skal svare med 354 Intermediate reply. F.eks.:

354 Indtast en besked, der slutter med “.” på en linje for sig selv

Den enkleste besked, vi kan sende, er en almindelig tekstbesked, som ikke kræver, at vi bruger MIME-formatet med flere dele. Alle beskeder, uanset om de er i almindelig tekst eller ej, afsluttes ved at sende en linje, der udelukkende indeholder et punktum. Inden en besked sendes, kan du desuden sende nogle header-oplysninger, såsom Dato, Emne, Til, Cc og Fra.

Eksempel:

DATA
354 Indtast en besked, der slutter med “.” på en linje for sig selv
Emne: Dette er emnelinjen i den planlagte SMS-besked
Og dette er selve teksten i almindelig tekstbeskeden.

Hvis anmodningen accepteres, returnerer SMTP-serveren et 250 OK-svar eller en fejlkode, hvis transaktionen er mislykket eller ufuldstændig. Bemærk punktummet i slutningen af linjen i meddelelsens brødtekst; det er kun, når der findes et punktum alene på en linje, at serveren holder op med at lytte efter data. Hvis afsenderens server sender en besked, der vil medføre, at datasessionen lukkes før tid – fordi beskeden indeholder et enkelt punktum på en linje – bør den tilføje et ekstra punktum til linjen.

Afslutning af transaktionen

Indtil dette tidspunkt betragtes alt, hvad der er sendt til den modtagende SMTP-server, som midlertidigt. Hvis kommandoen ‘QUIT’ ikke sendes, før forbindelsen lukkes, vil destinationsserveren blot slette alle meddelelsesdata, der er blevet gemt. Oprindeligt blev den brugt som en elegant måde at lukke en forbindelse på, men i dag bruges den ofte til at angive, at en transaktion er afsluttet, idet mange mailservere venter på QUIT-kommandoen, før de sætter mailen i kø, så Message Transfer Agent kan videresende den. Når du har sendt QUIT-kommandoen, bør destinationsserveren sende et 221-svar for at bekræfte, at transaktionen er afsluttet, og at forbindelsen lukkes.

Hvis du er ved at sætte dig ind i SMTP-protokollen, anbefales det, at du læser RFC 821, 2476 og 2554. Du bør huske på – især når du læser RFC 821 – at e-mail-serverne har ændret sig markant siden 1982, blandt andet som følge af misbrug fra spammere.

Skriv et svar

Din e-mailadresse vil ikke blive publiceret. Krævede felter er markeret med *

Alle ved, at en pålidelig SMTP-server er nøglen til at få din e-mail leveret korrekt. Det er også velkendt, at INGEN længere tilbyder SMTP uden autentificering eller til åbent relay. MEN DU KAN STADIG FÅ EN SMTP-SERVER AF HØJ KVALITET GRATIS TIL DIT BRUG!

Klik her for at få din gratis SMTP-server