Skip to content

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

7 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

yandex-mail-export — выгрузка почты из Яндекса без IMAP и переезд на другой хостинг

Экспорт всех писем из Яндекс.Почты в файлы .eml без доступа по IMAP и без платной подписки Яндекс 360 — и перенос их на любой другой почтовый хостинг по обычному IMAP. Подходит, когда нужно выгрузить почтовый ящик на своём домене, сделать резервную копию (бэкап) переписки или полностью переехать с Яндекса на другой сервер.

Контекст: с 29 июня 2026 Яндекс закрыл доступ по IMAP/SMTP для бесплатных почтовых ящиков на собственных доменах — протоколы теперь требуют платной подписки Яндекс 360. Веб-интерфейс (mail.yandex.ru) при этом продолжает работать бесплатно — и этот проект выгружает письма через него, тем же внутренним веб-API, которым пользуется браузер.

Когда это нужно

  • Яндекс отключил IMAP, а вам нужно скачать все письма из ящика — почтовый клиент (Thunderbird, Outlook, Apple Mail) больше не может подключиться и забрать архив.
  • Переезд с Яндекс.Почты на другой почтовый хостинг (Beget, Timeweb, reg.ru, Mail.ru / VK WorkMail, Fastmail, свой сервер на Dovecot) с сохранением папок, дат и флагов прочитанности.
  • Не хочется платить за Яндекс 360 только ради разового включения IMAP для выгрузки писем.
  • Резервная копия почты: полный дамп ящика в открытом формате .eml — читается любым почтовым клиентом, ничем не зашифрован, не привязан ни к какому сервису.

Как это работает

Два независимых скрипта, между которыми — обычные файлы .eml на диске, никакой магии и скрытого состояния:

  1. yandex-dump — выгружает все письма из Яндекс.Почты в .eml, используя внутренний веб-API вместо IMAP (тот же API, которым пользуется браузерный интерфейс mail.yandex.ru).
  2. imap-upload — заливает эти .eml на новый сервер по стандартному IMAP (APPEND), с сохранением папок, флага прочитанности и дат. Работает с любым IMAP-провайдером — таблица проверенных хостов в imap-upload/README.md.

Если нужен только бэкап без переезда — достаточно первого скрипта.

Требования

  • Python 3.8+ и модуль venv (в Debian/Ubuntu: apt install python3-venv).
  • Внешняя зависимость одна — requests, и нужна она только yandex-dump; обёртка dump.sh при первом запуске сама создаст виртуальное окружение .venv и поставит её туда. imap-upload работает на чистой стандартной библиотеке.
  • Как поставить окружение вручную (для запуска yandex_dump.py без обёртки) — см. yandex-dump/README.md.

Быстрый старт

git clone https://github.com/leksuss/yandex-mail-export.git
cd yandex-mail-export

cd yandex-dump
./dump.sh                          # подробно объяснит, что делать дальше

cd ../imap-upload
./upload.sh ../yandex-dump/dump box@ваш-новый-домен.ру
# адрес IMAP-сервера назначения скрипт спросит сам; можно задать сразу:
IMAP_HOST=imap.beget.com ./upload.sh ../yandex-dump/dump box@ваш-новый-домен.ру

Адрес IMAP-сервера вашего хостинга смотрите в его панели управления; таблица типовых хостов (Beget, Timeweb, reg.ru, Mail.ru и др.) — в imap-upload/README.md.

Подробные инструкции, все флаги и разбор проблем — в README каждого подпроекта: yandex-dump/README.md, imap-upload/README.md.

Важно про безопасность

yandex-dump никогда не спрашивает и не видит ваш пароль от Яндекса. Вместо автоматического логина вы вручную копируете cookies уже открытой в браузере сессии — это осознанное решение, а не недоработка:

  • так скрипт физически не может ни украсть, ни случайно залогировать пароль — его просто нет ни на одном этапе;
  • так же честнее по отношению к антибот-защите Яндекса, чем автоматизированный логин с эмуляцией браузера.

