Скачиваний:
9
Добавлен:
25.06.2023
Размер:
3.77 Mб
Скачать

ВОПРОС 51 ПРОТОКОЛ SMTP С2 smtp расшифровывается simple mail transfer protocol - простой протокол передачи почты. smtp и создали в 1982 году, он использовался без изменений в течении очень долгого времени, и расширенные версии smtp - Esmtp вышла в 2008 году. эта версия используется сейчас. С3 протокола smtp используется при передаче электронной почты. возможны два варианта использования протокола smtp. при передаче почты от агента пользователя почтовому серверу, и при передаче писем между почтовыми серверами. для чтения почты используются не протокол smtp, а другие протоколы - pop3 и imap. С4 в стеке протоколов TCP протокол smtp находится на прикладном уровне. С5 теоретически SMTP может работать с любыми протоколами транспортного уровня TCP, UDP или даже какой-нибудь другой протокол. за SMTP стандартами закреплено два номера порта. порт 25 для передачи почте между серверами, и порт 585 для передачи почты от почтового клиента на сервер. однако на практике почти всегда используется всего лишь один транспортный протокол TCP и порт 25. С6 электронное письмо состоит из 3 частей - это конверт, заголовки и тело письма. команды протокола smtp находится только в конверте. именно конверт используются при передаче почты между серверами и почтовыми клиентами и данные в конверте и определяются как почта будет передаваться. заголовки и тело письма формально не являются частью протокола smtp, они задаются в отдельном коменте rfc 2822. но так как заголовки используются при передаче писем мы тоже их рассмотрим. С7 протокол smtp также как и протокол HTTP работает в текстовом режиме. это означает что вы нет специального формата пакета. клиент и сервер взаимодействуют друг с другом в режиме запрос-ответ, передавая друг другу обычные текстовые строки. С8 команды smtp состоят из четырех символов. никакой особенной причины для этого нет, просто разработчики протокола выбрали такую длину команд. основные команды перечислены здесь, есть также и другие команды, но они используются значительно реже. команда HELO с 1 л, так как длина команд и SMTP теперь четыре символа, используется для установки соединения. при этом клиент должен указать свой домен или свой почтовый адрес. команда mail используется для того чтобы задать адрес отправителя. полный формат команды mail from двоеточие адрес отправителя. команда RCPT сокращение от recIPient - используется для задания адреса получателя. полный формат команды RCPT TO и затем почтовый адрес получателя. одно и то же письмо можно передать нескольким получателям. для этого нужно использовать команду RCPT несколько раз. команда DATA используется для того чтобы сообщить принимающему серверу что конверт закончился и дальше пойдет письмо. команда QUIT служит для разрыва соединения с сервером после того как передача письма закончена. С9 а также как и протоколу http smtp использует ответы состоящие из двух частей - код сообщения, который говорит о том что произошло, и некоторое текстовое сообщение, поясняющие что именно произошло и больше предназначенное для людей, чем для серверов. коды сообщений которые начинаются на двойку говорят о том что предыдущая команда выполнена успешно. коды сообщения которые начинаются на тройку говорит о том что текущее состояние успешное, но для продолжения работы требуются дополнительные данные. например ответ с кодом 354 выдается после того как клиент вел команду DATA - сервер приглашает клиента вводить письмо, и закончить письмо строчкой где находится одна точка. сообщения которые начинаются на 5 говорят о том что произошла какая-то ошибка. например код сообщения 502 означает использование нереализованной команды, а 503 не правильную последовательность команд. так как текст сообщение которые должны быть в ответе не входят стандарт, а для автоматической обработки используется только коды, то в некоторой реализации серверов используют различные смешные сообщения в ответах. C10 В заголовке письма (формально они не являются частью стандарта smtp) наверняка большинство этих заголовков уже знакомы - заголовок From используется для указания отправителя, причем в отличии от команды mail from протокола smtp в заголовке письма from можно указывать не только почтовый адрес но и имя отправителя, заголовок To используется для указания получателя, CC получателя копии письма, BCC указывает такого получателя кому нужно отправить копию, но при этом скрыть от других получателей что копия письма он была ему отправлена. заголовок Reply-to используется для того чтобы указать адрес на которые нужно отвечать, этот адрес может отличаться от того адреса который указан в заголовке From Subject используется для указания темы письма, а Date для указания даты отправки письма. С11 пример сеанса и smtp который используется для отправки письма. подключаемся к почтовому серверу по адресу smtp.example.ru на 25 порт. выдаём команду HELO в которой указываем свой домен. сервер отвечает сообщением со статусом 250 - это означает что соединение установлено. и в текстовом сообщении сервер еще раз пишет свое доменное имя. выдаем команду mail from: - для указания адреса отправителя. сервер снова отвечают сообщением со статусом 250, текстовая часть сообщения ok - команда выполнена успешно, затем задаем адрес получателя письма с помощью команды RCPT To: reciever@example.ru сервер снова отвечают сообщением 250 окей, и мы выдаем команду DATA для ввода письма. ответ сервера 354 - приглашение вводить текст письма, которое должно закончиться отдельной строкой, содержащий одну точку. С12 само письмо состоит из двух частей - заголовок и тело сообщения. тело сообщения должно быть отделено от заголовка пустой строкой. здесь мы используем заголовок From адрес отправителя, причем указываем не только почтовый адрес но и имя, и заголовок subject, который используется для указания тем. пример smtp - пустая строка отделяет заголовки от тела сообщения. тело состоит из двух строк: привет мир e-mail, и привет smtp. завершается письмо строкой в которой находится одна точка. эта строка не является частью письма и будет удалена при передаче. если вам по какой-то причине нужна в письме строка в которой находится всего лишь одна точка, вы должны указать две точки одна из этих точек будет удалена при передаче. после того как введена точка сервер понимает что письмо закончено и выдает сообщение со статусом 250 ok. сообщение поставлено в очередь для передачи. мы выдаем команду QUIT для того чтобы закончить сеанс связи. сервер отличается общением со статусом 221 пока. С13 в 2008 году появилось расширение smtp котороя называется Extended smtp или ESMTP. там появились новые команды. вместо команды HELO предлагается использовать команду и EHLO сокращение от extended HELO, если мы хотим использовать расширенную версию smtp, то при установке соединения вместо команды HELO мы должны указывать команду EHLO. некоторые примеры других новых команд - команда STARTTLS используется для того чтобы начать зашифрованное соединение. команда SIZE может использоваться для того чтобы узнать максимальный размер письма который принимает почтовый сервер. команда DSN применяется для того чтобы получить подтверждение о доставке письма. другое важное изменение в расширенной версии протокола smtp это возможность использования 8-битных наборов символов. в обычном SMTP можно использовать коды символов состоящий из 7 бит. это английские буквы, цифры и другие символы из набора ASCII. для того чтобы передавать русские буквы по протоколу smtp необходимо было применять специальные ухищрения. в расширенной версии smtp ничего такого делать не надо. можно передавать русские буквы напрямую. С14 если мы хотим использовать расширенную версию протокола smtp, то для установки соединения мы должны использовать команду EHLO, и после нее указывать домен отправителя так же как и для обычной команды HELO. при получении этой команды почтовый сервер понимает что мы хотим использовать расширенную версию протокола smtp, и он выдает нам перечень команд расширенной версии, которые он поддерживает. например сервер поддерживает шифрование с помощью операции STARTTLS , он сразу указывает максимальный размер письма которое принимает. можно получить подтверждение о доставке, и так же можно использовать другие команды. дальше в расширенной версии smtp можно использовать все те же команды которые используются в обычном SMTP. mail from, RCPT TO и DATA. С15 протокол smtp разрабатывался очень давно, и к сожалению он не содержит никаких механизмов для защиты данных. адреса которые вы водите в поля mail from в конверте, и From в заголовке никак не проверяются. во-первых значение этих полей могут отличаться друг от друга, во вторых можно использовать любой почтовый адрес, не обязательно ваш, в том числе другие люди, если знают ваш email адрес, могут подставить его в эти поля, и отправлять почту якобы от вашего имени. по умолчанию протокол smtp не используют шифрование, и все письма, которые передаются через интернет, могут быть прочитаны. в расширенной версии протокола smtp появилась возможность использовать шифрование с помощью команды STARTTLS, но эту возможность мало кто использует. другая проблема которая связана с электронной почтой это спам. - рассылка нежелательных сообщений, как правило рекламных. протокол smtp не содержит никаких механизмов защиты от спама. но современные почтовые серверы пытаются использовать внешние механизмы. например когда клиент подключился к почтовому серверу, выда команду HALO, указал свое доменное имя, почтовый сервер выполняет проверку соответствия этого доменного имени IP адресу клиента. для этого почтовый сервер выполняют реверсивный DNS запрос на IP адрес с которого подключился клиент, и сравнивает полученное доменное имя с тем который указал клиент в команде HELO. если доменные имена отличаются, то в зависимости от настроек почтовый сервер может не принять сообщение. многие почтовые серверы настроены так чтобы принимать почту только для локальных пользователей, то есть для тех у которых есть почтовые ящики в том домене которой они обслуживают. серверы которые работают в другом режиме и позволяют передавать почту на любые e-mail адреса в интернете называются открытые релеи. спамеры с помощью специальных программ ищут открытые релеи в интернете и используют их с помощью массовой рассылки писем. если почтовый сервер работает в режиме открытого релея, это серьезная недоработка администратора этого сервера. также сейчас есть возможность проверки адреса отправителя с помощью цифровой подписи, для этого также используются взаимодействие с системой DNS. в DNS записях специального вида хранится открытый ключ электронные подписи для данного домена, и этот открытый ключ можно использовать для проверки подлинности адреса отправителя. С16 итак мы рассмотрели протокол smtp - простой протокол передачи почты. он используется для передачи почтовых сообщений от агента пользователя на почтовый сервер, или для передачи почты между разными почтовыми серверами. электронное сообщение состоит из 3х частей - конверт, заголовки и тело сообщения. команды smtp используется только в конверте. smtp действительно простой протокол. он работает в текстовом режиме и для передачи письма достаточно всего лишь 5 команд. HELO либо extended HELO, MAIL FROM, RCPT TO, DATA, QUIT.

