You are viewing an old version of this page. View the current version.

Compare with Current View Page History

« Previous Version 19 Next »

SMTP

TDAT2004 Datakommunikasjon med nettverksprogrammering.

Oppgave nummer 10, omhandler SMTP for e-post i applikasjonslaget.

Deltakere er Olav Dahl Solstad og Tor Andreas Aasebø. 

Video 1: Video som viser bruk av SMTP.

1. Innledning

Simple Mail Transfer Protocol (SMTP) er en protokoll for sending av e-post, og ligger i undergruppen e-post i applikasjonslaget.

I 1982 ble SMTP definert av RFC 821, og i 2001 kom den nyere utgaven RFC 2821.

SMTP har vært standard for sending av e-post, men i 2008 kom Extended SMTP (definert i RFC 5321) som en videreutvikling av SMTP.


2. Ønsket funksjonalitet  

Formålet med SMTP er å kunne sende e-post på en effektiv og pålitelig måte. Henting av e-post blir overlatt til andre protokoller.

Under utviklingen av ARPANET og andre nettverk dukket det opp behov for å sende meldinger mellom datamaskiner på samme nettverk eller to forskjellige nettverk. Løsningen ble å utvikle standarder for sending av meldinger, og disse standardene ble grunnlaget for utviklingen av SMTP.

Først kunne man bare sende ASCII-tekst, men etter hvert kom behovet for å sende andre typer data som også måtte bli støttet i protokollen.


3. Virkemåte

Bilde 1: Viser SMTP i bruk


Initialisering

En SMTP-sesjon initieres når en klient etablerer en kobling til en server og serveren responderer med en velkomstmelding.

Når klienten har mottatt velkomstmeldingen vil klienten sende kommandoen “HELO” til serveren for å starte sesjonen.

De SMTP-systemene som bruker Extended SMTP kan også initialisere en sesjon ved bruk av kommandoen “EHLO” som gjør at serveren sender tilbake informasjon om hvilke utvidelser den støtter.

Når sesjonen er startet utføres tre kommandoer for å sende e-post. Kommandoene må utføres i riktig rekkefølge, ellers vil serveren gi feilmeldinger. Om for eksempel en RCPT kommando dukker opp uten en forutgående MAIL kommando returneres en “503 bad sequence of commands” feilmelding. 

MAIL

MAIL FROM:<reverse-path> [SP <mail-parameters> ] <CRLF>

Denne kommandoen sier at en ny e-post-transaksjon starter og alle data som ligger igjen på serveren fra tidligere e-poster må fjernes.

“<reverse-path>” er e-postadressen det sendes fra, og det er til den adressen feilmeldinger sendes. Dersom kommandoen blir akseptert returnerer serveren “250 OK”, ellers må det returneres en feilmelding.

Eksempel på kommandoen: MAIL FROM <smtptest@altibox.no>

RCPT

RCPT TO:<forward-path> [ SP <rcpt-parameters> ] <CRLF>

Her er “<forward-path>” adressen til e-postens destinasjon. Dersom den blir akseptert returnerer serveren “250 OK” og lagrer adressen.

Hvis serveren ikke gjenkjenner adressen vil den returnere en 550-feilmelding, sammen med en feilmelding av typen “no such user - “ og adressen.

Denne kommandoen kan gjentas så mange ganger man ønsker for å legge inn mange mottakere.

<forward-path> kan inneholde mer enn bare en enkelt adresse, den kan også inneholde en “source routing“ liste. I moderne SMTP klienter er dette derimot ikke lenger godkjent men servere må være forberedt på å støte på slike lister for så å ignorere de. I likhet med dette så kan servere avvise mail som er ment for andre tjenere eller systemer.

Eksempel på kommandoen: RCPT TO: <smtptest2@outlook.com>

DATA

DATA <CRLF>

Dersom serveren aksepterer kommandoen returneres “354 Intermediate Reply”.

Alle innkommende linjer blir lagret på serveren frem til man får indikatoren for at dataoverføringen er ferdig.

Indikatoren som brukes i SMTP er en linje som bare inneholder et punktum.

Når all data er lagret på serveren sendes “250 OK” og serveren prosesserer destinasjoner og data. Dersom e-posten blir akseptert sendes den og serveren returnerer “250 OK” til klienten.

Eksempel på kommandoen (legg merke til avslutningen med en linje som bare består av et punktum):

DATA

 Date: Thu, 21 May 2018 05:33:29 -0700

From: SmtpTest <smtptest@altibox.no>

Subject: Testing

To: smtptest2@outlook.com

Hei, dette er en test.

.

Avslutning 

Sesjonen avsluttes når klienten sender kommandoen “QUIT” og serveren responderer med en positiv kode.

Når e-posten er sendt er det vanlig at den blir transportert over port 25 mellom to og to SMTP-servere helt til den kommer frem til serveren som leverer ut e-post tilknyttet destinasjonsadressen.

Det er også mulig å transportere e-posten uten bruk av SMTP dersom den må gjennom servere som ikke bruker SMTP.


4. Referanser

https://tools.ietf.org/html/rfc821 (første versjon)

https://tools.ietf.org/html/rfc2821 (andre versjon)

https://tools.ietf.org/html/rfc5321 (ESMTP)

https://en.wikipedia.org/wiki/Simple_Mail_Transfer_Protocol 

http://www.serversmtp.com/sites/default/files/what%20is%20smtp.png



  • No labels