Sarcina principală a protocolului SMTP (Simple Mail Transfer Protocol) este de a asigura transmiterea mesajelor electronice (poștă electronică). Pentru a lucra prin protocolul SMTP, clientul creează o conexiune TCP la server prin portul 25. Apoi clientul și serverul SMTP fac schimb de informații până când conexiunea este închisă sau întreruptă. Procedura principală în SMTP este transferul prin poștă. Următoarele sunt procedurile de trimitere prin poștă, verificarea numelor cutiei poștale și afișarea listelor de grupuri de poștă electronică. Prima procedură este deschiderea canalului de transmisie, iar ultimul este închiderea acestuia.
Comenzile SMTP informează serverul despre operația pe care clientul o dorește să o execute. Comenzile constau din cuvinte cheie urmate de unul sau mai mulți parametri. Cuvântul cheie este format din 4 caractere și este separat de argument printr-unul sau mai multe spații. Fiecare linie de comandă se termină cu caractere CRLF. Aici este sintaxa tuturor comenzilor protocolului SMTP (SP este un spațiu):
Răspunsul obișnuit al serverului SMTP constă într-un număr de răspuns, urmat de un text suplimentar printr-un spațiu. Numărul răspunsului servește ca indicator al stării serverului.
Trimiterea e-mailului
Când trimiteți e-mail, trimiteți unele date necesare (expeditor, destinatar și scrisoarea în sine):
Trebuie să încheiați mesajul cu CRLF.CRLF
Între titlul scrisorii și textul ei, nu o pereche de CRLF, ci două.
încheiați transmisia cu simbolurile CRLF.CRLF
Acum terminăm lucrarea, trimitem comanda QUIT:
> Alte echipe
Kama acolo pe Wanapi nada ..
doamnelor actuale de cod
date
msgHELO db 'HELO gazdă', 13,10
msgFROM db 'mail de la: milo @ mail.ru', 13,10
msgRCPT db 'RCPT LA: LAMERDEATH15 @ mail.ru', 0dh, 0ah
msgDATA DB 'DATA', 0dh, 0ah
msgDATA2 db 'acesta este mesajul de încercare de la
COD
ush offset wsd
mov eax, 0
mov ax, 0202h
împinge eax
sunați la wsastartup
invoca htons, 25
mov sin2.sin_port, ax
mov sin2.sin_family, 2
împingeți 0
împingeți 1
împingeți 2
socket de apel
mov s1, eax
împinge dimensiunea (sockaddr_in)
împingeți offset sin2
împinge s1
apelați conexiunea
apăsați dimensiunea msgrecv
împinge offset msgrecv
împinge s1
apelează recv
împingeți 0
împinge dimensiunea msgHELO
împinge offset msgHELO
împinge s1
sunați la trimitere
împingeți 0
apăsați dimensiunea msgrecv
împinge offset msgrecv
împinge s1
apelează recv
împingeți 0
împingeți dimensiunea msgFROM
împinge offset msgFROM
împinge s1
sunați la trimitere
împingeți 0
apăsați dimensiunea msgrecv
împinge offset msgrecv
împinge s1
apelează recv
împingeți 0
împinge dimensiunea msgRCPT
împinge offset msgRCPT
împinge s1
sunați la trimitere
împingeți 0
apăsați dimensiunea msgrecv
împinge offset msgrecv
împinge s1
apelează recv
împingeți 0
împingeți dimensiunea msgDATA
împinge offset msgDATA
împinge s1
sunați la trimitere
împingeți 0
împingeți dimensiunea msgDATA2
împingeți offset msgDATA2
împinge s1
sunați la trimitere
împingeți 0
apăsați dimensiunea msgrecv
împinge offset msgrecv
împinge s1
apelează recv
împingeți 0
împingeți 0
împinge dimensiunea msgQUIT
împingeți offset msgQUIT
împinge s1
sunați la trimitere
propriul recv nu poate fi folosit, este pentru depanare.
Cu toate prizele pe care le vei înțelege
dacă Th Think [email protected]
Pot adăuga ceva despre autentificare
1 Comanda EHLO.
În această comandă, serverul care acceptă SMTP avansată (ESMTP) oferă diverse informații, inclusiv. și despre metodele de autentificare. De exemplu:
C: EHLO
S: 250-
S: 250-SIZE
S: 250-8 BITMIME
S: 250-AUTH = LOGIN PLAIN
S: 250 AJUTOR
După cum puteți vedea, ca răspuns la EHLO, serverul emite un set de șiruri care încep cu 250 (ultima linie va fi fără liniuță). Aici serverul instruiește să utilizeze tipul de autentificare PLAIN LOGIN, folosind codificarea 8BITMIME. Adesea, în loc de AUTH =<тип> șirul AUTH este trecut <список поддерживаемых типов>. De exemplu, AUTO LOGIN CRAM-MD5
În acest caz, clientul poate alege tipul autentificării propriu-zise