ВОПРОС 52 ПРОТОКОЛ POP3 С2 расшифровывается post office protocol - протокол почтового отделения. это достаточно старый протокол. первая версия появилась в 1984 году, в следующем году вышла вторая версия протокола, и вскоре после этого появилась третья версия в 1988 году. в 96г протокол pop3 был расширен новыми механизмами аутентификации, а также так называемыми расширениями, которые позволяли добавлять в протокол новые команды. сейчас используются третья версия протокола pop, а первая и вторая считаются устаревшими. С3 протокол pop3 используется для чтения почты предназначенной для конкретного пользователя из хранилища сообщений. письма в хранилище доставляются по протоколу SMTP. С4 протокол pop3 работает по модели загрузить и удалить. согласно этой модели почтовый ящик на сервере является лишь временным хранилищем информации, постоянно письма хранятся только на компьютере клиента. поэтому все письма должны быть переписаны на клиент и работа с ними происходит только на клиенте. после загрузки письма его необходимо удалить с сервера так как протокол pop3 не позволяет узнать загружали мы это письмо раньше или нет. преимущество pop3 заключается в том что это очень простой протокол, а также то что ваши письма доступны вам даже если у вас нет подключения к интернет. существенным недостатком pop3 являются возможность работы только одного почтового клиента, который удаляет все письма сразу после того как загрузил себе, хотя некоторые современные реализации серверов Pop3 позволяют сохранять сообщение даже после того как они были прочитаны, но в этом случае мы не можем определить на сервер пришло новое письмо или мы его уже читали. другим недостатком является то что pop3 считает почтовый ящик единым хранилищем писем. нет возможности создавать папки, настраивать фильтры чтобы сообщение автоматически и попадали в эти папки, как-то помечать письма и выполнять другие подобные действия. в протоколе pop3 все это можно делать только средствами почтового клиента. С5 в стеке протоколов TCP/IP протокол pop3 находится на прикладном уровне. C6 Pop3 используют протокол TCP и 110 порт. С7 при работе по протоколу pop3 клиент проходит через три состояния. первое состояние это авторизация - клиент должен указать имя пользователя и подтвердить что он именно тот за кого себя выдает. чаще всего для этого используется пароль. если авторизация прошла успешно, клиент переходит на стадию транзакции. на этой стадии клиент загружает письма с сервера, и помечает письма которые он загрузил на удаление. однако реально сообщения не удаляются. удаление сообщений происходит на стадии обновления. клиент говорит серверу что он выполнил все полезные действия и готов отключится. только после этого сервер удаляет помеченные сообщения и закрывает соединение. это сделано для того чтобы не потерять письма в результате сбоя в работе почтового клиента. клиент переходит на стадию обновления только после того как убедится что все сообщения загружены и их можно безопасно удалять с сервера. если в процессе загрузке произошла ошибка в работе клиента, то сервер не будет удалять помеченное сообщение, и их можно будет загрузить в следующий раз. С8 протокол pop3, также какие многие другие протоколы прикладного уровня, например smtp или http работают в текстовом режиме. также как и в SMTP взаимодействие происходит в режиме запрос-ответ. при этом клиент и сервер пересылают друг другу обычные текстовые строки. каких-либо специальных форматов пакетов не используется. С9 рассмотрим команды протокола pop3. команды USER и PASS (сокращение от password) используются на стадии авторизации для того чтобы указать имя пользователя к почтовому ящику которого мы хотим подключиться, и ввести пароль для защиты от несанкционированного доступа. следующие команды выполняются на стадии транзакции. их выполнение возможно только если стадия авторизации прошла успешно. команда STAT показывает общее количество писем на почтовом сервере. команда LIST показывает информацию о сообщениях.

