Imapsync перенос почты ubuntu
Обновлено: 05.07.2024
В качестве рабочего инструмента выступит пакет imapcopy, только как показала документация он не может работать с ящиками которые работают через SSL/TLS, т. е. Подключение происходит на порт 993 (Шифрование), в следствии этого нужно будет в системе поднять локальный прокси именуемый, как stunnel который будет переводить подключение с зашифрованного подключения на не зашифрованное.
Устанавливаю stunnel в систему:
$ sudo apt-get install stunnel openssl -y
$ sudo nano /etc/default/stunnel4
$ openssl req -new -out stunnel.pem -keyout stunnel.pem -nodes -x509 -days 3650
Common Name (e.g. server FQDN or YOUR name) [] :10.7.8.147
$ sudo nano /etc/stunnel/stunnel1.conf
[imap1] accept = 10.7.8.147:1430
[imap2] accept = 10.7.8.147:1431
$ sudo service stunnel4 start
Starting SSL tunnels: [Started: /etc/stunnel/stunnel1.conf] stunnel.
$ sudo netstat -tulpn | grep stunnel
tcp 0 0 10.7.8.147:1430 0.0.0.0:* LISTEN 1957/stunnel4
tcp 0 0 10.7.8.147:1431 0.0.0.0:* LISTEN 1957/stunnel4
Устанавливаю утилиту imapcopy в задачи которой будет копирование содержимого одного почтового ящика домена на другой почтовый ящик домена:
$ apt-cache search imapsync
$ sudo apt-get install imapcopy -y
$ sudo find / -name ImapCopy.cfg
$ sudo cp /usr/share/doc/imapcopy/examples/ImapCopy.cfg
Создаю конфигурационный файл на основе данных взаимодействия утилиты stunnel при работе с различными доменами почтовых серверов:
$ sudo nano ImapCopy.cfg
imapcopy: /usr/bin/imapcopy /usr/share/man/man1/imapcopy.1.gz
-l → записывать результаты работы в файле imapcopy.log
$ ./imapcopy ImapCopy.cfg -l imapcopy.log
Getting folderlist on sourceserver OK, found 8 folder
Processing Folder INBOX
137 Messages copied, 0 Errors (INBOX -> INBOX)
1 User processed, 137 Messages copied, 0 Error(s)
0 Folder(s) created, 0 Folder create errors, 0 Folder not copied
На заметку: да, отлично письма из одного почтового ящика были успешно скопированы в другой, но вот если нечаянно запустить копирование повторно, что письма будут задублированы, т. е. Нет ни какой проверки, а это плохо, но в тоже время поставленная задача выполнена, а это уже нюансы.
Вот собственно и все, по данной задачи, а пока я прощаюсь с уважением автор блога ekzorchik.
Используйте прокси ((заблокировано роскомнадзором, используйте vpn или proxy)) при использовании Telegram клиента:
Поблагодари автора и новые статьи
будут появляться чаще :)
Карта МКБ: 4432-7300-2472-8059
Большое спасибо тем кто благодарит автора за практические заметки небольшими пожертвованиями. С уважением, Олло Александр aka ekzorchik.
Иногда у администраторов возникает необходимость перенести почтовый сервер: либо на другое железо, либо даже в какой-нибудь облачный сервис. Задача обычно выглядит простой: на новом месте заводятся аккаунты для всех пользователей, затем копируется почта и наконец правятся MX-записи.
Однако в реальности с переносом почты могут возникнуть трудности: например при переносе в облачный сервис нет прямого доступа к диску, и может не быть удобных средств миграции. В этом случае может выручить утилита imapsync, о которой и пойдёт речь далее.
Допустим что миграция осуществляется с частного почтового сервера в Google Suite и мы уже подошли к тому шагу, когда созданы новые учётные записи в Google Suite. Склонируем репозиторий с исходным кодом mailsync на какую-нибудь машину под управлением Ubuntu 18.04:
Переходим в директорию с исходным кодом:
Устанавливаем необходимые библиотеки (подробности в файле "INSTALL.d/INSTALL.Ubuntu.txt"):
После этого создадим файл "mails.csv", в котором каждая строка будет иметь вид:
Здесь "old_login" и "old_pass" - логин и пароль пользователя на старом сервере, а "new_login" и "new_pass" - логин и пароль пользователя на новом сервере.
Если вы мигрируете в Google Suite то вам надо будет зайти в настройки безопасности -> «Основные настройки" -> "Приложения, не обладающие надежной защитой" и на время миграции разрешить приложения, не обладающие надёжной защитой. Без этой настройки может не получится подключиться к IMAP.
После этого остаётся написать небольшой скрипт, который последовательно выполнит imapsync для каждого из наших пользователей. Примерный листинг скрипта:
После выполнения скрипта в файл "mail_errors" будут записаны логины пользователей, для которых перенос почты не удался. Обычно это связано либо с большим объёмом почты (превышение квоты), либо с наличием спецсимволов в паролях. Поэтому лучше заранее проверить размеры ящиков и хотя бы на время миграции установить на ящики пароли, не содержащие символов, которые при подстановке в команды оболочки могут быть интерпретированы не правильно (например знак доллара или обратный слэш).
В последних ревизиях mailsync появилась поддержка аккаунтов GMail и MS Exchange. Однако в силу ряда причин у автора этих строк не было возможности протестировать этот функционал.
Хотя миграция веб-сайтов обычно не является проблемой, иногда бывает сложнее перенести почтовые ящики. Это особенно верно, когда два сервера не используют одно и то же программное обеспечение. К счастью, чтобы упростить этот шаг, есть много инструментов, включая Imapsync, о котором мы сегодня поговорим.
Инструмент Imapsync позволяет синхронизировать почтовые ящики, используя протокол IMAP. Это будет работать только в том случае, если вы также используете IMAP для получения своих электронных писем или если вы не удаляете свои электронные письма с сервера по протоколу POP.
Требования
-
.
- Экземпляр сервера Vultr Ubuntu 16.04 LTS.
Перед установкой любых пакетов на экземпляр сервера Ubuntu рекомендуется обновить систему.
Установка
Во-первых, вам нужно установить необходимые предварительные условия для запуска Imapsync.
Может потребоваться обновить клиенты IMAP и JSON cpanm .
Загрузите последний код Imapsync из официального репозитория Git.
Перейдите во вновь клонированный репозиторий и установите его с помощью следующих команд в вашей системе.
Вы можете проверить версию Imapsync, используя следующую команду.
Синхронизация электронной почты
Пароли
Для того, чтобы не вводить простые пароли текста почтового ящика, вы можете хранить их в файлах и использовать --passfile1 и --passfile2 аргументы , чтобы автоматически загружать их из файлов , содержащих пароли.
Соединение с сервером IMAP
Существует несколько вариантов подключения Imapsync к вашему почтовому серверу, в том числе тип используемого подключения. По умолчанию Imapsync будет пытаться использовать SSL или TLS на порту 993 для подключения. Ниже приведены примеры для подключения на сервере для миграции (замены 1 с 2 для второго сервера).
- --nossl1 для незашифрованного соединения через порт 143 ( не рекомендуется )
- --ssl1 для зашифрованного соединения с SSL через порт 993
- --tls1 соединиться с TLS через порт 993
Есть также варианты для определения типа аутентификации. Это указано с --authmech1 и --authmech2 аргументами, чьи возможными значениями являются следующим (в верхнем регистре).
Папки
- --automap использовать автоматическое распознавание папок по умолчанию.
- --nomixfolders чтобы избежать слияния папок с похожим именем в зависимости от регистра.
- --prefix1 удалить префикс из папок для переноса.
- --prefix2 добавить префикс в перенесенные папки.
- --skipemptyfolders не создавать пустые папки на конечном сервере.
Варианты миграции
Чтобы ускорить миграцию электронной почты, вы можете использовать --usecache аргумент для временного хранения папок на сервере, на котором вы установили Imapsync.
Наконец, перед началом миграции не стесняйтесь использовать --dry аргумент для проверки результата команды, не выполняя ее.
Ваши пользователи наверняка захотят, чтобы все их пометки, папки и другие данные с IMAP-ящиков внешнего сервера полностью перенеслись на локальный сервер.
Чтобы не светить пароли в списке процессов, создаем для каждого пользователя по 2 файла, содержащие пароли от внешнего и локального ящиков. Сначала подготовим папку для них:
Эти процедуры нужно повторить для каждого перемещаемого пользователя:
И затем вписать в созданные файлы соответствующие пароли с помощью вашего любимого текстового редактора.
Далее начинается самое веселье. Нужно методом поиска в интернете, чтения невнятного мануала к imapsync и других магических манипуляций подобрать опции для каждого из IMAP-серверов. Опишу опции, которые пришлось использовать мне. Большинство опций имеют на конце цифру 1 - сервер, с которого будут переноситься письма, или 2 - сервер, на который они будут переноситься. Итак, опции (те, что имеют вариант для каждого из серверов приведены с 1 на конце):
Итак, в самом простом случае для каждого аккаунта нужно запустить imapsync 2 раза. Второй раз - только убедившись, что всё перенеслось как следует, для очистки ящика на внешнем сервере. Переносим почту:
Второй раз запускаем уже с опциями удаления:
Теперь самое веселое, если imapsync не может определить префиксы и разделители пути на серверах, нужно соединиться с сервером (мы будем использоовать защищенное соединение), вручную залогиниться и запросить перечисление папок. Тогда мы увидим как он представляет папки и сможем это объяснить imapsync.
Соединяемся с сервером:
если видим в конце ответа
значит всё в порядке, можно разговаривать с сервером. Проходим аутентификацию:
далее набираем по очереди 2 команды и анализируем их результат:
результат будет иметь вид, похожий на следующее:
* LIST (\HasNoChildren) "." "INBOX.Archive"
* LIST (\HasNoChildren) "." "INBOX.Sent"
* LIST (\HasNoChildren) "." "INBOX.Draft"
Это означает, что префикса у пути нет, а разделитель папок - точка. В результате параметры будут
Читайте также: