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

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

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

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

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

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

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

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

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

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

220 relay.admins24.com ESMTP Postfix

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

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

helo domain.local

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

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

mail from:[email protected]

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

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

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

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

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

subject:test subject

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

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

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

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

220 relay.admins24.com ESMTP Postfix

502 5.5.2 Error: command not recognized
helo domain.local
250 relay.admins24.com
mail from:[email protected]
250 2.1.0 Ok
rcpt to:[email protected]
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

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

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

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

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

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

250-relay.admins24.com 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. Powershell:

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

2. Perl:

perl -MMIME::Base64 -e ‘print encode_base64(«текст»);’

3. Онлайн:

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

LOGIN

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

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

AUTH LOGIN

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

334 VXNlcm5hbWU6

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

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

334 UGFzc3dvcmQ6

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

cGFzc3dvcmQ=

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

235 2.0.0 Authentication successful

PLAIN

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

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

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

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

AUTH PLAIN

XDAwdXNlclxAZG9tYWluLnJ1XDAwcGFzc3dvcmQ=