без параметров команда лист показывает информацию обо всех сообщениях, если указать номер конкретного сообщения, то выдастся информация только о нем. команда RETR от слова retrif служит для передачи сообщения с сервера на клиент. этой команде необходимо указать номер сообщение которое мы хотим загрузить. также есть команда TOP, которая похожа на команду RETR, но передает не полностью все сообщение, а только заголовки. команде TOP также необходимо указать номер сообщения заголовки которого мы хотим загрузить, а также необязательный второй параметр, который содержит количество строк основного письма, например 10, если второй аргумент не указать, то будут загружены только заголовки, а из основной части письма передаваться ничего не будет. команда DELE, сокращение от delete, используется для того чтобы пометить на удаление сообщения которые были загружены командой RETR. команда QUIT служит для завершения стадии транзакции и переход на стадию обновления. выполняя команду QUIT клиент подтверждает что все необходимые сообщения загружены на клиент, и те сообщения которые помеченные на удаление могут быть безопасно удалены с сервера. после выполнения команды quit соединение разрывается. С10 в pop3 всего лишь два варианта ответа на команды ответ +OK свидетельствует об успешном завершении команды. -ERR говорит о том что произошла ошибка. так же как в протоколах smtp и http после статуса ответа может следовать какое-то текстовое сообщение, которое предназначено для людей, а не для автоматической обработки. С11 рассмотрим пример сеанса загрузки электронной почты по протоколу pop3. мы подключаемся к серверу pop3, устанавливаем TCP соединение с портом 110. сервер отвечают сообщением со статусом +OK - сервер pop3 готов. сначала необходимо пройти авторизацию, для этого используется команда USER, где указывается имя пользователя. в ответ сервер передает сообщение со статусом +OK, и говорит что у данного пользователя есть почтовый ящик на этом сервере. затем мы передаем пароль с помощью команды PASS, сервер отвечает сообщением со статусом +OK - команда выполнена успешно - почтовый ящик заблокирован и готов для работы. протокол pop3 рассчитан на работу только с одним клиентом, поэтому после того как прошли стадию авторизации почтовый ящик блокируется и никакой другой клиент не может подключиться пока мы не выйдем из соединения с помощью команды QUIT. после успешной авторизации начинается стадия транзакций. сначала хотим узнать сколько всего сообщений в ящике. для этого используется команда STAT. сервер отвечает сообщением +OK - команда выполнена успешно, писем в ящике 311 штук, общий размер почтового ящика в байтах. затем мы получаем список всех сообщений с помощью команды LIST. команда LIST выводит перечень сообщений - указывается номер сообщения, и его размер. на слайде указанна информация только двух письмах, на самом деле в выводе информация о 311 письмах, и завершаются вывод команды LIST точкой. после того как мы узнали сколько у нас есть сообщение какой их размер мы можем загрузить их на клиент. С12 для этого используется команда RETR, указываем номер сообщения которое хотим загрузить. сервер отвечают сообщением +OK, и передает письмо. письмо передается в том формате который мы рассматривали на лекции по протоколу SMTP. сначала заголовки, потом тело сообщения. после того как сообщение загружено мы можем пометить его на удаление с помощью команды DELE. В ответ сервер выдает сообщение + OK - команда выполнена успешно. сообщение помечено на удаление. таким же образом мы можем загрузить оставшиеся 310 сообщений. после того как мы загрузим все письма которые нам нужны, мы выдаем команду quit. на этом стадии транзакции заканчиваются и начинается стадия обновления. сообщение которые помечены на удаление удаляются, и сервер разрывает соединение. С13 итак мы рассмотрели протокол pop3 post office protocol v3. протокол почтового отделения. этот протокол используется для чтения электронной почты из почтового ящика пользователя. протокол использует подход "загрузить и удалить". при этом считается что почтовый ящик на сервере это только временное хранилище сообщений, их необходимо загрузить на почтовый клиент для работы в оффлайн режиме. следствием такого подхода является возможность работы только одного клиента который загружает сообщение себе и сразу удаляет после загрузки. именно такой подход работы с электронной почтой был популярен в восьмидесятые и девяностые годы. электронную почту читали с одного компьютера. подключение к сети было нестабильным и часто дорогим. однако сейчас у нас совершенно другая схема взаимодействия с электронной почтой. как правило сейчас используется несколько почтовых клиентов. на компьютере, на планшете, на смартфоне, а также различные веб-версии почтовых клиентов. и мы хотели бы иметь доступ к своему почтовому ящику одновременно со всех почтовых клиентов. с помощью средств протокола pop3 этого сделать невозможно. поэтому на замену pop3 был придуман новый протокол imap. в этом протоколе электронная почта постоянно хранится на сервере вместо загрузки на клиент, и поддерживается одновременная работа нескольких почтовых клиентов.

