Почтовый протокол imap кратко

Обновлено: 07.07.2024

IMAP и POP — это два метода доступа к электронной почте. Рекомендуется использовать IMAP, если вам требуется проверять почту с нескольких разных устройств (например, телефона, ноутбука и планшета).

Отправленная почта хранится локально на компьютере с Windows или Mac OS, а не на почтовом сервере.

Многие поставщики услуг Интернета предоставляют учетные записи электронной почты, которые используют POP.

Учетные записи веб-почты или почтовые приложения

Добавление учетных записей веб-почты в почтовые приложения, такие как Outlook, Apple Mail, Thunderbird

Когда вы добавляете учетную запись электронной почты в почтовое приложение, оно пытается настроить доступ методом IMAP без вашего участия.

Трудности, которые могут при этом возникать у почтового приложения, обычно связаны с тем, что учетная запись настроена для доступа методом POP. В этом случае вам нужно перейти к поставщику услуг электронной почты и узнать имена pop- и SMTP-серверов, чтобы ввести данные в почтовое приложение. Эти сведения обычно выглядят как-то так:

IMAP
Международный стандарт: Internet Message Access Protocol
Уровень (по модели OSI): Прикладной
Семейство: стек протоколов TCP/IP
Порт/ID: 143/TCP, 993/TCP (IMAP over SSL)
Назначение протокола: Доступ к почтовым ящикам
Спецификация: RFC 3501
Основные реализации (клиенты): MUA (Outlook Express, Opera, Mozilla Thunderbird, The Bat!, Claws Mail, mutt)
Основные реализации (серверы): UW IMAP,
Courier,
Cyrus,
Dovecot
Вступил в силу с: 1986

IMAP (англ. Internet Message Access Protocol ) — протокол прикладного уровня для доступа к электронной почте. Базируется на транспортном протоколе TCP и использует порт 143. IMAP предоставляет пользователю обширные возможности для работы с почтовыми ящиками, находящимися на центральном сервере. Почтовая программа, использующая этот протокол, получает доступ к хранилищу корреспонденции на сервере так, как будто эта корреспонденция расположена на компьютере получателя. Электронными письмами можно манипулировать с компьютера пользователя (клиента) без постоянной пересылки с сервера и обратно файлов с полным содержанием писем.

Содержание

Область применения

Версии IMAP

  • Original IMAP
  • IMAP2
  • IMAP3
  • IMAP2bis
  • IMAP4
  • IMAP4rev1

Преимущества IMAP над POP3

Протокол POP требует, чтобы текущий клиент был единственным подключенным к ящику. IMAP позволяет одновременный доступ нескольких клиентов к ящику и предоставляет клиенту возможность отслеживать изменения, вносимые другими клиентами, подключенными одновременно с ним.

Недостатки IMAP

Множественный доступ к почтовым ящикам связан с рядом проблем, особенно, если информация в ящиках доступна для записи.

Протокол IMAP предполагает в основном работу пользователей с почтовыми ящиками непосредственно на сервере, в отличие от протокола POP3, который ориентирован на то, что клиент забирает пришедшую почту и разбирает ее уже на своей машине. Это делает IMAP неудобным для пользователей, подключающихся к сети кратковременно, только для того, чтобы получить или отослать почту. При работе по протоколу IMAP клиенту желательно иметь доступ к сети все время, пока он работает с почтой.

Большие возможности, предоставляемые протоколом IMAP , создают большие сложности при разработке, настройке и эксплуатации серверов и клиентов.

Общие сведения

Символ, используемый в качестве иерархического разделителя, может различаться в зависимости от используемого на сервере программного обеспечения. Обычно это косая черта: / , если сервер работает под управлением операционной системы, совместимой с UNIX , обратная косая черта: \ для операционной системы Windows и точка для имен групп новостей USENET.

Клиент может выяснить, какие именно пространства имен для почтовых ящиков каких типов поддерживаются данным сервером IMAP , если сервер поддерживает расширение NAMESPACE. Префикс и иерархический разделитель конкретного имени почтового ящика или каталога можно выяснить при помощи команды LIST.

Состояния сервера

