Как работает авторизация SMTP типа AUTH LOGIN
В этой заметке я хотел бы рассказать, как отправлять почту из командной строки по SMTP с авторизацией открытым текстом (clear text). Это может оказаться полезным, если необходимо диагностировать ошибки при отправке почты в Outlook или Exchange Server.
Именно так я выяснил один интересный факт об Exchange 2003, связанный с особенностью реализации в нем SMTP авторизации, о котором я расскажу позже.
Диалог включения SMTP Auth login для отправки писем в Exchange

Диалог включения SMTP Auth login для отправки писем в Outlook

Расширение диалога SMTP командой AUTH описывается в RFC4954.
Общий синтаксис прост:
Клиент отправляет серверу команду
AUTH механизм [опциональный первоначальный ответ]
И если сервер принимает механизм авторизации, диалог продолжается с отправкой имени пользователя и пароля в кодировке BASE64.
Для работы нам понадобится утилита кодирования/декодирования в BASE64. Я использовал онлайн-утилиту
http://www.motobit.com/util/base64-decoder-encoder.asp
1. Подключаемся к SMTP серверу
telnet mx.valuehost.ru 25
сервер отвечает нам приветствием
220 mx7.valuehost.ru ESMTP ready
2. Отправляем приветствие
EHLO servername
| 01:S | 220 mx7.valuehost.ru ESMTP ready |
| 02:C | EHLO servername |
| 03:S | 250-mx7.valuehost.ru250-PIPELINING
250-8BITMIME 250 AUTH PLAIN LOGIN CRAM-MD5
|
Из ответа сервера следует, что он поддерживает авторизацию PLAIN, LOGIN,
CRAM-MD5
3. Выбираем тип авторизации
AUTH LOGIN
| 01:S | 220 mx7.valuehost.ru ESMTP ready |
| 02:C | EHLO servername |
| 03:S | 250-mx7.valuehost.ru250-PIPELINING
250-8BITMIME 250 AUTH PLAIN LOGIN CRAM-MD5
|
| 04:C | AUTH LOGIN |
| 05:S | 334 VXNlcm5hbWU6 |
Декодируем «VXNlcm5hbWU6» из BASE64, ответ сервера – «334 Username:»
4. Передаем имя пользователя, закодированное в BASE64
dGVzdHVzZXI=
| 01:S | 220 mx7.valuehost.ru ESMTP ready |
| 02:C | EHLO servername |
| 03:S | 250-mx7.valuehost.ru250-PIPELINING
250-8BITMIME 250 AUTH PLAIN LOGIN CRAM-MD5
|
| 04:C | AUTH LOGIN |
| 05:S | 334 VXNlcm5hbWU6 |
| 06:C | dGVzdHVzZXI= |
| 07:S | 334 UGFzc3dvcmQ6 |
Ответ сервера – «334 Password:»
5. Передаем пароль, закодированный в BASE64
cGFzc3dvcmQ=
| 01:S | 220 mx7.valuehost.ru ESMTP ready |
| 02:C | EHLO servername |
| 03:S | 250-mx7.valuehost.ru250-PIPELINING
250-8BITMIME 250 AUTH PLAIN LOGIN CRAM-MD5
|
| 04:C | AUTH LOGIN |
| 05:S | 334 VXNlcm5hbWU6 |
| 06:C | dGVzdHVzZXI= |
| 07:S | 334 UGFzc3dvcmQ6 |
| 08:C | cGFzc3dvcmQ= |
| 09:S | 235 2.0.0 OK |
В случае успешной авторизации возвращается строка «235 2.0.0 OK».
Далее можно работать как в обычной SMTP сессии.
| 01:S | 220 mx7.valuehost.ru ESMTP ready |
| 02:C | EHLO servername |
| 03:S | 250-mx7.valuehost.ru250-PIPELINING
250-8BITMIME 250 AUTH PLAIN LOGIN CRAM-MD5
|
| 04:C | AUTH LOGIN |
| 05:S | 334 VXNlcm5hbWU6 |
| 06:C | dGVzdHVzZXI= |
| 07:S | 334 UGFzc3dvcmQ6 |
| 08:C | cGFzc3dvcmQ= |
| 09:S | 235 2.0.0 OK |
| 10:C | mail from:<testuser@testserver.com> |
| 11:S | 250 2.1.0 Ok |
| 12:C | rcpt to:<testuser@testserver.com > |
| 13:S | 250 2.1.5 Ok |
| 14:C | data |
| 15:S | 354 End data with <CR><LF>.<CR><LF> |
| 16:C | test.
|
| 17:S | 250 2.0.0 Ok: queued as 6F1482E0CE |
| 18:C | quit |
| 19:S | 221 2.0.0 Bye |
Комментариев нет
Комментариев нет.
RSS-лента комментариев к этой записи. TrackBack URI