У меня есть задачка, проверить работу почтового сервера на 587 порту. Работает SSL (требуется STARTTLS), используется доменная аутентификация.
Я работаю в Windows в bash через WSL2.
Открываем соединение:
openssl s_client -starttls smtp -connect mail.internet-lab.ru.ru:587 -crlf
Отображается сертификат. Запоминаем на какой он выписан домен. Сервер пишет:
250 SMTPUTF8
Отправляем приветствие:
helo
250 mail.internet-lab.ru Hello [10.10.30.15]
Проверяем, что в ответе фигурирует тот же домен, для которого выписан сертификат.
Логинимся:
auth login
334 VXNlcm5hbWU6
Если декодировать это сообщение из BASE64, то получим: "334 Username:". Нас просят ввести имя пользователя. Вводить тоже нужно в BASE64. Воспользуюсь конвертером (почему-то функция base64 в Linux как-то по-другому конвертирует и результат не нравится почтовому серверу):
Логин v.pupkin@ilab.local превращается в di5wdXBraW5AaWxhYi5sb2NhbA==.
di5wdXBraW5AaWxhYi5sb2NhbA==
334 UGFzc3dvcmQ6
Если декодировать это сообщение из BASE64, то получим: "334 Password:". Нас просят ввести пароль. Вводить нужно в BASE64. Пароль QwErTy превращается в UXdFclR5.
UXdFclR5
235 2.7.0 Authentication successful
Аутентифицировались успешно. Указываем заголовки:
mail from:admin@internet-lab.ru
250 2.1.0 Sender OK
rcpt to:test@example.com
250 2.1.5 Recipient OK
Data
354 Start mail input; end with <CRLF>.<CRLF>
From: Test
To: test@example.com
Subject: Test Message
body
Message text content.
.
250 2.6.0 <08e9ce90-3dd5-459a-bc76-2cd0407211e7@mail.ilab.local> [InternalId=2465311228736, Hostname=mail.ilab.local] 1509 bytes in 22.205, 0,066 KB/sec Queued mail for delivery
Заканчиваем ввод тела переводом строки и точкой. Сообщение отправлено.