Сервер IMAP ожидает соединения от клиентов на порту TCP 143. После установления соединения сервер посылает свое приветствие клиенту, и начинается диалог, в котором клиент посылает серверу команды, а сервер сообщает о результатах их выполнения или присылает затребованную клиентом информацию. Как и сеанс POP3, сеанс IMAP делится на несколько состояний ( states ). Допустимый набор команд зависит от текущего состояния сеанса. Сеанс может находиться в одном из следующих состояний:

  • Неаутентифицированное состояние
  • Аутентифицированное состояние
  • Выбранное состояние
  • Состояние выхода
  1. Соединение без предварительной аутентификации
  2. Соединение с предварительной аутентификацией
  3. Отвергнутое соединение
  4. Успешная аутентификация
  5. Успешное выполнение команды SELECT или EXAMINE
  6. Команда CLOSE или неудачное завершение команды SELECT или EXAMINE
  7. Команда LOGOUT или потеря связи

Команды протокола IMAP

Команды клиента и ответы сервера IMAP

Команда клиента состоит из идентификатора (ярлыка) – короткой строкой, состоящей из букв и цифр, не повторяющейся в других командах в течение всего сеанса. За ярлыком следует сама команда и ее аргументы. Регистр символов в названиях команд, как и в большинстве аргументов, как правило, не имеет значения.

Кроме стандартных команд, которые обязательно должны поддерживаться, имеются также дополнительные команды, описанные в стандартах и поддерживаемые серверами IMAP как элементы расширений. Разработчики также могут добавлять в своих реализациях новые команды. Названия таких нестандартизированных команд должны начинаться с буквы Х. Имена стандартных команд с буквы Х начинаться не могут.

Все ответы сервера начинаются с метки, после которой следует отделенный пробелом текст.

В ответах сервера, сообщающих об исполнении команд, в качестве метки используется ярлык соответствующей команды. Это помеченные ответы. За ним следует одно из ключевых слов:

  • OK (успешное выполнение)
  • NO (невыполнение)
  • BAD (ошибка в команде)

Информация, передаваемая в команде или в непомеченном ответе, не обязательно должна укладываться в одну строку. Данные, которые передаются как продолжение команды или непомеченного ответа, называются литералом. На конце строки, которая должна быть продолжена литералом, ставится его размер в октетах, заключенный в фигурные скобки.

Сервер может передавать литерал, не дожидаясь разрешения клиента, клиент, прежде чем передавать литерал, должен дождаться разрешения – строки, начинающейся с метки "+". Например:

Команды, допустимые при любом состоянии сеанса IMAP

CAPABILITY

В ответ на эту команду сервер присылает непомеченную строку с ключевым словом CAPABILITY, содержащую список поддерживаемых возможностей (расширений) и их параметров. В число возможностей входит в частности поддерживаемая версия протокола IMAP – IMAP4rev1 и механизмы аутентификации. Возможности IMAP описываются в различных RFC или могут вводиться разработчиками. В последнем случае их названия должны начинаться с буквы Х. Названия стандартных возможностей с этой буквы начинаться не могут.

LOGOUT

Команды неаутентифицированного состояния

Клиент должен успешно аутентифицироваться, чтобы перейти в следующее состояние. Алгоритмы аутентификации для протокола IMAP не отличаются принципиально от рассматривавшихся в предыдущих главах алгоритмов аутентификации для протоколов SMTP и POP3.

Серверы IMAP могут допускать анонимный доступ к некоторым почтовым ящикам. Анонимный пользователь регистрируется под именем anonymous, в качестве пароля используется адрес электронной почты пользователя, имя его домена, произвольный набор символов или пустая строка. Анонимный доступ возможен как при передаче пароля открытым текстом, так и с использованием SASL. Возможности анонимного клиента должны быть строго ограничены, как правило, он не получает прав на изменение какой-либо информации на сервере.

STARTTLS

Перевод сеанса в защищенный режим. После получения сервером команды STARTTLS клиент и сервер согласовывают параметры дальнейшего взаимодействия. Все данные, которыми обмениваются клиент и сервер после успешного завершения этой команды, передаются в зашифрованном виде. Однако аутентификация при помощи этой команды не производится, сеанс остается в неаутентифицированном состоянии.

LOGIN

LOGIN регистрационное_имя_пользователя пароль

Аутентификация при помощи регистрационного имени и пароля, передаваемых открытым текстом.

AUTHENTICATE

AUTHENTICATE механизм

Передача зашифрованных аутентификационных данных с использованием SASL.

Команды аутентифицированного состояния

В аутентифицированном состоянии клиент производит различные манипуляции с почтовыми ящиками.

SELECT

SELECT имя_ящика

