Тематические термины: SMTP , telnet
При помощи данных команд удобно тестировать работу почтовых серверов.
Подключение
SMTP команды
Подключение по портам 587 или 465
Аутентификация
Кодирование Base64
Метод LOGIN
Метод PLAIN
Подключение по telnet
Проще всего подключиться к почтовому серверу из командной строки Linux:
telnet <адрес сервера> 25
или программы Putty:
Мы должны увидеть ответ сервера с кодом 220 (готовность к работе), например:
220 relay.remontka.com ESMTP Postfix
Отправка сообщения SMTP командами
Приветствуем сервер:
helo domain.local
В ответ получаем встречное приветствие с кодом 250, например, 250 relay.remontka.com.
Вводим адрес, от которого будем отправлять сообщение:
mail from:master@remontka.com
В ответ должны получить 250 2.1.0 Ok .
На какой адрес отправляем сообщение:
rcpt to:test@remontka.com
Получаем ответ 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.remontka.com ESMTP Postfix
502 5.5.2 Error: command not recognized
helo domain.local
250 relay.remontka.com
mail from:master@remontka.com
250 2.1.0 Ok
rcpt to:test@remontka.com
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.remontka.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. 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, например remontka:
ZG1vc2s=
Получим ответ:
334 UGFzc3dvcmQ6
И вводим пароль (password):
cGFzc3dvcmQ=
Если аутентификация прошла успешно, увидим:
235 2.0.0 Authentication successful
Можно делать отправку .
PLAIN
Данный метод аутентификации отличается от вышеописанного тем, что логин с паролем передаются одной строкой. Base64 для них получаем следующей командой, например, в unix-shell:
echo -ne «