Sähköpostia välitetään internetissä SMTP:llä (simple mail transfer protocol). Kun sähköpostia lähetetään, ottaa lähettävä kone TCP-yhteyden sähköpostipalvelimeen porttiin 25. Sitten se "puhuu" palvelimelle SMTP:tä ja viesti lähtee matkaan. Tavanomaisessa tapauksessa, mikäli palvelin ei ole se lopullinen palvelin jonne posti päätyy, se ottaa selvää nimipalvelun MX-tietueista katsomalla mille palvelimelle posti kuuluu ja lähettää sen sinne niin ikään SMTP:llä.
Kun lähettävä kone avaa yhteyden sähköpostipalvelimeen, sanoo sähköpostipalvelin jotain itsestään, esim:
220 posti.palvelin.pimpelipom.fi ESMTP PostfixSMTP:ssä on aina jokaisessa palvelinvasteessa alussa numero, joka kertoo viestin sisällön. Numeroita käytetään samasta syystä kuin muissakin protokollissa, ne ovat helpompi lukea koneellisesti. Esimerkin 220 on tervehdysviesti. Loput rivillä olevat tiedot ovat palvelimen nimi, protokolla jota oletetaan puhuttavan (tässä tapauksessa ESMTP, eli extended smtp) ja mahdollisesti esimerkiksi palvelinohjelmiston nimi ja versio.
Seuraavaksi lähettävä kone sanoo:
HELO mun.tietamyskone.fiKone kertoo palvelimelle oman nimensä, tai jotain muuta jos haluaa valehdella. Valehtelemista ei ole missään kielletty, vaikka toki postipalvelimen ylläpito voisi tässä tilanteessa laittaa asetukset niin, ettei valehtelua suvaita. Silloin tosin voisi jäädä myös hyötypostia saamatta. Palvelin vastaa tervehtimällä esimerkiksi:
250 posti.palvelin.pimpelipom.fi Hello mun.tietamyskone.fiSitten lähettävä kone aloittaa varsinaisen postinlähetyksen
MAIL FROM:<joku@jossain.com>Missä on lähettäjän osoite. Tuonkin voi valehdella, sillä on oikeasti vain tekemistä sen kanssa, että jos mailia ei saada perille, niin esim. mahdollinen lähettäjälle palautus tai virheilmoitus menee tuohon osoitteeseen. Palvelin vastaa taas OK.
Tässä täytyy huomata, ettei tiedon tarvitse olla sama kuin sähköpostin From: -kentässä. Tässä kohti sanottu osoite päätyy postin ensimmäiselle riville From-sanan (ilman kaksoispistettä) ja päiväyksen väliin. Tätä kutsutaan envelope-senderiksi ja juuri tähän osoitteeseen posti yritetään palauttaa, jos sitä ei saada perille.
Seuraavaksi lähettävä kone sanoo:
RCPT TO:<vastaan.ottaja@jossain.fi>TÄMÄ on se, minne posti päätyy. Jos palvelin haluaa (ts. sille on annettu lupa) välittää postia ilmoitettuun osoitteeseen, se vastaa 250 Ok ja välittää postin edelleen. Jos ei, niin se vastaa jollain virheilmoituksella. Näitä rivejä voi tulla useitakin, jos postilla on useita vastaanottajia. Vastaanottava kone voi vastata tässä tilanteessa myös virheilmoituksella, jos vastaanottavaa osoitetta ei ole olemassa tai postia ei jostain muusta syystä voida tai haluta ottaa vastaan. Tällöin lähettävän koneen kuuluu palauttaa viesti saamansa virheilmoituksen kera takaisin lähettäjälle.
Seuraavaksi lähettävä kone sanoo DATA, jonka jälkeen palvelin sanoo että okei, annapa tulla se viesti ja lopeta pelkkään rivillä yksin olevaan pisteeseen:
DATASeuraavaksi lähettävä kone lähettää kaikki headerit ja viestin sisällön. Postipalvelinta ei kiinnosta yhtään mitä niissä lukee, ne ovat palvelimen näkökulmasta vain sisältöä, joka ei vaikuta varsinaiseen postin kulkuun mitenkään. Esimerkiksi From:- ja To:-kentissä voi lukea ihan mitä tahansa. Ne voivat jopa puuttua kokonaan, ja silti toimitaan sääntöjen mukaan. Toisin sanoen From- ja To-kenttien sisältöön ei voi luottaa, kuten ei mihinkään muuhunkaan sähköpostin oikeellisuudessa. Täytyy muistaa, että sähköposti on kehitetty aikana, kun internetin käyttäjät olivat lähinnä vain yliopistojen tutkijoita ja professoreita. Silloin ei pahoista ihmisistä, kuten esimerkiksi roskapostittajista ja viruksentekijöistä ollut harmia, eikä erään redmondilaisen yrityksen reikäjuustomaisesti tietoturva-aukkoja sisältävää ikkunoitua käyttöjärjestelmän irvikuvaa ollut olemassa. Jos halutaan varmuutta sähköpostiviestintään, tulee käyttää jotain salaus- ja/tai allekirjoitusohjelmaa, kuten esimerkiksi PGP.
Kun viesti päättyy pelkkään rivillä yksin olevaan pisteeseen, palvelin vastaa viestillä:
250 OkLopuksi kun lähettävä kone on lähettänyt kaiken mitä on lähetettävää, se sanoo palvelimelle QUIT. Palvelin vastaa sanomalla bye ja TCP-yhteys katkaistaan.
QUITEnnenkuin palvelin välittää viestiä eteenpäin tilanteesta riippuen vastaanottajan postilaatikkotiedostoon tai edelleen toiselle palvelimelle, se lisää viestin headereiden alkuun Received-rivin jolla merkitsee, että posti on kulkenut sen kautta. Jos siis halutaan tutkia postin kulkureittiä noista headereista, on ymmärrettävä, että niitä luetaan takaperoisessa järjestyksessä.
Esimerkkinä tässä sessiossa palvelin lisäisi headerin:
Received: from mun.tietamyskone.fi [123.123.123.123]
by posti.palvelin.pimpelipom.fi; Mon, 20 Oct 2003 20:00:00 +0300
Joskus Received-headerissa voi olla lisätietoa kuten esim. viestin yksilöivä ID, tai palvelinohjelmiston nimi ja versio. Huomaa, että header-tiedoissa välilyönneillä tai tabulaattoreilla alkavat rivit katsotaan edellisen rivin jatkeeksi. Yleensä Received-headeriin merkitään myös sen koneen IP-osoite (esimerkissä keksitty 123.123.123.123), josta posti tuli. Näin ollen vaikka lähettävä kone olisi HELO-viestissä valehdellut nimensä, todellinen lähde on kuitenkin tuossa IP-osoitteena ja esimerkiksi roskaviestin alkuperän selvittämistä voidaan tehdä sen perusteella.