ВОПРОС 53 ПРОТОКОЛ IMAP С2 IMAP расшифровывается internet message access Protocol - протокол доступа к электронной почте. часто считается что имам это более новый протокол по сравнению с pop3, но на самом деле он возник примерно в то же время что и протокол pop3. первая версия imap появилась в 1986 году. тогда протокола расшифровывается как interim mail access protocol. вторая версия вышла в 1988 году, название протокола было изменено на interactiv mail access protocol, в 1991 году появилась третья версия, и в 1994 четвертая версия протокола imap, которую мы используем до сих пор. спецификация четвертой версии протокола imap и была обновлена в 2003 году, кроме того после этого вышли некоторые расширения протокола imap 4, некоторые из них появились совсем недавно. С3 протокол imap также как и протокол pop3 используется для чтения электронной почты, которая уже пришла в почтовый ящик пользователя. для передачи почты используются не протокол IMAP, а протоколу smtp. С4 в отличие от протокола pop3, в котором почтовые клиенты загружают все письма к себе и сразу их удаляют сервера, в протоколе IMAP письма постоянно хранятся на сервере. клиенты загружают не все письма сразу, а только те которые пользователь явно запросил. кроме этого есть возможность синхронизации при которой почтовый клиент переписывается себе все письма с сервера, но не удаляют их. IMAP сервер в отличие от pop3 сервера может выполнять с письмами достаточно сложные действия, например выполнять поиск в письмах по заданному шаблону. преимущество протокола imap заключается в том что с почтовым ящиком может одновременно работать несколько клиентов, и это соответствует современной модели работы с электронной почтой. у нас у всех есть несколько устройств, некоторые из них мобильные, и мы хотим видеть единое состоянии почтового ящика с помощью всех этих устройств. с другой стороны для того чтобы это обеспечить требуется протокол гораздо более сложный чем pop3. повышенная сложность является существенным недостатком протокола IMAP. другой недостаток заключается в том что дисковое пространство на сервере как правило ограничено, таким образом приходится удалять письма из почтового ящика чтобы он не переполнился. С5 в стеке протоколов TCP/IP протокол imap находится на прикладном уровне. С6 IMAP использует протокол транспортного уровня TCP. сервер IMAP работает на 143 порту. С7 в отличие от протокола pop3 протокол IMAP позволяет использовать несколько так называемых почтовых ящиков mail box, или по-русски их чаще называют папками. папки хранятся на сервере, они могут быть вложены друг в друга, и письма можно перемещать между разными папками. в протоколе pop3 создание папок и фильтрация сообщений используются локально с помощью почтовых клиентов. В IMAP есть папка специального типа inbox - это почтовый ящик пользователя по умолчанию. именно туда записываются все входящие письма. затем можно выполнять их сортировку с помощью почтовых клиентов либо с помощью специальных программ. С8 другое отличие протокола imap от протокола pop3 это использование флагов. именно благодаря флагам протокол imap позволяет узнать прочитано это сообщение или нет, а также много другой полезной информации. флаги в IMAP это небольшая метка (англоязычный термин token) которая добавляется к письму. письмо может иметь несколько меток или не иметь ни одной. флаги в IMAP бывают двух типов - системные и пользовательские. системные флаги и их назначение заданны в стандарте IMAP и они начинаются с обратного слеша. флаг Seen означает что сообщение было просмотренно. флаг Answered что на сообщение был отправлен ответ. флаг Flagged говорит о том что у сообщения повышенная влажность, и на него нужно ответить как можно быстрее. флаг Draft говорит о том что письмо не закончено и является черновиком. флаг Deleted используется для пометки сообщений на удаление. и флаг Recent говорит о том что сообщение новое, при предыдущих подключениях клиента этого сообщения не было. также могут создаваться пользовательские флаги и пользовательские флаги не могут начинаться с символа обратного слэша. примеры пользовательских флагов рассмотрим позднее. С9 при работе по протоколу imap клиент проходит через четыре состояния. первое состояние - клиент не аутентифицирован - not authenticated. клиент только что подключился к серверу IMAP и ему необходимо ввести свой логин и пароль, либо пройти аутентификацию каким-либо другим способом. следующее состояние - клиент аутентифицирован - authenticated - это означает что клиент успешно прошел аутентификацию, подтвердил что он именно тот за кого себя выдает, но пока не выбрал папку с которой он будет работать. при выборе папки происходит переход в следующее состояние - папка выбрана или selected - после этого можно читать сообщения которые находятся в этой папке и выполнять с ними требуемые действия. четвертое состояние - выход - разрыв соединения. С10 протокол imap так же как и другие почтовые протоколы работает в текстовом режиме и использует взаимодействие запрос-ответ. однако существенным отличием является то что IMAP позволяет выполнять одновременно несколько команд. некоторые команды в IMAP могут работать достаточно долго. например поиск какого-то письма в большом почтовом ящике где много писем, массовое обновление писем, или другие подобные операции. клиент может не дожидаться выполнения текущей команды, а запустить другую команду. для того чтобы отличать разные команды и ответы на них в протоколе IMAP используются идентификаторы или теги команд. это просто алфавитная цифровая строка, например А0001 А0002 , каждая команда клиента должна начинаться с тега. сервер включает этот тег в ответ на команду для того чтобы можно было определить к какой именно команде этот ответ относится. С11 ответ IMAP, так же как у других почтовых протоколов, состоит из двух частей - статус и поясняющие сообщения. статусов ответов в IMAP всего лишь три: OK, NO, BAD. OK означает команда выполнена успешно. NO - при выполнении команды произошла ошибка. BAD означает что клиент запустил неправильную команду или указал неправильные недостаточные аргументы. C12 команд в протоколе IMAP очень много, поэтому не буду перечислять их все. рассмотрим пример сеанса "чтение писем". подключаемся к серверу IMAP с использованием соединения TCP-порт 143. сервер выдает сообщение со статусом OK - сервер готов. сеанс находится в состоянии preauthenticated - клиенту необходимо пройти аутентификацию. для этого используется команда LOGIN. в отличие от протокола pop3 в команде LOGIN указывается одновременно имя пользователя и его пароль. важно обратить внимание что перед началом команды клиент указывает метку А0001. в ответ сервер выдает сообщение с той же самой меткой - статус сообщения OK, команда выполнена успешно, поясняющее сообщение - USER прошел аутентификацию. сейчас мы находимся в состоянии "аутентификация пройден", и необходимо выбрать папку с которой хотим работать. для того чтобы получить список всех папок используется команда LIST. мы видим перечень папок - основная папка inbox. именно она считается основным почтовым ящиком пользователя и в нее доставляются все письма. у этой папке есть вложенные папки. папка Drafts - черновики, Junk - спам, sent - отправленные письма, Trash - корзина. завершается вывод ответом сервера со статусом выполнения команды OK Completed и номером метки A0002 указывающую какой команде относится ответ. С13 следующий этап сеанса IMAP это выбор папки из который мы хотим читать письма. для этого используется команда SELECT. выбираем папку inbox. сервер показывает нам возможные флаги. кроме знакомых нам системных флагов есть флаг Forwarded, который говорит о том что сообщение кому-то переслали, а также флаги Jank и NonJank - сообщение является спамом или не является спамом. С14 для того чтобы посмотреть какие сообщения есть на сервере используется команда FETCH - ей необходимо указать номер письма с которым мы хотим работать, либо диапазон через двоеточие. диапазон от единицы до звездочки говорил о том что мы хотим получить информацию обо всех письмах. затем указывается какую именно информацию мы хотим получить. сначала мы хотим посмотреть флаги. в ответ сервер выдает перечень писем с флагами. некоторые письма мы уже смотрели (Seen), на некоторые отправили ответ(Answered), нижние три письма (Recent) мы видим в первый раз. письмо у которого не установлен флаг Seen и Recent было на сервере. в прошлый раз когда мы к нему подключались, но его не посмотрели. С15 для того чтобы посмотреть письмо используется та же самая команда FETCH, указываем номер письма - 180 (последнее письмо которое пришло) и что именно мы хотим посмотреть - тело сообщение полностью - боди с двумя квадратными скобками. сначала показываются флаги сообщения (что сервер автоматически установил у сообщений флаг Seen - означает что оно была просмотрено), а после этого выводится само тело сообщения. мы посмотрели сообщение или передали его на клиент. предположим что мы решили в сообщении нет ничего интересного и его нужно удалить. для этого необходимо установить флаг Deleted, и это делается с помощью команды STORE которой нужно указать номер сообщения - 180, что именно мы хотим сохранить - хотим установить флаг +flags, и какой именно флаг хотим установить - Deleted. результат выполнения команды - у сообщения номер 180 установлен флаг Deleted в дополнение к двум с флагам которые уже были установлены - Recent и Seen. в IMAP также как и в pop3 сообщений не удаляются сразу после того как они были помечены на удаление. С16 В IMAP для этого используется специальная команда EXPUNGE. после того как эта команда запущена из папки удаляются все сообщения которые были помечены на удаление. если не запустить эту команду, а просто разорвать соединение, то в отличие от протокола pop3 сообщения удалены не будут. для разрыва соединения используется команда LOGUOT. сервер отвечает что получена команда LOGUOT, говорит нам BYE и выдает ответ OK - команда выполнена. после этого соединение разрывается. С17 в протоколе IMAP имеется большое количество других команд. есть команды работы с папками которые позволяют создавать новые папки, удалять их, переименовывать, получать статус. есть команды для перемещения писем. команда COPY которая являются частью стандарта протокола imap 4, которая позволяет копировать письмо из одной папки в другую, и новая команда MOVE, которая являясь расширением стандарта IMAP принятом в 2013 году позволяет перемещать сообщение из одной папки в другую. с помощью команду SEARCH можно искать письма на сервере по требуемому шаблону. интересная команда CLOSE - выполняет закрытие папки, удаление в папке всех сообщений которые помечены на удаление, и переход состояние autenticated. в этом состоянии клиент может выбрать другую папку и продолжить работу с ней. эти команды, а также те команды которые мы перед этим рассматривали, могут использовать большое количество разных аргументов. для того чтобы разобраться с ними подробно придется изучать документацию или стандарт протокола imap потому что в лекцию уместить все это невозможно. С18 итак мы рассмотрели протокол IMAP internet message access protocol - протокол доступа к электронной почте. он используется для чтения писем из почтового ящика пользователя. при этом все письма хранятся на сервере и с почтовым ящиком можно одновременно работать с нескольких устройств. все эти устройства будут видеть согласованное состоянии писем на сервере для отслеживания статуса сообщений в IMAP используются флаги. также IMAP для удобства организации сообщений позволяет создавать на сервере папки. недостатком протокола является то что он очень сложный. с одной стороны это обусловлено тем что задача которую пытались решить разработчики протокола действительно является сложной - нужно обеспечить одновременную работу с почтовым ящиком нескольких клиентов, причем эти клиенты могут выполнять запросы одновременно, в том числе конфликтующие между собой. с другой стороны протокол разрабатывался достаточно давно в конце 90-х начале 2000х годов, и тогда у разработчиков протоколов еще не было достаточно опыта. другой недостаток вызван тем что все почтовые письма всех пользователей хранятся на сервере, если пользователи много то серверу требуется большое количество дискового пространства. однако сейчас,когда жесткие диски стали большими и относительно дешевыми, это уже не является большой проблемой

Соседние файлы в папке ЛЕКЦИИ