Перенос контактов и календарей: CardDAV и CalDAV Яндекса
АйТи Фреш
Серверы и инфраструктура

CalDAV и CardDAV Яндекса: как перенести календари и контакты на новый почтовый сервер

Автор: , директор ООО «АйТи-Фреш» · · ~14 мин чтения
Слева горит облачный дата-центр, справа тихая бухта и домик со своим почтовым сервером
Облако — чужой сервер: когда он горит, вы ждёте. Свой сервер — тихая бухта для переписки.

Облако отдаёт письма, но годами накопленные календари и контакты держит у себя — и без вашего усилия они там и останутся. Уходя из облака на свой сервер, важно забрать не только письма: календари и контакты — такая же часть работы, и их тоже нельзя оставлять у чужого провайдера. CalDAV Яндекса (caldav.yandex.ru) и CardDAV (carddav.yandex.ru) позволяют забрать календари и контакты при переезде, но проще и надёжнее для большинства компаний выгрузка в файлы: контакты — кнопкой «Экспорт контактов» в vCard, календари — владельцем в формате iCal. Письма imapsync их не переносит, поэтому это отдельный шаг на 15–30 минут на сотрудника вручную или скриптом для всех сразу. Ниже — параметры по справке Яндекса, команды выгрузки и загрузки, проверенные на стенде, и подводные камни: группа «Телефонные контакты», общие календари и дубли на телефонах.

Своя почта вместо облака: варианты решения

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

mailcow

Почта, антиспам и веб-почта SOGo с календарями в контейнерах Docker; обновление одной командой.

Carbonio CE

Наследник Zimbra: привычный веб-клиент с календарями и адресными книгами, как в облаке.

iRedMail

Postfix, Dovecot, антиспам и веб-почта на обычном Linux-сервере; от 4 ГБ памяти.

Stalwart

Современный сервер «всё в одном»: IMAP, SMTP, CalDAV, CardDAV; скромные требования.

Почта на инфраструктуре АйТи Фреш

Carbonio CE или mailcow на наших серверах в ЦОД МТС, антиспам и ежедневные бэкапы — от 150 ₽/мес за ящик.

Подберём вариант под вашу компанию и перенесём почту →

Не оставляйте календари в облаке

Уходя из облака, многие забирают письма, а календари и контакты оставляют «на потом». В итоге при следующей аварии у провайдера компания теряет доступ к расписанию встреч и телефонам клиентов — к тому, что нужно в первую очередь.

Календари и контакты — такая же собственность компании, как переписка. Их нужно забрать на свой сервер вместе с почтой.

Календари и контакты — тоже ваши
Календари и контакты — тоже ваши
 — cloud_cyberpunk

Ваши связи — не собственность провайдера

Контакты клиентов, поставщиков, партнёров — это не просто записи в адресной книге. Это капитал компании, собранный годами. Календари — это память о каждой встрече, каждом обещании, каждом сроке. И всё это лежит у облачного провайдера, в формате и на условиях, которые выбрал он.

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

Что и как забирать из облака
Перенос без дублей
Перенос без дублей

Почему контакты и календари переносятся отдельно

Письма переносятся по IMAP, а контакты и календари живут в других протоколах: CardDAV (RFC 6352) для адресных книг и CalDAV (RFC 4791) для календарей. Поэтому утилиты переноса почты, включая imapsync, их не трогают, и если не сделать отдельный шаг, после переезда сотрудники обнаружат пустой календарь.

Есть два пути. Первый — выгрузить данные в файлы (vCard для контактов, iCal для календарей) и загрузить на новом сервере. Второй — забрать их напрямую по CardDAV и CalDAV и так же загрузить. Первый проще для нескольких сотрудников, второй удобнее, когда людей много и нужен повторяемый процесс. Можно и сочетать: файлы для личных данных, протоколы для общих календарей.

Общий план переезда — в руководстве по переносу почты с Яндекс 360. Здесь — только контакты и календари, с параметрами по официальной справке Яндекса и командами, которые мы проверили на стенде.

 — bay_pixel
Что именно переносится и что нет

Что именно переносится и что нет

