Использование SMTP команд для отправки почты по Telnet

Обновлено Обновлено: Опубликовано Опубликовано:

Тематические термины: SMTP, telnet

При помощи данных команд удобно тестировать работу почтовых серверов.

Подключение по telnet

Проще всего подключиться к почтовому серверу из командной строки Linux:

telnet <адрес сервера> 25

или программы Putty:

Подключение по telnet на smtp порт

Мы должны увидеть ответ сервера с кодом 220 (готовность к работе), например:

220 relay.dmosk.ru ESMTP Postfix

Отправка сообщения SMTP командами

Приветствуем сервер:

helo domain.local

В ответ получаем встречное приветствие с кодом 250, например, 250 relay.dmosk.ru.

Вводим адрес, от которого будем отправлять сообщение:

mail from:master@dmosk.ru

В ответ должны получить 250 2.1.0 Ok.

На какой адрес отправляем сообщение:

rcpt to:test@dmosk.ru

Получаем ответ 250 2.1.5 Ok.

Вводим команду:

data

Получим 354 End data with <CR><LF>.<CR><LF> — это означает, что можно вводить текст сообщения:

subject:test subject

test text

Чтобы закончить, с новой строки ставим точку и нажимаем Enter:

.

В ответ должны увидеть что-то подобное: 250 2.0.0 Ok: queued as A340FC4B70C, где последний код — идентификатор сообщения, присвоенный сервером.

Сообщение отправлено.

Итоговая картина:

220 relay.dmosk.ru ESMTP Postfix

502 5.5.2 Error: command not recognized
helo domain.local
250 relay.dmosk.ru
mail from:master@dmosk.ru
250 2.1.0 Ok
rcpt to:test@dmosk.ru
250 2.1.5 Ok
data
354 End data with <CR><LF>.<CR><LF>
subject:test subject
test text
.
250 2.0.0 Ok: queued as A5E60C4B70C

Подключение по шифрованному каналу

Если нам нужно подключиться к серверу по защищенному каналу SSL/TLS, то используем для подключения команду openssl. Мы можем подключиться к портам 587 (STARTTLS) или 465 (SMTP over SSL).

а) Для подключения по порту 587:

openssl s_client -starttls smtp -connect smtp.yandex.ru:587

б) Для подключения по порту 465:

openssl s_client -connect smtp.yandex.ru:465

Далее проходим аутентификацию и можно делать отправку вышеописанными командами.

Аутентификация

Если почтовый сервер требует аутентификацию, необходимо сначала авторизоваться в системе.

Для этого вместо или после приветствия вводим:

ehlo

* EHLO — расширенное приветствие, которое позволит получить возможности почтового сервера.

В ответ мы получаем, примерно, следующее:

250-relay.dmosk.ru Hello [192.168.0.15]
250-SIZE 10485760
250-PIPELINING
250-DSN
250-ENHANCEDSTATUSCODES
250-X-ANONYMOUSTLS
250-AUTH LOGIN PLAINT
250-X-EXPS GSSAPI NTLM
250-8BITMIME
250-BINARYMIME
250-CHUNKING
250-XEXCH50
250-XRDST
250 XSHADOW

* в списке мы можем увидеть разные методы аутентификации (перечислены после AUTH).

Получаем base64

Данные авторизации передаются в закодированном виде с использованием стандарта Base64.

Чтобы закодировать свои логин и пароль, можно воспользоваться одним из перечисленных способов ниже.

1. Bash:

echo -ne "текст" | base64

2. Powershell:

[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("текст"))

3. Perl:

perl -MMIME::Base64 -e "print encode_base64('текст');"

4. Онлайн:

На веб-сайте base64.ru

LOGIN

При данном методе мы по очереди передаем закодированные логин и пароль.

После приветствия вводим:

AUTH LOGIN

В ответ получаем:

334 VXNlcm5hbWU6

После этого отправляем логин в base64, например dmosk:

ZG1vc2s=

Получим ответ:

334 UGFzc3dvcmQ6

И вводим пароль (password):

cGFzc3dvcmQ=

Если аутентификация прошла успешно, увидим:

235 2.0.0 Authentication successful

Можно делать отправку.

PLAIN

Данный метод аутентификации отличается от вышеописанного тем, что логин с паролем передаются одной строкой. Base64 для них получаем следующей командой, например, в unix-shell:

echo -ne "\0username\0password" | base64

... или Powershell:

[System.Convert]::ToBase64String([System.Text.Encoding]::UTF8.GetBytes("\0username\0password"))

* где username и password — логин и пароль для аутентификации; \0 — нулевой байт.

Авторизовываемся:

AUTH PLAIN

Видим приглашение на ввод аутентификационных данных:

334 VXNlcm5hbWU6

Вводим нашу последовательность: 

XDAwdXNlclxAZG9tYWluLnJ1XDAwcGFzc3dvcmQ=

Можно делать отправку

# Почта # Серверы
Дмитрий Моск — частный мастер
Была ли полезна вам эта инструкция?

Да            Нет