SMTP
Från Rilpedia
Protokollstack för IP-nätverk | |
IP-skikt | Protokoll |
---|---|
5.Applikation | BitTorrent, DHCP, DNS, FTP, HTTP, IMAP, IRC, NNTP, POP3, SIP, SMTP, SNMP, SSH, Telnet,TLS, SSL , TFTP, … |
4.Transport | DCCP, SCTP, TCP, RTP, UDP, IL, RUDP, … |
3.Nätverk | ARP, ICMP, IGMP, IP (IPv4, IPv6),RIP … |
2.Länk | ATM, Ethernet, FDDI, ISDN, MPLS, Token Ring, PPP, SLIP, Wi-Fi, … |
1.Fysiska | ISDN, RS232, IrDA, Bluetooth, xDSL, … |
Simple Mail Transfer Protocol (SMTP) är det vanligaste kommunikationsprotokollet för att leverera elektronisk post. Den nuvarande specifikationen av protokollet skrevs av Jonathan B. Postel 1982, men protokollet har sedan dess fått utökningar som går utanpå den ursprungliga specifikationen.
Kommunikationen sker via TCP, normalt på port 25. På senare år har även port 587 börjat användas för att möjliggöra anpassningar för dagens verklighet där SMTP numera i stor utsträckning används av klientprogramvara som körs på en persondator. Under en period användes även port 465 för SMTPS, SMTP tunnlad genom SSL för att ge en krypterad förbindelse, men detta är förlegat och har ersatts av STARTTLS över valfri SMTP-förbindelse.
SMTP är ett väldigt enkelt protokoll och kan i ursprungsutförande bara överföra 7-bitars tecken. Det innebär att svenska tecken som å,ä och ö eller filer, sk bilagor, inte kan överföras utan vidare. Därför används olika typer av kodning, t.ex. quoted printable för att göra om 8-bitars tecken till 7-bitars vid överföringen.
E-post som består av flera delar sätts ofta samman enligt MIME-standarden.
Innehåll |
Hur avgörs vart ett meddelande ska skickas?
För att avgöra vilken SMTP-server som ska kontaktas för att leverera ett visst meddelande används DNS för att hämta information om mottagaradressens domän. DNS-specifikationen definierar en speciell pekartyp (record type) för detta ändamål, nämligen MX (mail exchanger) som talar om namnet på den eller de SMTP-servrar som accepterar meddelanden för en viss domän.
Tillsammans med varje datornamn finns även ett heltal beskriver om i vilken ordning klienter ska försöka kontakta servrarna. Ett lägre tal innebär högre prioritet, och om två datorer har givits samma prioritet så ska slumpen avgöra vilken som ska kontaktas. Detta sätt att rangordna servrar gör det möjligt att sätta upp backupservrar som kan acceptera meddelanden när huvudservern är otillgänglig, och genom att sätta samma prioritet för flera datorer får man en enkel form av lastbalansering. Låt oss ta ett fiktivt exempel. Om ett meddelande ska skickas till nisse@example.com så görs en DNS-uppslagning för att få reda på eventuella MX-pekare för example.com:
example.com MX 0 mail1.example.com. example.com MX 0 mail2.example.com. example.com MX 10 mail3.example.com.
Här finns det alltså tre MX-pekare för example.com. Dessa talar om att mail1.example.com eller mail2.example.com kontaktas i första hand, och om detta försök misslyckas ska mail3.example.com kontaktas.
En domän måste inte ha någon MX-pekare. Om en sådan saknas används i andra hand A-pekaren, dvs. den pekartyp som normalt används för att omvandla datornamn till IP-adresser.
Numera används systemet med backupservrar mer sparsamt än tidigare. Dels för att nätet blivit mer tillförlitligt, men även för att många som skickar ut spam utnyttjar det faktum att backupservrar i allmänhet har svagare skydd mot spam än huvudservern.
Exempelkommunikation
SMTP är textbaserat i likhet med många applikationsprotokoll på Internet. Det går alltså att med ett program som inte känner protokollet ta kontakt med en värddator och själv skriva in de kommandon som behövs. Ett testmeddelande kan till exempel skickas som följer. Den första raden är telnet-kommandot givet i Unix, nästa tre rader information från telnet-programmet, liksom den sista, raderna som börjar med tresiffriga statuskoder är serverns svar:
$ telnet smtp.example.com smtp Trying 192.168.1.5... Connected to smtp.example.com. Escape character is '^]'. 220 smtp.example.com ESMTP Sendmail ... HELO minmaskin.example.org 250 smtp.example.org Hello minmaskin.example.org [192.168.1.2], pleased to meet you MAIL FROM: <user@example.org> 250 2.1.0 <user@example.org>... Sender ok RCPT TO: <abc@example.com> 250 2.1.5 <abc@example.com>... Recipient ok DATA 354 Enter mail, end with "." on a line by itself From: user@example.org To: abc@example.com Subject: test Test test test . 250 2.0.0 h1FEF2jR067645 Message accepted for delivery QUIT 221 2.0.0 smtp.example.com closing connection Connection closed by foreign host.
Statuskoderna anger förloppet med tanke på program som tar kontakt, texterna som följer är avsedda för personer, antingen vid test som ovan eller då sessionen bifogas en felrapport. Den första siffran i koden är avsedd att ge tillräcklig information för att en enkel klient skall kunna avgöra huruvida den skall fortsätta, försöka på nytt senare eller ge upp helt.
Programvara
På serversidan är följande programvaror vanliga:
- På Unix-plattformen:
- På Microsoft Windows-plattformen:
Se även
Externa länkar
- RFC821 - Protokollspecifikationen för SMTP.
- RFC2821 - Protokollspecifikationen för SMTP. En uppdatering av RFC821 som ännu inte antagits som standard.
- RFC822 - Specifikation av formatet för Internet-meddelanden. Beskriver bl.a. tillåtna format för epostadresser samt standardiserade fält i meddelandehuvudet.
- RFC2822 - Specifikation av formatet för Internet-meddelanden. En uppdatering av RFC822 som ännu inte antagits som standard.
- RFC1870 - Specifikation av den SMTP-utökning som möjliggör att klienter anger storleken på ett meddelanden innan det skickas.
- RFC3207 - Specifikation av den SMTP-utökning som tillåter att SMTP-trafik autentiseras och krypteras via TLS.
- RFC2920 - Specifikation av den SMTP-utökning som tillåter pipelining av kommandon, dvs. att klienten skickar flera kommandon på en gång.
- RFC2476 - Specifikation för Message Submission (TCP port 587)