Проверка почтовых сервисов из telnet

Проверка SMTP (авторизация и отправка письма)

Метод авторизации AUTH PLAIN

Кодируем пару логин+пароль:

~ % echo -ne "\0user_login\0user_pwd" | base64
Имя пользователя начинается и заканчивается нулевым символом!

Подключаемся к серверу, авторизуемся, и отправляем письмо. В данном случае через шифрованное соединение. Если надо проверить открытый канал, то вместо openssl используем команду: telnet mx.domain.tld 25

~ % openssl s_client -connect mx.domain.tld:465
...
220 mx.domain.tld ESMTP BlackHole Mailer v. 5.12.27
EHLO client.name.lan
250-mx.domain.tld
250-PIPELINING
250-SIZE 33000000
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH PLAIN
334
AHVzZXJfbG9naW4AdXNlcl9wd2Q=
235 2.7.0 Authentication successful
MAIL FROM: <user@domain.tld>
250 2.1.0 Ok
rCPT TO: <dst@domain.tld>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: 123
123
.
250 2.0.0 Ok: queued as C69BA592B28
quit
221 2.0.0 Bye
closed

Буква R в RCPT TO должна быть маленькой, если работаем через openssl, т.к. большая «R» начинающая строку вызывает RENEGOTIATING
Практически все сервера позволяют использовать запрос авторизации вида: AUTH PLAIN AHVzZXJfbG9naW4AdXNlcl9wd2Q=

Метод авторизации AUTH LOGIN

Кодируем пару логин+пароль:

~ % echo -ne "username" | base64 dXNlcm5hbWU= ~ % echo -ne "password" | base64 cGFzc3dvcmQ=
Имя пользователя и пароль кодируются в base64 без каких-либо спецсимволов.

Далее тестируем, аналогично выше описанному:

~ % openssl s_client -connect mx.domain.tld:465
...
220 mx.domain.tld ESMTP BlackHole Mailer v. 5.12.27
EHLO client.name.lan
250-mx.domain.tld
250-PIPELINING
250-SIZE 33000000
250-ETRN
250-AUTH PLAIN LOGIN
250-AUTH=PLAIN LOGIN
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
AUTH LOGIN
334 VXNlcm5hbWU6
dXNlcm5hbWU=
334 UGFzc3dvcmQ6
cGFzc3dvcmQ=
235 2.7.0 Authentication successful
MAIL FROM: <user@domain.tld>
250 2.1.0 Ok
rCPT TO: <dst@domain.tld>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
Subject: 123
123
.
250 2.0.0 Ok: queued as C69BA592B28
quit
221 2.0.0 Bye
closed

Строки VXNlcm5hbWU6 и UGFzc3dvcmQ6, в ответах сервера, являются закодированными в base64 строками Username и Password.

Tracedump:

newBaseSize: 16pt
newBaseSizeInPt: 16