воскресенье, 19 ноября 2023 г.

Отправка почтового сообщения из консоли сервера Linux по протоколу ESMPT

ESMPT –это расширенная современная версия почтового протокола отправки сообщений SMTP (Extended SMTP). При установлении соединения тут применяется шифрование. И процесс отправки сообщений становиться более сложным чем в протоколе SMPT.

Первоначально необходимо установить безопасное соединение с сервером для этого используется openssl, который обычно есть в каждом сервере Linux
# openssl s_client -connect myserver.ru:465 -crlf
Произойдет установление соединения, вывод завершиться сообщением:
<…>
Start Time: 1700393590
Timeout : 7200 (sec)
Verify return code: 0 (ok)
Extended master secret: no
---
220 myserver.ru ESMTP CommuniGate Pro 6.4.0


Теперь нужно представиться серверу. Что бы не возникло ошибок представиться лучше публичным IP адресом, который используется для выхода в Интернет. Узнать свой публичный IP адрес можно обратившись на сайт https://2ip.ru/
EHLO 46.0.100.100
Сервер должен ответить списком допустимых команд:
250-myserver.ru is pleased to meet you
250-DSN
250-SIZE
250-AUTH LOGIN PLAIN
250-ETRN
250-TURN
250-ATRN
250-NO-SOLICITING
250-8BITMIME
250-HELP
250-PIPELINING
250-SMTPUTF8
250 EHLO


Далее запускаем процедуру аутентификации. После запуска процедуры, нужно будет ввести логин и пароль но не в простом обычном виде, а в закодированном по стандарту кодирования Base64. Свои логин и пароль можно закодировать по стандарту Base64 например на сайте: https://www.base64encode.org/
Пример:
AUTH LOGIN
334 VXNlcm5hbWU6
TXlVc2VyQG15c2VydmVyLnJ1 (мой логин MyUser@myserver.ru в Base64)
334 UGFzc3dvcmQ6
TXlTZWNyZXRQYXNzd29yZA== (мой пароль MySecretPassword в Base64)
235 myserver.ru relaying authenticated

Удачная аутентификация завершиться сообщением 235 relaying authenticated

Далее устанавливаем от кого будет написано письмо (адрес отправителя). Нужно отметить, что адрес отправителя не всегда соответствует логину. В данном случае нам нужно указать адрес электронной почты нашего логина.
MAIL FROM: <MyUser@myserver.ru>
Сервер должен ответить сообщением 250 sender accepted

Теперь нужно задать почтовый адрес получателя. Тут важно, что команда RCPT TO вводиться в нижнем регистре, так как символ «R» в начале строки в сессии openssl заставит openssl переконнектиться и адрес получателя установлен не будет
rcpt to: recipient_of_the_letter@yandex.ru
Типичный ответ сервера:
250 recipient_of_the_letter@yandex.ru will relay mail for an authenticated user

Далее вводиться ключевое слово DATA, после чего пользователю предлагается написать письмо и завершить сообщение точкой.
DATA
354 Enter mail, end with "." on a line by itself

Вначале письма обычно нужно еще раз написать адрес отправителя, адрес получателя, а так же тему письма.
После этого написать текст письма и в последней строке написать точки и нажать ENTER.
Например:
from: MyUser@myserver.ru
to: recipient_of_the_letter@yandex.ru
subject: test 2023-11-19
Это тестовое сообщение, отправленное из консоли Linux!!
Отправил Королев В.С.
.

Сервер ответит, что сообщение принято к отправке
250 204410 message accepted for delivery

Для разъединения соединения нужно набрать команду QUIT, сервер ответит DONE, после чего соединение разорвется.
QUIT
DONE



Комментариев нет:

Отправить комментарий