Страница 1 из 1

Отправка почтового сообщения через telnet с авторизацией

Добавлено: 01 янв 2022, 20:43
flashdeath
В общем все тривиально кроме одного момента, если сервер использует AUTH LOGIN, то указывать логин и пасс в plain text не получится.
Поэтому и понадобился этот ман.
Итак дано:
1. сервер 192.168.1.20
2. порт подключения 25 (мой любимый постфикс)
3. Login - USER1
4. Password - SupperDrupp3rP@$$w

Для того чтобы послать логин и пасс нам надо преобразовать их в Base64
Пишем скрипт
perl -MMIME::Base64 -e 'print encode_base64("USER1");'
perl -MMIME::Base64 -e 'print encode_base64("SupperDrupp3rP@$$w");'

Выполняем скрипты и смотрим хэш

Код: Выделить всё

flashdeath@flashadmin:/mnt/c/Users/flashdeath$ perl -MMIME::Base64 -e 'print encode_base64("USER1");'
VVNFUjE=
flashdeath@flashadmin:/mnt/c/Users/flashdeath$ perl -MMIME::Base64 -e 'print encode_base64("SupperDrupp3rP@$$w");'
U3VwcGVyRHJ1cHAzclA=
теперь выполняем telnet
telnet 192.168.1.20 25

Код: Выделить всё

220 server.ru ESMTP 2011
EHLO test-mail
250-mailserv
250-PIPELINING
250-SIZE 10240000
250-ETRN
250-STARTTLS
250-AUTH LOGIN NTLM
250-ENHANCEDSTATUSCODES
250-8BITMIME
250 DSN
Сервер показывает список своих возможностей, мы же выберем метод AUTH LOGIN и введем закодированные логин и пароль. Обратите внимание, что логин и пароль он спрашивает также в Base64-закодированном виде:

Код: Выделить всё

AUTH LOGIN
334 VXNlcm5hbWU6
VVNFUjE=
334 UGFzc3dvcmQ6
U3VwcGVyRHJ1cHAzclA=
Если все норм то сервак ответит

Код: Выделить всё

235 2.7.0 Authentication successful
Если нет то вернет что-то вроде

Код: Выделить всё

535 5.7.8 Error: authentication failed
или

Код: Выделить всё

535 5.7.3 Authentication unsuccessful
Дальше все тривиально

Код: Выделить всё

MAIL FROM: user1@server.ru
250 2.1.0 Ok
RCPT TO: user@server2.ru
250 2.1.5 Ok
DATA
354 End data with .
Subject: Hello world!
This is the test message...
.
250 2.0.0 Ok: queued on  as a8b0c5d3-aCbac1dx
QUIT
221 2.0.0 Closing connection.
Connection closed by foreign host.