EXAMINE

EXAMINE имя_ящика

Аналогично команде SELECT , но почтовый ящик открывается только для чтения.

CREATE

CREATE имя_объекта

Создает новый почтовый ящик или каталог.

Если объект создается не в корневом каталоге, то надо указать путь к нему.

Если на конце указанного имени стоит символ, используемый в качестве иерархического разделителя, создается каталог.

DELETE

DELETE имя_ящика

Удаляет указанный почтовый ящик. Эта же команда удаляет также и каталоги, если они не содержат почтовые ящики.

RENAME

RENAME имя_ящика новое_имя_ящика

Переименование почтового ящика.

SUBSCRIBE

SUBSCRIBE имя_ящика

Почтовый ящик помечается как "активный". Эта пометка используется для вывода списка почтовых ящиков при помощи команды LSUB.

UNSUBSCRIBE

UNSUBSCRIBE имя_ящика

Снимает с почтового ящика пометку "активный". Эта пометка может быть снята с почтового ящика только при помощи команды UNSUBSCRIBE. Даже если ящик больше не существует, это не может само по себе стать причиной снятия пометки "активный".

LIST путь_к_ящику имя_ящика

Возвращает список каталогов и почтовых ящиков, соответствующих указанным аргументам.

В имени ящика могут использоваться групповые символы: * , обозначающий любые символы и % , обозначающий любые символы кроме иерархических разделителей.

Если имя ящика само по себе содержит полный путь к ящику, то первый аргумент игнорируется.

В ответ сервер присылает одну или несколько непомеченных строк с ключевым словом LIST. Каждая из них содержит атрибуты, если таковые имеются, иерархический разделитель и имя почтового ящика или каталога, отвечающего заданным в аргументах условиям. Атрибуты заключаются в скобки, иерархический разделитель – в кавычки.

RFC 3501 предусматривает четыре атрибута:

В описанном в RFC 3348 расширении CHILDREN предусмотрены еще два атрибута, позволяющие определить, содержит ли каталог почтовые ящики или подкаталоги:

  • \HasChildren – каталог содержит почтовые ящики или подкаталоги;
  • \HasNoChildren – объект не содержит почтовых ящиков или подкаталогов, доступных пользователю, аутентифицированному в данном сеансе.

Оставив пустым второй аргумент команды LIST , можно выяснить используемый в первом аргументе префикс пространства имен. В этом случае ответ сервера вместо имени ящика будет содержать имя корневого каталога, то есть префикс пространства имен с иерархическим разделителем на конце.

Если оба аргумента команды LIST пустые, то сервер возвращает только используемый по умолчанию иерархический разделитель.

LSUB путь_к_ящику имя_ящика

Команда LSUB аналогична команде LIST , но она возвращает только имена почтовых ящиков с пометкой "активный".

STATUS

STATUS имя_ящика (имена_элементов)

Возвращает запрошенные элементы информации об указанном почтовом ящике. Имена элементов информации разделяются пробелами и все вместе заключаются в скобки. Предусмотрены следующие имена элементов информации:

Ответ представляет собой непомеченную строку с ключевым словом STATUS , за которым следует имя опрашиваемого почтового ящика, после которого в скобках перечисляются имена запрошенных элементов и их числовые значения.

Команды выбранного состояния

CHECK

Команда производит проверку выбранного почтового ящика, характер которой зависит от реализации программного обеспечения сервера.

CLOSE

EXPUNGE

SEARCH

SEARCH кодировка_символов критерии_поиска

Необязательный первый аргумент команды состоит из слова "CHARSET" и названия кодировки, используемой в критериях поиска. Кодировку нужно указывать, только если она отличается от стандартной US-ASCII.

Второй аргумент содержит один или более критериев поиска.

Критерий поиска состоит из ключевого слова и аргумента. Критерии также можно объединять, заключая в скобки. Это бывает удобно при использовании ключевых слов NOT и OR.

FETCH

Во втором аргументе перечисляются запрашиваемые информационные элементы.

COPY х:у имя_ящика

IMAP расшифровывается, как Internet Message Access Protocol это протокол доступа к электронной почте. IMAP и протокол РОР3 возникли в одно тоже время .

p, blockquote 1,0,0,0,0 -->


p, blockquote 2,0,0,0,0 -->

