SMTP-AUTH

Z Wikipedii, wolnej encyklopedii
Skocz do: nawigacja, szukaj

SMTP-AUTH to rozszerzenie protokołu Simple Mail Transfer Protocol o mechanizmy uwierzytelniania. Można wyróżnić dwie podstawowe metody autoryzacji sesji:

  • metodą AUTH PLAIN
  • metodą AUTH LOGIN

Każda z nich do komunikacji pomiędzy serwerem a klientem stosuje kodowanie Base64, które samo w sobie nie zapewnia bezpieczeństwa danych.

Aby skorzystać z autoryzacji, klient powinien zamiast standardowego powitania HELO użyć EHLO, które umożliwi wykorzystanie rozszerzonego zestawu poleceń SMTP. W odpowiedzi serwer SMTP powinien zwrócić w powitaniu ciąg znaków "AUTH", a po nim dostępne metody uwierzytelniania.

Opisany jest w RFC - RFC 2554.

Przykład sesji SMTP z uwierzytelnianiem AUTH PLAIN[edytuj | edytuj kod]

Aby uwierzytelnić sesję SMTP należy wygenerować odpowiedni ciąg znaków ("\0użytkownik\0haslo", gdzie \0 oznacza bajt zerowy, jeżeli użytkownik ma mieć pełną nazwę domenową np. test@test.com.pl to przed '@' dajemy znak ucieczki '\' - ("\0uzytkownik\@testdomain.pl\0haslo")) za pomocą np. Perla poprzez polecenie:

perl -MMIME::Base64 -e 'print encode_base64("\0uzytkownik\0haslo");'

wynikiem będzie:

AHV6eXRrb3duaWsAaGFzbG8=

Gdzie zwykła sesja już będzie wyglądać w taki sposób:

220 serwer ESMTP
EHLO serwer.email.com
250-serwer Hello user at localhost [127.0.0.1]
250-AUTH PLAIN LOGIN
250 HELP
AUTH PLAIN
334 ok. go on.
AHV6eXRrb3duaWsAaGFzbG8=
235 OK Authenticated
MAIL FROM:<nadawca@domena.com>
250 OK
RCPT TO:<odbiorca@domena.com>
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
From: nadawca@domena.com
To: odbiorca@domena.com

tresc wiadomosci
.
250 OK
QUIT
221 serwer.email.com closing connection

Przykład sesji SMTP z uwierzytelnianiem AUTH LOGIN[edytuj | edytuj kod]

Aby uwierzytelnić sesję SMTP przy użyciu metody LOGIN, należy oddzielnie skonwertować nazwę użytkownika i hasło do formatu Base64. Za pomocą Perla można to wykonać w następujący sposób:

perl -MMIME::Base64 -e 'print encode_base64("uzytkownik");'
perl -MMIME::Base64 -e 'print encode_base64("haslo");'

wynikiem będą odpowiednio:

dXp5dGtvd25paw==
aGFzbG8=

Oto przykładowa sesja SMTP z autoryzacją LOGIN:

> 220 serwer ESMTP
< EHLO serwer.email.com
> 250-serwer Hello user at localhost [127.0.0.1]
> 250-AUTH PLAIN LOGIN
> 250 HELP
< AUTH LOGIN
> 334 VXNlcm5hbWU6
< dXp5dGtvd25paw==
> 334 UGFzc3dvcmQ6
< aGFzbG8=
> 235 OK Authenticated
< MAIL FROM:<nadawca@domena.com>
> 250 OK
< RCPT TO:<odbiorca@domena.com>
> 250 Accepted
< DATA
> 354 Enter message, ending with "." on a line by itself
< From: nadawca@domena.com
< To: odbiorca@domena.com
< 
< tresc wiadomosci
< .
> 250 OK
< QUIT
221 serwer.email.com closing connection
W formie odkodowanej (base64)





334 Username:
uzytkownik
334 Password:
haslo