• Защита информации
  • ИТ-поддержка
  • Почтовый переезд средствами IMAP

    Причин, по которым может понадобиться «перетянуть» все письма из одного почтового ящика в другой, может быть множество, например:

    • Смена платформы для корпоративного почтового сервера.
    • Смена провайдера, предоставляющего почтовый сервис.
    • Увольнение сотрудника и перенос его писем другому ответственному.

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

    Эта небольшая утилита командной строки позволяет копировать сообщения для нескольких почтовых аккаунтов с одного IMAP-сервера на другой. К сожалению, утилита умеет работать только с протоколом IMAP: работа с IMAP over SSL/TLS ей недоступна. Для решения этой задачи воспользуемся утилитой Stunnel.

    Теперь, на примере переезда с Яндекс.Почты на Gmail, рассмотрим, как это работает. Загружаем IMAPCopy тут и распаковываем. Для пользователей Linux утилиты IMAPCopy и Stunnel добавлены в репозитории многих популярных дистрибутивов. Качаем тут и устанавливаем Stunnel. В процессе установки будет сгенерирован самоподписанный сертификат – вводим данные для его генерации. На финальной стадии установки устанавливаем чек-бокс для запуска Stunnel по завершении инсталляции. Stunnel запущен – его значок отображается в области системных уведомлений (Tray).

    Щелкаем правой кнопкой мыши по его значку и выбираем «Edit Configuration». Как мы видим, в конфигурации, для примера, уже прописаны настройки туннелей для серверов POP3, IMAP и SMTP для Gmail:

    ; ***************************************** Example TLS client mode services
    [gmail-pop3]
    client = yes
    accept = 127.0.0.1:110
    connect = pop.gmail.com:995
    verifyChain = yes
    
    CAfile = ca-certs.pem
    checkHost = pop.gmail.com
    OCSPaia = yes
    
    [gmail-imap]
    client = yes
    accept = 127.0.0.1:143
    connect = imap.gmail.com:993
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = imap.gmail.com
    OCSPaia = yes
    
    [gmail-smtp]
    client = yes
    accept = 127.0.0.1:25
    connect = smtp.gmail.com:465
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = smtp.gmail.com
    OCSPaia = yes

    Удаляем настройки для POP3 и SMTP за ненадобностью и по аналогии добавляем настройку для IMAP-сервера Яндекса. Получаем конфиг:

    [gmail-imap]
    client = yes
    accept = 127.0.0.1:143
    connect = imap.gmail.com:993
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = imap.gmail.com
    OCSPaia = yes
    
    [ya-imap]
    client = yes
    accept = 127.0.0.1:1143
    connect = imap.yandex.ru:993
    verifyChain = yes
    CAfile = ca-certs.pem
    checkHost = imap.yandex.ru
    OCSPaia = yes

    Сохраняем, закрываем, правой кнопкой мыши по значку: «Reload Configuration». Все – пол дела сделали: теперь у нас есть SSL/TLS туннели к IMAP-серверам Яндекса и Гугла. Не верите? Проверьте:

    D:\>telnet localhost 143
    D:\>telnet localhost 1143

    Теперь настроим конфигурацию утилиты IMAPCopy – файл ImapCopy.cfg. Открыв файл, мы увидим, что все пункты настроек хорошо прокомментированы и снабжены примерами. У утилиты есть широкие возможности отладки, возможность работать с отдельными папками, флагами и даже конвертировать время. Нам это не нужно – у нас глобальный переезд, поэтому нас интересуют пункты: Sourceserver, Destinationserver и List of users and passwords.

    Исходный сервер у нас Яндекс.Почта:

    ##############
    # Sourceserver
    ##############
    SourceServer localhost
    SourcePort 1143

    Сервер назначения – Gmail:

    ###################
    # Destinationserver
    ###################
    DestServer localhost
    DestPort 143

    Указываем учетные данные исходных аккаунтов и аккаунтов назначений:

    #############################
    # List of users and passwords
    #############################
    #       SourceUser    SourcePassword        DestinationUser DestinationPassword
    Copy    "petrov"      "parol_petrov_ya"     "petrov"        "parol_petrov_G"
    Copy    "ivanov"      "parol_ivanov_ya"     "ivanov"        "parol_ivanov_G"
    Copy    "vasechkina"  "parol_vasechkina_ya" "uliyanova"     "parol_uliyanova_G"

    Сохраняем, закрываем, тестируем подключение:

    d:\>imapcopy -t

    Подключение происходит без проблем, значит можно запускать утилиту на копирование. Так же включим запись журнала операций в файл (imapcopy.log), чтобы можно было спокойно разобраться в случае возникновения ошибок:

    d:\>imapcopy -l

    Все прошло успешно – утилита отработала и выдала итог: обработано такое-то количество пользователей, скопировано количество писем, ошибок нет.

    Не нашли ответа на свой вопрос?
    Содержание