Первая версия появилась в 1986 году, тогда протокол расшифровывался, как Interim Mail Access Protocol. Вторая версия вышла в 1988 году, название протокола было изменено на Interactive Mail Access Protocol. В 1991 году появилась третья версия, и в 1994 году четвертая версия протокола IMAP4, которую мы используем до сих пор. Спецификация чертой версии протокола IMAP была обновлена в 2003 году, после этого вышли дополнительные расширения протокола IMAP4.

p, blockquote 3,0,0,0,0 -->

Архитектура электронной почты

Протокол IMAP, также как и протокол РОР3 используется для чтения электронной почты, которая уже пришла в почтовый ящик пользователя. Для передачи почты используется протокол SMTP, а не IMAP.

p, blockquote 4,0,0,0,0 -->

Архитектура электронной почты

p, blockquote 5,0,0,0,0 -->

Протокол IMAP

В отличие от протокола РОР3 в котором почтовые клиенты загружают все письма к себе и сразу их удаляют с сервера, в протоколе IMAP письма постоянно сохраняются на сервере. Клиенты загружают не все письма сразу а только те, которые пользователи явно запросил, кроме этого есть возможность синхронизации, при которой почтовый клиент, переписывает все письма с сервера но не удаляет их. IMAP сервер в отличие от РОР3 сервера, может выполнять с письмами вполне сложные действия, например выполнять поиск писем по заданному шаблону.

p, blockquote 6,0,0,0,0 -->

Преимущества протокола IMAP заключается в том, что с почтовым ящиком может одновременно работать несколько клиентов, и это соответствует современной модели работы с электронной почтой. У нас у всех есть несколько устройств, некоторые из них мобильные и мы хотим видеть единое состояние почтового ящика с помощью всех этих устройств.

p, blockquote 7,0,0,0,0 -->

С другой стороны, для того чтобы это обеспечить требуется протокол гораздо более сложный, чем РОР3. Повышенная сложность является существенным недостатком протокола IMAP. Другой недостаток заключается в том, что дисковая пространство на сервере, как правило ограничено, таким образом приходиться удалять письма из почтового ящика, чтобы он не переполнился.

p, blockquote 8,0,0,0,0 -->

Место в стеке TCP/IP

В стеке протоколов TCP/IP протокол IMAP находится на прикладном уровне.

p, blockquote 9,0,0,0,0 -->

Место протокола imap в стеке tcp

p, blockquote 10,0,0,0,0 -->

IMAP использует протокол транспортного уровня TCP. Сервер IMAP работает на 143 порту.

p, blockquote 11,0,0,0,0 -->

Папки (mailbox)

В отличие от протокола РОР3, протокол IMAP позволяет использовать несколько почтовых ящиков (mailbox) или по-русски папки.

p, blockquote 12,0,0,0,0 -->

Папки хранятся на сервере, они могут быть вложены в друг друга и письма можно перемещать между разными папками.

p, blockquote 13,0,0,0,0 -->

p, blockquote 14,0,0,0,0 -->

Флаги

p, blockquote 15,0,0,0,0 -->

Флаги в IMAP это небольшая метка (token) которая добавляется к письму. Письмо может иметь несколько меток или не иметь ни одной. Флаги в IMAP бывают двух типов: Системные и Пользовательские.

p, blockquote 16,0,0,0,0 -->

Системные флаги и их назначения заданы в стандарте IMAP и они начинаются с обратного слеша (\).

Также могут создаваться Пользовательские флаги. Они не могут начинаться с символа \.

p, blockquote 18,0,0,0,0 -->

Состояния сеанса IMAP

При работе по протоколу IMAP клиент проходит через четыре состояния.

Протокол IMAP, также как и другие почтовые протоколы работают в текстовом режиме и использует взаимодействие запрос-ответ. Однако существенным отличием является то, что IMAP позволяет выполнять одновременно несколько команд. Некоторые команды IMAP могут работать достаточно долго, например, поиск какого-то письма в большом почтовом ящике, где много писем, массовое обновление писем или другие подобные операции. Клиент может не дожидаться выполнения текущей команды, а запустить другую команду.

p, blockquote 20,0,0,0,0 -->

Для того чтобы отличать разные команды и ответы на них, в протоколе IMAP используются идентификаторы или теги команд. Это просто алфавитно-цифровая строка (А0001,А0002). Каждая команда клиента должна начинаться с тега. Сервер включает этот тег в ответ на команду, для того чтобы можно было определить к какой именно команде этот ответ относится.