Скрипт обращается только к mail.yandex.ru — это единственная константа BASE в начале yandex_dump.py, можно проверить исходники сами. Тем не менее файл с cookies по силе равен паролю (без второго фактора) — не публикуйте его, не коммитьте в git, удаляйте после использования.

imap-upload тоже не хранит и никуда не передаёт пароль от нового ящика, кроме самого IMAP-сервера, к которому вы подключаетесь; ввод — через getpass (не отображается на экране) или переменную окружения.

Почему не через официальный API/протокол

Официального способа выгрузить письма без IMAP/SMTP и без оплаты подписки Яндекс не предоставляет. Внутренний веб-API, который использует yandex-dump, не документирован и может измениться в любой момент — отсюда набор защитных механизмов в коде (автоопределение структуры ответов, ретраи, подстраиваемые параметры) и подробный раздел troubleshooting в README yandex-dump. Используйте на свой страх и риск и не забывайте о разумных паузах между запросами, чтобы не создавать нагрузку на чужой сервис.

Частые вопросы (FAQ)

Как скачать все письма из Яндекс.Почты, если IMAP отключён?

Запустить yandex-dump: он выгрузит весь ящик в .eml-файлы через веб-интерфейс, без IMAP и без подписки. Нужны только cookies открытой в браузере сессии.

Можно ли сделать бэкап ящика Яндекса бесплатно, без Яндекс 360?

Да — именно для этого проект и написан. Платная подписка нужна только для протоколов IMAP/SMTP; веб-интерфейс бесплатен, и выгрузка идёт через него.

Как перенести почту с Яндекса на другой почтовый хостинг?

Сначала yandex-dump (выгрузка в .eml), затем imap-upload — он зальёт письма на новый сервер по IMAP с сохранением структуры папок, дат и прочитанности. Список проверенных провайдеров и адреса их IMAP-серверов — в imap-upload/README.md.

В каком формате сохраняются письма? Смогу ли я их открыть без этого проекта?

Стандартный .eml (RFC 822) — его открывает любой почтовый клиент (Thunderbird, Outlook, Apple Mail) двойным кликом, плюс рядом лежит manifest.jsonl с метаданными (папка, дата, прочитанность). Никакого собственного формата и привязки к этим скриптам нет.

Выгрузка оборвалась на середине — начинать заново?

Нет. Оба скрипта резюмируемые: повторный запуск той же команды продолжает с места остановки (по manifest.jsonl у выгрузки и uploaded_*.txt у заливки), уже обработанные письма не трогаются.

Подойдёт ли это для обычного ящика @yandex.ru?

Основной сценарий — ящики на собственных доменах, которым отключили IMAP. Но выгрузка работает через веб-интерфейс, одинаковый для всех ящиков, так что и для @yandex.ru это рабочий способ сделать полный дамп почты.

English summary

Export all emails from Yandex Mail without IMAP (which Yandex has put behind the paid Yandex 360 subscription for custom-domain mailboxes since June 2026), and migrate them to any other IMAP mail server. Two scripts: yandex-dump downloads every message as standard .eml files through the same internal web API the browser UI uses (cookie-based, your password is never seen or asked for); imap-upload uploads those .eml files to any IMAP server via APPEND, preserving folders, read flags and original dates. Both are resumable. Useful for Yandex Mail backup, mailbox export and mail hosting migration when IMAP access is disabled or paywalled.

Структура репозитория

yandex-mail-export/
├── yandex-dump/           # выгрузка (экспорт) писем из Яндекс.Почты в .eml
│   ├── yandex_dump.py
│   ├── dump.sh
│   └── README.md
├── imap-upload/           # заливка .eml на новый IMAP-сервер
│   ├── imap_upload.py
│   ├── upload.sh
│   └── README.md
└── inspect_debug.py       # диагностика JSON-ответов API (без утечки содержимого писем)

Лицензия

MIT — см. LICENSE.

About

Выгрузка (экспорт) всех писем из Яндекс.Почты в .eml без IMAP и без подписки Яндекс 360 + перенос на любой IMAP-хостинг. Export/backup Yandex Mail without IMAP and migrate to any IMAP server.

Topics

Resources

Stars

Watchers

Forks

Releases

Packages

Contributors

Languages