SMTP-AUTH

SMTP-AUTH – 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 2554 ↓.

Przykład sesji SMTP z uwierzytelnianiem AUTH PLAIN

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. [email protected] to przed '@' dajemy znak ucieczki '\' - ("\0uzytkownik\@example.com\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:<[email protected]>
250 OK
RCPT TO:<[email protected]>
250 Accepted
DATA
354 Enter message, ending with "." on a line by itself
From: [email protected]
To: [email protected]

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

Przykład sesji SMTP z uwierzytelnianiem AUTH LOGIN

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:<[email protected]>
> 250 OK
< RCPT TO:<[email protected]>
> 250 Accepted
< DATA
> 354 Enter message, ending with "." on a line by itself
< From: [email protected]
< To: [email protected]
< 
< tresc wiadomosci
< .
> 250 OK
< QUIT
221 serwer.email.com closing connection
W formie odkodowanej (base64)





334 Username:
uzytkownik
334 Password:
haslo

Linki zewnętrzne

  • J.J. Myers J.J., SMTP Service Extension for Authentication, RFC 2554, IETF, marzec 1999, DOI: 10.17487/RFC2554, ISSN 2070-1721, OCLC 943595667  (ang.).