p, blockquote 21,0,0,0,0 -->

Ответы IMAP

p, blockquote 22,0,1,0,0 -->

  • OK- означает, что команда выполнена успешна;
  • NO – при выполнении команды произошла ошибка;
  • BAD — означает, что клиент запустил неправильную команду или указал неправильные или недостаточные аргументы.

Пример сеанса IMAP

Команд в протоколе IMAP очень много, поэтому мы не будем перечислять их все.
Рассмотрим пример сеанса чтение писем. Подключаемся к серверу IMAP с использованием соединения TCP порт 143.

p, blockquote 24,0,0,0,0 -->

пример кода imap

p, blockquote 25,0,0,0,0 -->

p, blockquote 26,0,0,0,0 -->

A0001 LOGIN username password // клиенту необходимо пройти аутентификацию, для этого используется команда LOGIN, в отличие от протокола РОР3 в команде LOGIN указываются одновременно имя пользователя и его пароль. Обратите внимание, что перед началом команды клиент указывает метку А0001

p, blockquote 27,0,0,0,0 -->

p, blockquote 28,0,0,0,0 -->

p, blockquote 29,0,0,0,0 -->

A0002 LIST “” “*” // для того чтобы получить список всех папок используется команда LIST.

p, blockquote 30,0,0,0,0 -->

* LIST (\ HasChildren) “/” “INBOX” // Основная папка INBOX именно она считается основным почтовым ящиком пользователя и в нее доставляются все письма. В этой папке есть вложенные папки (\ HasChildren)

p, blockquote 31,0,0,0,0 -->

* LIST (\ HasChildren) “/” “INBOX/Drafts” // папка Draft черновики

p, blockquote 32,0,0,0,0 -->

* LIST (\ HasChildren) “/” “INBOX/Junk” // папка Junk спам

p, blockquote 33,0,0,0,0 -->

* LIST (\ HasChildren) “/” “INBOX/Sent” // папка Sent отправленные письма

p, blockquote 34,0,0,0,0 -->

* LIST (\ HasChildren) “/” “INBOX/Trash” //папка Trash корзина

p, blockquote 35,0,0,0,0 -->

A0002 OK Completed //завершается вывод ответом сервера ОК и номером метки А0002 указывающее, к какой команде относится ответ.

p, blockquote 36,0,0,0,0 -->

Выбор папки

Следующий этап сеанса IMAP это выбор папки из которой мы хотим читать письма.

p, blockquote 37,0,0,0,0 -->

выбор папки в протоколе imap

p, blockquote 38,0,0,0,0 -->

A0003 SELECT INBOX //для этого используется команда SELECT, выбираем папку INBOX

p, blockquote 39,0,0,0,0 -->

p, blockquote 40,0,0,0,0 -->

p, blockquote 41,0,0,0,0 -->

p, blockquote 42,0,0,0,0 -->

p, blockquote 43,0,0,0,0 -->

* OK [UIDVALIDITY 1340776425]

p, blockquote 44,1,0,0,0 -->

* OK [UNIDNEXT 29048]

p, blockquote 45,0,0,0,0 -->

A0003 OK [READ-WRITE] Completed

p, blockquote 46,0,0,0,0 -->

Просмотр списка писем

p, blockquote 47,0,0,0,0 -->

Просмотр папки imap

p, blockquote 48,0,0,0,0 -->

С начала мы хотим посмотреть флаги, в ответ сервер выдает перечень писем с флагами.

p, blockquote 49,0,0,0,0 -->

* 1 FETCH (FLAGS (\Seen)) // некоторые письма мы смотрели

p, blockquote 50,0,0,0,0 -->

* 2 FETCH (FLAGS (\Seen))

p, blockquote 51,0,0,0,0 -->

* 3 FETCH (FLAGS (\Answered \Seen)) // на некоторые мы отправили ответ

p, blockquote 52,0,0,0,0 -->

p, blockquote 53,0,0,0,0 -->

* 177 FETCH (FLAGS ()) // мы к нему подключались, но мы его не посмотрели.

p, blockquote 54,0,0,0,0 -->

* 178 FETCH (FLAGS (\Recent))

p, blockquote 55,0,0,0,0 -->

* 179 FETCH (FLAGS (\Recent)) // эти 3 письма мы видим в первый раз

p, blockquote 56,0,0,0,0 -->

* 180 FETCH (FLAGS (\Recent))

p, blockquote 57,0,0,0,0 -->