ДанныеКак выгрузитьОсобенности
Личные контакты«Экспорт контактов» → файл vCardвыгружаются все личные контакты адресной книги
Контакты по CardDAVcarddav.yandex.ruпо справке синхронизируется группа «Телефонные контакты»
Свой календарьвкладка «Экспорт» → iCal (ссылка или файл .ics)iCal и HTML доступны только владельцу календаря
Чужие и общие календариссылка CalDAVдля не-владельцев доступна только CalDAV
Календарь по CalDAVhttps://caldav.yandex.ruпароль приложения типа «Календарь»
Адресная книга организации—это справочник сотрудников, на новом сервере формируется заново

Источники: управление контактами, экспорт календаря, синхронизация календаря на мобильном устройстве и справка Яндекс Почты по работе с контактами.

Важная оговорка про CardDAV: по справке Яндекса для синхронизации контакты нужно добавить в группу «Телефонные контакты». Если забирать контакты по CardDAV, а у сотрудника они лежат в других группах, часть контактов не попадёт в выгрузку. Для полного переноса личных контактов надёжнее экспорт в файл vCard.

Подводные камни календарей
Подводные камни календарей

Способ 1. Через файлы: vCard и iCal

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

Контакты. По справке Яндекса в разделе «Контакты» нажмите «Экспорт контактов» и «Сохранить» — все личные контакты сохранятся в файл vCard. На новом сервере файл загружается через импорт в адресную книгу: в веб-интерфейсах SOGo (mailcow), Carbonio, Nextcloud и в почтовых программах такая функция есть.

Календари. Владелец календаря открывает настройки календаря (три точки рядом с его названием), вкладку «Экспорт» и выбирает формат iCal. Ссылку можно открыть в браузере и сохранить как файл .ics. На новом сервере файл импортируется в нужный календарь.

Плюсы способа: не нужны пароли приложений и командная строка. Минусы: каждый сотрудник делает это сам (или с помощью администратора на его рабочем месте), а календари других людей, к которым у сотрудника есть доступ, этим способом не выгрузить — для них доступна только ссылка CalDAV.

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

 — server_cinema
Подводные камни

Способ 2. Напрямую по CalDAV и CardDAV

Когда сотрудников много, удобнее забирать календари и контакты централизованно по протоколам. Параметры Яндекса по справке:

CalDAV:  https://caldav.yandex.ru      логин: имя@домен   пароль: пароль приложения «Календарь»
CardDAV: carddav.yandex.ru               логин: имя@домен   пароль: пароль приложения «Контакты»

Пароли приложений создаются в Яндекс ID в разделе паролей приложений, с выбором соответствующего типа. Как и для почты, пароль показывается один раз; подробности — в статье о подготовке Яндекс 360 к выгрузке.

Выгрузка всех событий календаря — это один стандартный запрос REPORT с фильтром по компоненту VCALENDAR. На стенде (сервер Radicale) мы выполняли его так:

curl -s -u "$USER:$PASS" -X REPORT "$CAL_URL" \
  -H 'Depth: 1' -H 'Content-Type: application/xml' \
  --data '<?xml version="1.0"?><C:calendar-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:caldav"><D:prop><C:calendar-data/></D:prop><C:filter><C:comp-filter name="VCALENDAR"/></C:filter></C:calendar-query>' \
  > export_cal.xml

Для контактов — аналогичный запрос addressbook-query:

curl -s -u "$USER:$PASS" -X REPORT "$BOOK_URL" \
  -H 'Depth: 1' -H 'Content-Type: application/xml' \
  --data '<?xml version="1.0"?><C:addressbook-query xmlns:D="DAV:" xmlns:C="urn:ietf:params:xml:ns:carddav"><D:prop><C:address-data/></D:prop></C:addressbook-query>' \
  > export_card.xml

Здесь $CAL_URL и $BOOK_URL — адреса конкретного календаря и адресной книги; их можно получить из настроек календаря (ссылка CalDAV) или запросом PROPFIND к серверу. Ответ — XML, внутри которого лежат события (iCalendar) и контакты (vCard). На стенде выгрузка вернула все 3 тестовых события и все 3 контакта.

Письма уходят из горящего облака в надёжное хранилище — карандашный рисунок
Письма уходят из горящего облака в надёжное хранилище.
Чек-лист переноса контактов и календарей

Загрузка на новый сервер

Загрузить события и контакты по CalDAV и CardDAV можно поштучно, запросом PUT: каждое событие — отдельный файл .ics, каждый контакт — отдельный .vcf, имя файла удобно брать из поля UID. Перед загрузкой на новом сервере создаются календарь и адресная книга (в веб-интерфейсе или запросами MKCALENDAR и MKCOL).

curl -s -u "$USER:$PASS" -X PUT "$NEW_CAL_URL/$UID.ics" \
  -H 'Content-Type: text/calendar' --data-binary @event.ics

На стенде мы разобрали XML-ответ выгрузки небольшим скриптом на Python, достали из него каждое событие и контакт и загрузили их PUT-запросами: календарь — 3 из 3, контакты — 3 из 3; на новом сервере проверили, что названия событий («Планёрка 1–3») и имена контактов на кириллице сохранились.

Если новый сервер поддерживает импорт файлов .ics и .vcf в веб-интерфейсе, проще склеить выгрузку в один файл и импортировать его целиком — тогда скрипт не нужен.

Переезд из облака на свой сервер — изометрия
Переезд из облака на свой сервер.

Как организовать перенос для всех сотрудников

Когда сотрудников десятки, ручной экспорт превращается в рассылку инструкций и сбор файлов. Централизованный вариант: для каждого сотрудника создаются пароли приложений типов «Календарь» и «Контакты» (вместе с паролем для почты — за один подход), а ответственный запускает скрипт, который для каждого сотрудника выгружает календари и контакты по CalDAV и CardDAV и загружает их на новый сервер.

Логика скрипта та же, что на нашем стенде: запрос PROPFIND, чтобы узнать список календарей и адресных книг пользователя; запрос REPORT для каждого, чтобы получить все объекты; разбор XML; запрос PUT для каждого объекта на новом сервере. Пароли, как и для imapsync, читаются из файлов, а не передаются в командной строке.

Не забудьте ограничение CardDAV: в выгрузку попадёт только группа «Телефонные контакты». Для полноты личные контакты всё равно лучше дополнительно выгрузить в vCard — это делает сам сотрудник за минуту.

Запускайте выгрузку календарей ближе к дню переключения или повторите её после: встречи, созданные между выгрузкой и переключением, иначе останутся только в старом календаре.

Перенос контактов и календарей из Яндекс 360
Свой сервер под защитой, пока снаружи шторм — бумажная аппликация
Свой сервер под защитой, пока снаружи шторм.

Подводные камни

СитуацияЧто происходитКак поступить
Контакты не в группе «Телефонные контакты»не попадают в выгрузку по CardDAVвыгрузить через «Экспорт контактов» в vCard
Календарь чужой, доступ только на чтениеiCal недоступен, только CalDAVвыгружает владелец или CalDAV с правами сотрудника
Повторяющиеся событияпереносятся как одно событие с правилом повторапроверить пару серий после импорта
Приглашения и участникисписок участников переносится как данные события, но ответы участников со временем не синхронизируютсяпосле переезда важные встречи переподтвердить
Часовые поясасобытие может сдвинуться, если зона не указанапроверить несколько событий, особенно созданных на телефонах
Дни рожденияв некоторых клиентах хранятся отдельнопроверить на тестовом ящике
Дубли на телефонедва аккаунта синхронизации (старый и новый)после переезда удалить старый аккаунт CalDAV/CardDAV

Главное правило — не переносить контакты и календари одновременно несколькими способами. Если сначала импортировали файл, а потом ещё и синхронизировали телефон со старым сервером, получатся дубли, которые придётся чистить вручную.

Ключи от своей почты — у компании — живопись маслом
Ключи от своей почты — у компании.
Копия на другой площадке — основа плана Б — акварель
Копия на другой площадке — основа плана Б.

Нужно ли переносить прошедшие события

Календарь за несколько лет — это тысячи событий, большинство из которых уже не нужны в работе. Переносить ли прошлое — решение компании: иногда история встреч нужна для отчётности или споров с клиентами, иногда достаточно будущих событий и последних нескольких месяцев.

