Tiivistelmä
Protokollan pohjautuen on toteutettu useampia sovelluksia, tunnetuin näistä lienee Sendmail.
JohdantoSMTP (Simple Mail Transfer Protocol) on RFC 821:ssa määritelty protokolla [5], jonka tehtävä on määritellä sähköpostin luotettava ja tehokas kulku verkossa. Protokolla on alustariippumaton, ja vaatii ainoastaan siirtotien tiedolle. Tämä onkin osoittautunut protokollan suureksi eduksi. Internetissä kulkevat viestit kohtaavat matkalla useampia erityyppisiä verkon kuljetuspalveluita. Monesta sähköpostijärjestelmästä poiketen SMTP on ns. end-to-end-ratkaisu. Eli, lähettäjän palvelin ottaa yhteyttä suoraan vastaanottajan palvelimeen, ja säilyttää lähetetyn viestin, kunnes viesti on vastaanotettu.[2]
SMTP:palvelin voi myöskin käyttää matkalla olevia muita SMTP:palvelimia välittääkseen viestiä. Tämä vaatii kuitenkin välillä olevalta SMTP:palvelimelta tiedon lopullisesta vastaanottajan postilaatikon osoitteesta ja siitä vastaavasta palvelimesta.
SMTP:stä puhuttaessa viitataan usein moneen muuhunkin asiaan esim. sen sähköpostipalvelimiin kuten Sendmail, tai sen rinnakkaisiin protokolliin kuten RFC 822 tai RFC 1049, jossa on mm. määritelty viestin sisällön muodot.[4]
Kahden TCP/IP:palvelimen sähköpostiliikenteen sisällön määrittelevän protokollan virallinen nimi on MAIL (STD 10/RFC 821) [2].
2 SMTP:n toiminta
Lähetyspyynnön perusteella luodaan kaksisuuntainen siirtotie vastaanottavalle palvelimelle. Yhteys on suora, jos palvelimet käyttävät samanlaisia kuljetus palveluita, muussa tapauksessa yhteys joudutaan luomaan välillä olevan välittäjäpalvelimen kautta. Kun siirtoyhteys on vahvistettu lähettäjä lähettää MAIL-pyynnön, jos vastaanottaja suostuu pyyntöön vastataan OK-kuittauksella. MAIL-pyynnön argumenttina on aina lähettäjän osoite, tätä osoitetta tarvitaan jos muiden palvelimien kautta välitettyä viestiä ei jostain syystä voida reitittää perille. Tämän jälkeen seuraa RCPT-pyyntö, jossa on määritelty vastaanottajan osoite. Vastaanottajalla on nyt mahdollisuus, joko hyväksyä tai hylätä kyseinen osoite. Hylkäys ei kuitenkaan johda koko yhteyden hylkäämiseen, vaan koskee kyseistä vastaanottajaa. Vastaanottajia voi olla useampiakin, jos vastaanottajia on useampia ja postilaatikot ovat samalla palvelimella lähetetään vain yksi kopio viestistä tälle palvelimelle. Kun osoitteista on sovittu ollaankin valmiita viestin siirtoon. [5]
SMTP vastaa standardin mukaan palvelimen portissa nro. 25. Esim. telnet yhteyden SMTP:palvelimeen saa komennolla telnet palvelin 25. Käyttämällä SMTP:n syntaksia voi yhteyden luonnin jälkeen lähettää postia itse simuloimalla lähettäjäpalvelinta.
2.2 SMTP:n syntaksi
SMTP:n komentojen syntaksi perustuu ASCII-merkistöön, isoille ja pienille kirjaimille ei tehdä eroa. Tulee kuitenkin muistaa, että pienten ja isojen kirjainten erolla voi olla vaikutusta esim. käyttäjätunnusten kohdalla, tämä kuitenkin riippuu vastaanottavan palvelimen konfiguroinnista.
Komennot voidaan luokitella kolmeen eri vaiheeseen: MAIL, RCPT ja itse viesti: DATA. Näillä kolmella peruskomennolla voidaankin hoitaa koko lähetys.
Esim. ensimmäisen vaiheen MAIL-pyyntö on muotoa:
MAIL <SP> FROM:<lahettajan osoite> <CRLF> (SP=space, CRLF=carriage return) [2]
Onnistunut mail-proseduuri kuitataan 250 OK-sanomalla, eri virhetilanteille on omat koodinsa esim. jos vastaanottajan osoitetta ei löydy vastaanottavan palvelimen rekistereistä...[3,5]
2.3 FORWARD-välitys
Joissakin tapauksissa palvelin ei tunnista vastaanottajaa koska osoite on väärä, mutta tietää oikean osoiteen, tässä tapauksessa palvelin voi lähettää korjauskuittauksen lähettäjälle sisällyttäen viestiin oikean osoitteen:
251 User not local; will forward to <"uusi osoite">Koodi 251 on tämän tyyppisessä tapauksessa käytettävä merkintä. Jos vastaanottaja tämän lisäksi kieltäytyy vastaanottamaan viestejä lähetysosoitteesta voidaan viestit uudelleenohjata:551 User not local; please try <"uusi osoite">[3,5]2.4 VRFY ja EXPN
Täysveriseltä SMTP-palvelimelta pitäisi myös olla mahdollisuus tiedustella mahdollisista käyttäjistä tai vastaanottajista ja lisätä postituslistaan lisää vastaanottajia. Nämä ovat toteutettu VRFY ja EXPN komennoilla: VRFY-komennosta ja EXPN-komennosta palautetaan tieto kyseisen vastaanottajan tilanteesta. Esim. Jos vastaajaa ei löydy, kuittaus voisi olla:"553 User ambiguous" [5].
2.5 Muita toimintoija
Protokollaan liitty myös yhteyttä luodessa ns. HELO-kättely [2]. Siinä varmistetaan, että ollaan saatu yhteys kuviteltuun palvelimeen, protokollalle ei siis voi väärentää lähettäjän palvelimen domainia kertomalla väärää tietoa, tämä voidaan tietysti kiertää joidenkin toteutusten kohdalla. Varma tunnistaminen on verkossa vaikeaa.
Yleensä vastaanottajan osoitteesta erotetaan reitti, jolla sinne päästään. Tämä ns. forward-path sisältää osoitteen lisäksi reittitietoa.Tämän tiedon vastakohta ns. reverse-path toimii vastakkaisesti niin, että siirryttäessä palvelimelta toiselle reittitiedot siirtyvät forward-polusta reverse-polkuun.
Palvelimet voivat myös "vaihtaa" rooleja TURN-komennolla, jolloin vastaanottajasta tulee lähettäjä. Palvelimet voivat kuitenkin haluttaessa estää tämäntyyppisen toiminnan.
2.6 Rajoituksista
SMTP:n eri argumenteilla ja viestin sisällöllä on tiettyjä rajoitteita, jotka tulisi muistaa: Käyttäjänimellä ja domain-nimessä saa esiintyä enintään 64 merkkiä. Suurin rivin pituus on 1000 merkkiä. Suurin määrä samaalla kertaa bufferoituja vastaanottajia on 100. Yhden SMTP-komentorivin maksimipituus on itse komennon ja ctrl-merkin lisäksi 512 merkkiä. Polun (path) maksimipituus on 256 merkkiä.
Rajoitusten ylittämisestä tulee virheilmoitukset 500 (liian pitkä rivi), 501(liian pitkä polku) ja 552 (liiaan monta vastaanottajaa tai liian pitkä viesti).[5]
2.7 Headerit
Headerit sisältävät tietoa sähköpostista ja ne ovat esiteltyinä sähköpostin ensimmäisillä riveillä. Yleensä käyttäjän ei tarvitse välittää headertietueista, SMTP huolehtii niistä. Useimmiten kaikkia headereita ei näytetä lukijalle, kuitenkin jokaisella sähköpostiviestillä on headerit. Jos on epävarma viestin oikeasta alkuperästä voi olla syytä tutkailla headereita varmuudeksi. RFC 822 määrittelee tarkasti nämä viestin ns. headerit. [4] Formaatti jolla headerit on määritelty on seuraava:
Kentän nimi: Kentän arvo
Käytetyimpiä kenttiä ovat:
esim. To: joku.jossain@suomessa.fito
Kenttien lisäksi voidaan sisällyttää headereihin tietoa ihmisille, johon protokolla ei ota kantaa. Tällaisessa tapauksissa kentän todellinen arvo laitetaan sulkujen sisälle.
Viestin vastaanottaja.
cc
"Carbon-copy": viestin toinen vastaanottaja (kopion saaja).
from
Viestin lähettäjä.
reply-to
Mihin postiluukkuun vastaus on lähetettävä. Viestin lähettäjä voi lisätä tämän.
return-path
Täydellinen paluu lähettäjälle. Tämän lisää viestin kuljetusjärjestelmä.
subject:
Viestin "otsikko", yleensä viestin lähettäjän lisäämä.
Esim. "Matti Jokamies" <joku.jossain@suomessa.fi >. [2]3 Sendmail
SMTP:n sovelluksia on kehittynyt ajan mittaan monia: Näistä tunnetuin ja käytetyin on Sendmail. Sendmailin on yhteensopiva perinteisten UNIX-tyyppisten palvelinten kanssa, sitä jaetaan myös freewarena. Sendmailia on kehitetty monen ohjelmoijan ja käyttäjän avuin. Sen suosio perustuukin juuri siihen, että se on ympäristönsä kasvatti, käytännössä hyväksi todettu. Tulevaisuuden näkymiä parantaa myös se, että sitä jaetaan esim. Microsoftin markkinaosuuksia ansiokkaasti syövän Linux freeware-käyttöjärjestelmän paketissa. [1]
Monet sendmailsovellukset pohjautuvat myös STMP:n laajennukseen ESMTP:hen. Sitä voi luokitella jonkiasteiseksi SMTP:n laajennukseksi, mutta se ei käsitä mittän uutta järisyttävää.
3.2 Sendmailin ominaisuuksia
Sendmailin ominaisuudet ovat kohtalaisen tunnettuja. Sendmailin konfiguraatiotiedostoissa voidaan uudelleenmääritellä vasttaanottajia,domaineja tai luoda ns. aliaksia, joidenka avulla voidaan toteuttaa helpommin muistettavia osoitteita käyttäjätunnuksille. Ylläpitäjä konfiguroi näitä teksti-tiedostoja joko käsin tai esim. Windows-ympäristössä käyttöliittymän kautta. Käsin päivitettävyys ei tuota vaikeuksia, syntaksi on helppoa ja nopesti hallittavissa.
Konfiguroimalla Sendmailtiedostot hyvin voidaan hallita esim. väärin osoitetut sähköpostit tai ohjata uusien domainejen sähköposteja vanhoihin osoitteisiin. Esim. jos yrityksellä on uusi domaini, mutta ei ole vielä luotu käyttäjätunnuksia tämän domainin alla toimivaan koneeseen voidaan uudet domain-päätteet vaihtaa helposti vanhoiksi. Lopputulos on, että lähettäjä luulee lähettävänsä sähköpostia osoitteseen käyttäjä@uusi.fi, mutta oikeasti postit ohjataan osoitteeseen käyttäjä@vanha.fi. Tämäntyyppinen konfigurointi tuo joustavuutta ja mahdollistaa kyseisten domainejen kaikkien sähköpostien helpon halinnan.
Sendmail tukee myös .forward-tiedostoa, jonka avulla käyttäjä voi uudelleenohjata omat sähköpostinsa muualle. Hylätyt kirjeet tallennetaan dead.letter nimisiin tiedostoihin. Sendmailissa voidaan määritellä pisin aika, joka voidaan käyttää viestin lähettämiseen, yleensä tämä aika on asetettu 5 päiväksi.[3]
4 DNS ja SMTP
DNS (Domain Name System) on SMTP:sovellusten apuna lähetettäessä postia. DNS sisältää tietoa internetin palvelinten osotteista. DNS:n maileihin liittyvän protokollan virallinen nimi on DNS-MX. Lähetyspyynnössä sovellus keskustelee paikallisen nimipalvelimen kanssa. MX tietue viittaa nimipalvelussa domainin sähköpostipalvelimeen. MX:tiedon yhteydessä annetaan myös prioriteetti. Tämä onkin tärkeää, sillä jos lähettäjä sijaitsee samalla palvelimella voi syntyä mailli-silmukoita. Sääntönä on, että maili lähetetään eteenpäin vain selaiselle palvelimelle, jolla on alempi prioriteettiluku, kuin omalla palvelimella.
Silmukoita voi myös syntyä, jos nimipalvelinten tiedot eivät ole ajantasalla. Tällaisia tapauksia syntyy yleensä nimipalveluiden päivitysten yhteydessä. Kun eripaikoissa olevien palvelinten tiedot eivät vastaa toisiaan. Tällaisia tapauksia voidaan välttää, jos MX-tietueen päivitys tehdään samalla tietueen viittaamiin palvelimiinn tyhjentämällä niiden MX:taulujen tallennukset.
Eli, jos esim. halutaan lähettä sähköpostia odoitteeseen iiro.teekkari@hut.fi, joutuu lähettäjä tekemään kyselyn hut.fi:domainin nimipalvelusta vastaavaan palvelimeen ja kysymään MX-tietuetta. MX-kenttä kertoo sähköpostipalvelimen, jossa toivon mukaan voidaan selvittää, kuka tämä iiro.teekkari on.
5 POP ja IMAP
Usein puhutaan SMTP:n yhteydessä myös POP- ja IMAP:protokollista.
POP (Post Office Protocol) ja IMAP (Interactive Mail Access Protocol) ovat protokollia, joilla haetaan sähköpostit sähköpostipalvelimelta. Ne vaativat SMTP:tä vähemmän levytilaa, koska itse viestejä ei säilytetä palvelimella. Nämä protokollat eivät myöskään vaadi jatkuvaa internetyhteyttä. Tämän tyyppiset ratkaisut ovat siis "halvempia" ja "kevyempiä" vaihtoehtoja. Tulee kuitenkin muistaa, että nämä protokollat määrittelevät vain pääsyn jo olemassa oleviin sähköposteihin, niissä ei määritellä sähköpostejen lähettämistä.
6 SMTP:n tulevaisuus
SMTP:protokolla on lisääntyvän sähköpostiviestinnän myötä kasvanut tärkeäksi viestintäprotokollaksi. Se on peruspiirteiltään suhteellisen yksinkertainen, mutta on osoittautunut käytännössä toimivaksi. SMTP:sovellusten suurimpia uhkia lienee muitakin internetsovelluksia vaivaavan käyttäjän identifikoinnin vaikeus. Koska perinteiset UNIX-käyttäjät liikkuvat käyttöjärjestelmien "matalalla tasolla" mahdollisuus vaikuttaa protokollaan liikennöintiin suoraa on osoittautunut uhkatekijäksi. Ihmiset luottavatkin ehkä liikaa viestin väitettyihin lähettäjiin. Käytännössä viestien väärentäminen on suhteellisen helppoa toimintaa tietylle tasolle asti, tästä ehkä suuri yleisö ei vielä ole tietoinen ja se voi käytännössä koitua kohtalokkaaksi monessakin tapauksessa.
Sähköposti on luultavasti tullut jäädäkseen, ainakin toistaiseksi. Tällä hetkellä sen arvellaan olevan käytetyin TCP/IP:sovellus [2].Sähköposti toimi monessa yrityksessä viestinnän lisäksi myös työntekijöiden memona ja jopa kalenterina. Sähköpostin vahvuuksia on sen ilmainen käyttö ja tästä syystä sähköposti on osittain korvannut esim. puhelinliikennettä.
Lähdeluettelo
[1] Alman Eric,README,5.9.98 [viitattu 20.11.98]
Lisätietoja
<http://www.sendmail.org/m4/readme.html>
[2]Anon,Simple Mail Transfer Protocol (SMTP),2.4.1998
<http://ulla.mcgill.ca/arts150/arts150bs.htm>
[3]Aßmann Claus,Hints about sendmail/e-mail ,26.8.1998 [viitattu 20.11.98]
<http://www.informatik.uni-kiel.de/%7Eca/email/english.html>
[4]Crocker David H.,STANDARD FOR THE FORMAT OF ARPA INTERNET TEXT MESSAGES,13.8.1982 [viitattu 20.11.1998]
<ftp://ftp.funet.fi/rfc/rfc822.txt>
[5]Postel,Jonathan B.,SIMPLE MAIL TRANSFER PROTOCOL,27.2.1997 [viitattu 20.11.1998]
<http://techref.ezine.com/ptc/html/RFC821.html>
- Configuring Sendmail the First Time
- Sendmailin konfigurointiapua
- IMAP, POP and MAPI
- Tietoa IMAP, POP ja MAPIsta
- What is IMAP?
- Tietoa IMAPista
- PROTOCOL WALK-THROUGH
- Tietoa aihepiiriin liittyvistä asioista
- SMTP PROTOCOL
- Lisätietoa SMTP:stä
- A (Smoother) Engine Powers Network Email,?
- Tietoa sendmailista ja protokollista
- sendmail(1M) manual page
- Apua sendmailin käyttöön
- Typical Electronic Mail Facilities
- Yleistä tietoa sähköposteista
- Post Office Protocol - Version
- FRC 1725
- MAIL ROUTING AND THE DOMAIN SYSTEM
- RFC 974
- INTERACTIVE MAIL ACCESS PROTOCOL - VERSION
- RFC 203
- Caloca Paul,Muy Cool Sendmail Resources
- Sekalaista sendmailiin liittyvää tietoa