Simple Mail Transfer Protocol
Internet- en netwerkprotocollen | |
---|---|
Toepassingslaag | DNS FTP HTTP HTTPS IMAP IRC NNTP POP3 RTP SIP SMTP SNMP SSH SSL Telnet UUCP |
Transportlaag | DCCP SCTP TCP UDP |
Netwerklaag | ARP ICMP IGMP IPv4 IPv6 |
Datalinklaag | ATM Ethernet FDDI PPP Token ring Wi-Fi |
volgens het TCP/IP-model |
Simple Mail Transfer Protocol (SMTP) is de de facto-standaard voor het versturen van e-mail over het Internet.
SMTP is een relatief simpel, tekstgebaseerd protocol: eerst wordt één of meerdere ontvangers van een e-mail gegeven, en daarna de tekst van het bericht. Het is makkelijk om een SMTP-server te testen door middel van het telnet-programma. SMTP gebruikt TCP-poort 25.
Om de SMTP-server voor een domein te bepalen wordt het MX-record (Mail eXchange) van de DNS gebruikt.
SMTP begon wereldwijd gebruikt te worden in de vroege jaren 1980. Toen was het een aanvulling voor UUCP. UUCP was geschikter om e-mail te versturen tussen computers die niet altijd verbonden waren. SMTP daarentegen is ontwikkeld voor als zowel de ontvanger als de zender altijd verbonden zijn met het netwerk.
Sendmail was een van de eerste (zoniet de eerste) mail transfer agent-programma's die SMTP gebruikten.
Sinds 2001 bestaan ten minste 50 verschillende programma's die SMTP ondersteunen als client (zender van berichten) of server (ontvanger van berichten). Enkele populaire SMTP-serverprogramma's zijn Postfix (van IBM), qmail (van Daniel J. Bernstein), GroupWise (van Novell) en Microsoft Exchange Server.
Omdat SMTP enkel als een puur ASCII-tekstprotocol ontwikkeld was kan het niet werken met binaire (niet-tekst) bestanden (bijlagen). Standaarden zoals MIME werden ontwikkeld om binaire bestanden om te vormen zodat ze verstuurd kunnen worden over SMTP. De hedendaagse SMTP-servers ondersteunen de 8-bit MIME-extensie, wat het versturen van binaire bestanden bijna net zo gemakkelijk maakt als gewone tekst.
SMTP dient niet om berichten van een server op te halen, enkel om berichten te versturen. Voor het ophalen van e-mail bestaat er POP3 en IMAP.
[bewerk] Spam en de veiligheid van SMTP
Eén van de beperkingen van het originele SMTP is dat er geen mogelijkheid is om na te gaan of de zender wel echt is wie hij beweert te zijn. Daarom werd de SMTP-AUTH-extensie ontwikkeld.
Deze beperking wordt uitgebuit bij het versturen van spam waarbij een fictieve afzender bij een e-mail kan worden opgegeven. Hierdoor is spam nog steeds een groot probleem. SMTP grondig veranderen of vervangen door een compleet nieuw protocol wordt niet mogelijk geacht omdat het zo veelvuldig verspreid en geïmplementeerd is.
[bewerk] Voorbeeld SMTP-sessie
De hieronder weergegeven sessie is een voorbeeld van SMTP. 'C' staat voor Client, en 'S' voor Server. Een SMTP-server draait normaal gesproken op poort 25. Via telnet kan hiermee verbonden worden:
telnet smtp.voorbeeld.nl 25
Er wordt nu een SMTP-verbinding geopend met de server op host smtp.voorbeeld.nl:
S: 220 smtp.voorbeeld.nl Example SMTP Service
De server geeft een 'greeting' reply met code 220. De informatie die na de code wordt weergegeven is serverspecifiek. Het kán zijn dat een server een 554-code terugstuurt. Dat betekent dat de server de verbinding niet accepteert, maar het is niet verplicht om die code te sturen.
De client moet nu reageren met het HELO-commando:
C: HELO smtp.voorbeeld.nl S: 250 Hello
De client kan ook het EHLO-commando sturen, maar dan stuurt de server een lijst met extensies die hij ondersteunt. Nu begint de SMTP-mailtransactie. De client begint met het MAIL-commando. Hier wordt de server verteld wat het e-mailadres van de afzender is:
C: MAIL FROM: <afzender@afzender.nl> S: 250 afzender@afzender.nl... Sender OK.
Daarna wordt het e-mailadres van de ontvanger opgegeven:
C: RCPT TO: <ontvanger@ontvanger.nl> S: 250 ontvanger@ontvanger.nl... Recipient OK.
De client reageert nu met het DATA-commando. Er kan nu data worden opgegeven. De client sluit af met een punt ('.') op een nieuwe regel:
C: DATA S: 354 Please start mail input, and finish with a new line and a '.' followed by a newline. C: Subject: Data test C: Data...data...data... C: . S: 250 Mail queued for delivery.
De mail wordt nu verstuurd. De client moet nu de sessie beëindigen door het QUIT-commando te sturen:
C: QUIT S: 221 Goodbye.
[bewerk] RFC's
- RFC 2821 - The Simple Mail Transfer Protocol, which recently (2001) obsoleted RFC 821
- RFC 2822 - Internet (i.e. e-mail) Message Format, which obsoletes RFC 822
- RFC 1869 - Defines the capability for SMTP service extensions, creating Extended SMTP, or ESMTP
- RFC 1891 - Delivery Status Notification (DSN) extension to SMTP