Лаб. работа “Почтовые протоколы”
Протокол SMTP
Основным протоколом работы с электронной почтой является SMTP (Simple Mail Transfer Protocol, простой протокол передачи почты). Протокол SMTP поддерживает передачу сообщений электронной почты между произвольными узлами сети Internet.
Протокол SMTP работает поверх транспортного протокола TCP (обычно используется порт 25). Соединение с SMTP-сервером устанавливается по инициативе клиента и прекращается сервером после получения от клиента команды завершения соединения.
Полное описание протокола SMTP находится в RFC 2821.
Описание команд протокола SMTP
HELO домен – начало сеанса SMTP. Ответом на эту команду является код 250 с именем отвечающего домена.
MAIL FROM:<имя@домен> - начать новую транзакцию передачи сообщения (знаки «<» и «>» указывать обязательно!). Код подтверждения – «250 ОК».
RCPT TO:<имя@домен> - задать адрес получателя сообщения. Данная команда может повторяться несколько раз для отправки сообщения нескольким адресатам. Код ошибки – 550.
DATA – начало передачи сообщения. После получения кода подтверждения 354 отправитель должен передать заголовок сообщения и тело сообщения. Заголовок сообщения отделяется от тела сообщения пустой строкой (если заголовок отсутствует, перед телом сообщения должна быть хотя бы одна пустая строка). Для обозначения конца сообщения служит строка, содержащая одну точку «.». в заголовке сообщения обычно указываются адреса получателя и отправителя сообщения, дата и время отправки сообщения, тема и идентификатор сообщения, информация о способе представления данных, сведения о промежуточных узлах и т.д. почтовые программы и сервера обычно самостоятельно заполняют поля заголовка сообщения. Некоторые поля (From, Subject) заголовка впоследствии отображаются при работе с почтовыми программами.
QUIT – завершить сеанс SMTP.
Пример работы с SMTP-сервером:
220 isit ESMTP
HELO isit
250 isit
MAIL FROM: <stud1@isit>
250 2.1.0 Ok
RCPT TO: <stud2@isit>
250 2.1.5 Ok
DATA
354 End data with <CR><LF>.<CR><LF>
FROM: "STUD 1" <stud1@isit>
TO: "STUD 2" <stud2@isit>
SUBJECT: Моё первое письмо
Привет! Это мое первое тестовое письмо.
Если ты его читаешь, это значит я правильно использовал
команды протокола SMTP для отправки электронного письма.
До свидания.
.
250 2.0.0 Ok: queued as BE98220111
QUIT
221 2.0.0 Bye
Протокол POP3
POP3- это простейший протокол для работы пользователя с содержимым своего почтового ящика. Он позволяет только забрать почту из почтового ящика сервера на рабочую станцию клиента и удалить её из почтового ящика на сервере. Всю дальнейшую обработку почтовое сообщение проходит на компьютере клиента.
POP3-сервер не отвечает за отправку почты, он работает только как универсальный почтовый ящик для группы пользователей. Когда пользователю необходимо отправить сообщение, он должен установить соединение с каким-либо SMTP-сервером и отправить туда своё сообщение по SMTP. Этот SMTP-сервер может быть тем же хостом, где работает POP3-сервер, а может располагаться совсем в другом месте (в другом домене или, вообще говоря, где угодно в Internet).
Протокол POP3 работает поверх транспортного протокола TCP (обычно используется порт 110). Соединение с POP3-сервером устанавливается по инициативе клиента и прекращается сервером после получения от клиента команды завершения соединения.
Полное описание протокола POP3 находится в RFC 1939.
Описание команд протокола POP3
Отыеты POP3-сервера на команды состоят из статус-индикатора (положительный ответ «+ОК» и отрицательный ответ «-ERR»), ключевого слова и дополнительной информации. Если ответ POP3-сервера состоит из нескольких строк, то окончание ответа обозначается строкой, содержащей только один символ – точку «.».
USER имя – ввод имени пользователя
PASS пароль – ввод пароля, используется после положительного ответа на команду USER
STAT – используется для просмотра состояния текущего почтового ящика. Возвращает количество сообщений в почтовом ящике и их общий объём.
LIST – просмотр информации об объёме каждого сообщения в почтовом ящике. Возвращает для каждого сообщения его номер (постоянный в течение всего сеанса) и размер в байтах
RETR номер – получение сообщения с указанным номером
TOP номер_письма количество_строк – получить только заголовок и первые несколько строк указанного письма.
DELE номер – удалить сообщение с указанным номером из почтового ящика. Письма на самом деле не удаляются до завершения сессии, а только помечаются как удалённые.
RSET – отменить удаление писем. Если в текущей сессии некоторые письма помечены как удалённые, пометка снимается.
QUIT – закрыть POP3-сессию
Пример работы с POP3-сервером:
+OK Dovecot (Debian) ready.
USER stud2
+OK
PASS stud
+OK Logged in.
list
+OK 1 messages:
1 633
.
RETR 1
+OK 633 octets
Return-Path: <stud1@isit>
X-Original-To: stud2@isit
Delivered-To: stud2@isit
Received: from isit (unknown [192.168.50.94])
by isit (Postfix) with SMTP id BE98220111
for <stud2@isit>; Sun, 28 May 2023 00:25:12 +0300 (+03)
FROM: "STUD 1" <stud1@isit>
TO: "STUD 2" <stud2@isit>
SUBJECT: Моё первое письмо
Привет! Это мое первое тестовое письмо.
Если ты его читаешь, это значит я правильно использовал
команды протокола SMTP для отправки электронного письма.
До свидания.
.
DELE 1
+OK Marked to be deleted.
quit
+OK Logging out, messages deleted.
Задания
Изучить информацию о протоколах SMTP и POP3.
Подключиться к SMTP-серверу с помощью программы PuTTY или Netcat. Адрес SMTP-сервера 192.168.11.119, порт 25. Отослать письмо на свой ящик (имя пользователя: “stud[номер_компьютера]@isit”).
Подключиться к POP3-серверу (адрес 192.168.11.119, порт 110, имя пользователя “stud[номер_компьютера]”, пароль “stud”). Получить ранее посланное письмо (команды LIST и RETR). Выделить из полученной информации заголовок и текст письма. Объяснить содержимое заголовка.
Отослать письмо соседу слева, указав дополнительную информацию в заголовке письма (заполнить поля «From:», «To:», «Date:», «Subject»).
Получить заголовок нового письма. Определить, от кого получено письмо и размер письма.
Получить письмо полностью.
Отослать письмо нескольким адресатам одновременно.
Определить сколько новых писем получено (команда STAT). Просмотреть все новые письма. Очистить ящик (команда DELE).