Проверка почтовых сервисов из 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.