Если историю решено не переносить целиком, сохраните полную выгрузку iCal каждого календаря в архив: файлы .ics занимают немного места и открываются любым календарным приложением. А на новый сервер загрузите только будущие события и, например, последние три месяца.

Для контактов такой вопрос обычно не стоит: адресные книги небольшие, переносятся целиком.

Письма переезжают из облака в свой дом — стиль чертежа
Письма переезжают из облака в свой дом.
Облачный дата-центр плавится — и вместе с ним ваша переписка — комикс
Облачный дата-центр плавится — и вместе с ним ваша переписка.

Сколько времени это занимает

Вручную: у сотрудника с одним календарём и личной адресной книгой экспорт и импорт занимают 10–15 минут вместе с проверкой. Централизованно скриптом: время уходит в основном на подготовку паролей приложений и список общих календарей, сама выгрузка и загрузка — минуты на сотрудника.

Самое долгое — общие календари и ресурсы: список, права, проверка бронирования. Закладывайте на них отдельное время в плане переезда.

Компания в заложниках у облака — мультяшный стиль
Компания в заложниках у облака.

Общие календари и переговорные

Общие календари отделов и календари ресурсов (переговорные, автомобили) — самая хлопотная часть. Права доступа к ним не переносятся вместе с событиями: на новом сервере календарь создаётся, события загружаются, а права выдаются заново по списку.

Составьте список таких календарей заранее: владелец, кто имеет доступ и с какими правами. Выгрузить события лучше от имени владельца — у него есть доступ к экспорту iCal.

На новом сервере проверьте, как он работает с ресурсами: в одних системах переговорная — отдельный тип календаря с автоматическим принятием приглашений, в других — обычный общий календарь. Если сотрудники бронировали переговорные через приглашения, это стоит протестировать до переключения. О том, как такие вещи устроены в Zimbra, — в статье «Zimbra: двойная бронь переговорной».

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

Волна аварии накрывает облако, свой сервер стоит выше — стиль «Матрицы»
Волна аварии накрывает облако, свой сервер стоит выше.
Облако рушится, и сервер падает вместе с вашими письмами — неон
Облако рушится, и сервер падает вместе с вашими письмами.

Телефоны сотрудников после переноса

Если на телефоне были настроены учётные записи CalDAV и CardDAV Яндекса, после переноса на новом сервере появятся те же события и контакты — и телефон покажет их дважды, из старого и нового аккаунта. Поэтому порядок такой: добавить новую учётную запись, убедиться, что события и контакты пришли, и удалить старую.

Учтите, что контакты, сохранённые в памяти телефона, а не в учётной записи CardDAV, с сервером не синхронизируются. Это частая причина жалоб «пропали контакты»: они никогда не были на сервере. Перед переездом попросите сотрудников проверить, где хранятся их важные контакты.

Для iOS по справке Яндекса может понадобиться указать адрес учётной записи CalDAV вручную в формате https://caldav.yandex.ru/principals/users/логин@домен/; для нового сервера адрес берётся из его документации.

Свой сервер — крепость, которую не берёт чужой пожар — пиксель-арт
Свой сервер — крепость, которую не берёт чужой пожар.
 — chains_cinema

Если сотрудники работают в Outlook

Outlook исторически хранит календарь и контакты в своём файле данных и синхронизирует их с сервером только по поддерживаемым протоколам. Если в компании Outlook подключён к Яндексу по IMAP, календарь и контакты в нём, скорее всего, локальные — их нет на сервере Яндекса, и выгрузка по CalDAV и CardDAV их не увидит.

Поэтому у пользователей Outlook проверьте, где на самом деле живёт календарь: в учётной записи сервера или в локальном файле. Локальный календарь экспортируется из самого Outlook в файл и импортируется на новом сервере либо остаётся локальным — тогда при смене компьютера он потеряется.

На новом сервере заранее проверьте, как Outlook будет работать с календарями: через CalDAV-надстройку, через встроенную поддержку сервера или через синхронизацию ActiveSync, если она есть. О том, что бывает с календарями SOGo в новом Outlook, — в нашей статье «Новый Outlook и SOGo».

Авария в чужом дата-центре — и почта компании недоступна — карандашный рисунок
Авария в чужом дата-центре — и почта компании недоступна.
Пожар в облачном дата-центре и тихая бухта со своим сервером
Авария у провайдера или тишина своего сервера — выбор за компанией.

Как проверить, что перенесено всё

Сравните количество: число контактов в адресной книге до и после, число событий в каждом календаре за ближайшие месяцы. На стенде мы сверяли это теми же запросами REPORT на старом и новом сервере — числа совпали.

Выборочно проверьте сложные случаи: повторяющиеся встречи, события с участниками, события в другом часовом поясе, контакты с несколькими телефонами и адресами.

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

Результаты сверки запишите в простую таблицу по сотрудникам: сколько было, сколько стало, кто проверил. Она пригодится, если через месяц кто-то скажет, что встреча пропала, — будет видно, было ли событие на момент переноса.

Чек-лист переноса контактов и календарей

Пройдите по пунктам для каждого сотрудника или централизованно.

Частые вопросы

Какой адрес CalDAV у Яндекс Календаря?

По справке Яндекс 360 — https://caldav.yandex.ru, логин в формате имя@домен, пароль — пароль приложения с типом «Календарь».

Какой адрес CardDAV у Яндекса?

carddav.yandex.ru; для синхронизации нужен пароль приложения типа «Контакты», а контакты — в группе «Телефонные контакты».

Как экспортировать контакты из Яндекс Почты?

В разделе «Контакты» нажать «Экспорт контактов» и «Сохранить» — личные контакты сохранятся в файл vCard.

Как экспортировать Яндекс Календарь?

Владелец календаря открывает его настройки, вкладку «Экспорт» и выбирает iCal; ссылку можно сохранить как файл .ics.

Переносит ли imapsync календари и контакты?

Нет, только письма и папки по IMAP. Календари и контакты переносятся отдельно.

Почему после переезда задвоились события на телефоне?

На телефоне остались обе учётные записи — старая и новая. Старую учётную запись CalDAV/CardDAV нужно удалить.

Переносятся ли права на общие календари?

Нет. События переносятся, а права доступа выдаются на новом сервере заново по списку.

Миграция почты с Яндекса под ключ от АйТи Фреш

Возьмём на себя весь переезд: проверим текущую почту и домен, поможем выбрать вариант, перенесём письма, папки, календари и контакты, переключим MX, SPF, DKIM и DMARC, проверим доставляемость и поддержим сотрудников после переезда.

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

  1. Аудит текущей почты и домена — 1–2 рабочих дня
  2. План миграции и фиксированная смета — 1 рабочий день
  3. Настройка сервера, DNS и перенос ящиков — 3–5 рабочих дней
  4. Сопровождение сотрудников и проверка доставляемости — 5 рабочих дней
РаботаСтоимость
Перенос почты, календарей и контактов до 50 ящиковот 12 000 ₽ разово
Корпоративная почта под ключ: сервер, домен, SPF/DKIM/DMARC, до 15 ящиковот 25 000 ₽ разово
Ящики на нашей инфраструктуре (Carbonio CE или mailcow, ЦОД МТС)от 150 ₽/мес за ящик
Обслуживание почтового сервераот 7 000 ₽/мес

Опыт: перенесли 617 ящиков гостиничной группы за 3 дня. Точный срок и смету фиксируем после аудита; простой при переключении зависит от схемы и оговаривается в договоре. Подробнее — на странице услуги «Корпоративная почта для бизнеса».

Столкнулись с похожей задачей? Обращайтесь — решим

Если у вас происходит что-то из описанного в этой статье — или любая другая проблема с ИТ-инфраструктурой, — обращайтесь в любое время. Мои специалисты и я лично разберём ситуацию, найдём настоящую причину и доведём до решения.

Возьмёмся и за разовую задачу, и за постоянное обслуживание. Первичная консультация — бесплатно и без обязательств.

📞 +7 903 729-62-41 ✈ Telegram @ITfresh_Boss

С уважением, Семёнов Евгений Сергеевич, директор «АйТи Фреш» — IT-аутсорсинг для компаний до 50 рабочих мест, 15+ лет практики

© ООО «АйТи-Фреш» · Москва · Все статьи