A0004 OK Completed (0.00 sec)

p, blockquote 58,0,0,0,0 -->

Чтение письма и установка флагов

p, blockquote 59,0,0,0,0 -->

Чтение письма imap

p, blockquote 60,0,0,0,0 -->

p, blockquote 61,0,0,0,0 -->

p, blockquote 62,0,0,0,0 -->

p, blockquote 63,0,0,0,0 -->

p, blockquote 64,0,0,0,0 -->

p, blockquote 65,0,0,0,0 -->

А0005 OK Completed (0.000 sec)

p, blockquote 66,0,0,1,0 -->

p, blockquote 67,0,0,0,0 -->

p, blockquote 68,0,0,0,0 -->

A0006 OK Completed

p, blockquote 69,0,0,0,0 -->

Удаление писем и выход

p, blockquote 70,0,0,0,0 -->

Удаление писем в imap

p, blockquote 71,0,0,0,0 -->

p, blockquote 72,0,0,0,0 -->

p, blockquote 73,0,0,0,0 -->

A0007 OK Completed

p, blockquote 74,0,0,0,0 -->

A0008 LOGOUT //для разрыва соединений используется команда LOGOUT

p, blockquote 75,0,0,0,0 -->

* BYE LOGOUT received //сервер отвечает, что полученная команда LOGOUT говорит нам пока.

p, blockquote 76,0,0,0,0 -->

A0008 OK Completed //и выдает ответ ОК команда выполнена.

p, blockquote 77,0,0,0,0 -->

После этого соединение разрывается.

p, blockquote 78,0,0,0,0 -->

Другие команды IMAP

В протоколе IMAP имеется больше количество других команд.

Команда Перемещение писем:

С помощью команды SEARCH можно искать письма на сервере по требуемую шаблону.

p, blockquote 81,0,0,0,0 -->

p, blockquote 82,0,0,0,0 -->

Эти команды, а также те же команды, которые мы перед этим рассматривали могут использовать большое количество разных аргументов, для того чтобы разобраться с ними подробно вам придется изучать документацию или стандарт протокола IMAP.

p, blockquote 83,0,0,0,0 -->

p, blockquote 84,0,0,0,0 -->

Заключение

И так мы рассмотрели протокол IMAP. Он используется для чтения писем из почтового ящика пользователя.

p, blockquote 85,0,0,0,0 -->

p, blockquote 86,0,0,0,0 -->

Недостатком протокола — он очень сложный, с одной стороны это обусловлено тем, что задача, которую пытались решить разработчики протокола действительно является сложной, нужно обеспечить одновременную работу с почтовым ящиком нескольких клиентов, при чем эти клиенты могут выполнять запросы одновременно. В том числе конфликтующие между собой. С другой стороны протокол разрабатывался достаточно давно в конце 90-х в начале 2000-х готов и тогда у разработчиков протоколов не было достаточно опыта.

p, blockquote 87,0,0,0,0 --> p, blockquote 88,0,0,0,1 -->

Другой недостаток вызван тем, что все почтовые письма всех пользователей хранятся на сервере, если пользователей много, то серверу требуется большое количество дискового пространства. Однако сейчас, когда жесткие диски стали большими и относительно дешевыми, это уже не является такой большой проблемой.

Синхронизация влияет на производительность и использование дискового пространства.

478018a787a859bb323295c2966ba359-1269384912-646-1.jpg

Чтобы вручную настроить свойства синхронизации, откройте Синхронизация и хранение в диалоге Параметры учетной записи ( Инструменты Правка > Параметры учётной записи ).

Откройте Синхронизация и хранение в диалоге Параметры учетной записи ( Инструменты Правка > Параметры учётной записи )

Если эта опция не установлена, вы можете указать отдельные папки для синхронизации. Щёлкните по кнопке Дополнительно. :

478018a787a859bb323295c2966ba359-1269385357-244-1.jpg

Папки, которые отмечены, будут синхронизированы. Вложенные папки не будут автоматически синхронизированы просто потому, что отмечена родительская папка. Вместо этого, вы должны отметить каждую папку по отдельности.

478018a787a859bb323295c2966ba359-1269385466-73-1.jpg

Эти прекрасные люди помогли написать эту статью:

Illustration of hands

Станьте волонтёром

Растите и делитесь опытом с другими. Отвечайте на вопросы и улучшайте нашу базу знаний.

Читайте также: