SMTP Inside Out

Cum funcționează serviciul de e-mail pe internet

V-ați întrebat vreodată ce se întâmplă atunci când apăsați butonul Trimitere în programul dvs. de e-mail? Probabil nu, cred - atâta timp cât funcționează. Acesta este motivul pentru care ar trebui să vă întrebați, totuși. În cazul în care ceva nu funcționează, este bine să știți ce nu funcționează. De obicei, aceasta este jumătate din soluție.

Când trimiteți e-mail, SMTP intră în joc. SMTP este scurt pentru Simple Mail Transfer Protocol așa cum este definit în RFC 5321: Simplu Mail Transfer Protocol. Clientul dvs. de poștă electronică vorbește cu serverul SMTP utilizând această procedură curată și simplă pentru a primi e - mailuri de la un loc la altul.

Flirtul

Programul dvs. de e-mail devine un client SMTP , se conectează la portul 25 al serverului de e - mail (de obicei portul SMTP ) și - spune EHLO . Calculatoarele, în cele din urmă, sunt numai umane și ceea ce contează este că vrea să fie politicos. De fapt, nu încearcă să fie politicos, ci să folosească adăugiri ulterioare la SMTP care au adus două arome ale comenzii HELO ulterioare (comanda SMTP are în general patru caractere).

Două arome de HELO

EHLO, fiind cea mai recentă, face ca serverul să facă publicitate tuturor funcțiilor suplimentare (cum ar fi notificarea statusului de livrare sau capacitatea de a transporta mesaje care conțin alte caractere ASCII în siguranță) pe care le suportă.

Nu fiecare server va permite acest salut, dar este necesar să accepte un HELO simplu, care presupune în mod natural că nu există alte caracteristici suplimentare. Ambele comenzi de salut necesită ca clientul să specifice domeniul său după ** LO, totuși. În practică, aceasta arată cam ca:

220 mail.domain.net Serverul ESMTP
HELO
501 HELO necesită o adresă de domeniu
HELO localhost
250 mail.domain.net Buna ziua localhost [127.0.0.1], cu placere sa va cunosc

(Intrarea mea este în italică , ieșirea serverelor este neagră, liniile care încep cu 5 indică o eroare .)

Expeditorul

Restul protocolului merită cu adevărat atributul simplu. Dacă doriți să trimiteți un e-mail, începeți cu cuvintele cheie MAIL FROM:. În urma acestui lucru vine adresa de e-mail a expeditorului, așa cum a sugerat de la. Nu uitați să introduceți paranteze în jurul adresei, deși (cum ar fi ). Continuând exemplul nostru, avem:

MAIL FROM:
250 sender@example.com ... Expeditor ok

Destinatarul

După ce serverul a acceptat adresa expeditorului, clientul poate da adresa destinatarului. Comanda pentru această acțiune, RCPT TO: este din nou sugestivă. Vreau să- mi trimit poștă:

RCPT TO: destinatar@example.com
250 support@lifewireguide.com ... Destinatar OK (va coada)

Că serverul va coadă înseamnă doar că: va salva poșta local și îl va trimite împreună cu toate celelalte corespondențe în coadă în intervale (de exemplu, la fiecare 30 de minute). Acest comportament depinde de configurație, iar serverul poate livra și poșta instantaneu.

Aproape că am terminat. Ceea ce lipsește, totuși, este partea importantă: mesajul real.

Mesajul

Acum, că "plicul" este terminat, datele mesajului de e-mail, la fel cum este, pot urma. Aceste "date" constau din corpul e-mailului și din câmpurile antetului .

Comanda pentru a iniția starea care face serverul să accepte mesajul este DATA . În continuare, sunt toate câmpurile de antet ale mesajului de e-mail și apoi corpul, ambele făcând doar un bloc mare de text (sau date). Pentru a spune serverului că intrarea este terminată, se utilizează un punct pe linie (\ r \ n. \ R \ n). Deci îmi trimit mesajul:

DATE
354 Introduceți e-mailul, încheiați cu "." pe o linie de la sine
ID-ul mesajului:
Data: Sun, 17 Aug 1997 18:48:15 +0200
De la: Heinz Tschabitscher
Către: Heinz Tschabitscher
Subiect: Pentru concursul Summarize-Proust

De la lumea Swan!
.
250 SAA19153 Mesaj acceptat pentru livrare

Da, acest lucru înseamnă că puteți să indicați un nume complet diferit de cel pe care îl trimite e-mailul în câmpul Către :. De exemplu, puteți utiliza " Listă de destinatari suprimată" .

sfarsit

Acum puteți trimite câte e-mailuri doriți, repetând pașii de la MAIL FROM: la . . Dacă ați terminat cu asta, puteți părăsi serverul cu comanda QUIT și asta este exact ceea ce facem:

PĂRĂSI
221 La revedere

Cum pot face acest lucru?

Soluția non-trivială este de a trimite telnet către serverul de e-mail de ieșire (puteți găsi adresa în setările contului clientului de e - mail ) pe portul 25.

Cea mai ușoară cale este să utilizați acest applet Java , care încearcă să imite protocolul SMTP și să vă ghideze prin dialog.