Top.Mail.Ru

Миграция с Яндекс Почты на внутренний сервер

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

Так вот в данном видео мы рассмотрим, как можно мигрировать с доменной Яндекс.Почты на собственный почтовый сервер на базе программного обеспечения «Интернет Контроль Сервер»

Почему желательно переходить именно на собственный почтовый сервис? В большей степени это связано с безопасностью, так как ваша конфиденциальная переписка хранится не где-то там в облаке, а на вашем непосредственном сервере, доступ к которому имеете только вы. И на самом деле, не все, кто пользуется межсетевым экраном «Интернет Контроль Сервер» знают, что данную задачу вполне можно переложить на его плечи, помимо основных функций, связанных с охраной периметра сети.

Если вкратце, то сегодняшний урок пойдет по следующему плану:

- настройка пароля для приложений в почтовых ящиках

- создание почтовых ящиков в ИКС-е

- перенос писем из почтовых ящиков

- настройка MX записи домена

 

Настройка пароля для приложений в почтовых ящиках

Первым делом переходим в админку корпоративной почты на Яндексе - https://admin.yandex.ru \ Онлайн школа IT-Skills и тут у меня два почтовых ящика info и manager.

Теперь нам потребуется сгенерировать для переносимых ящиков пароль для внешних приложений. Что это такое? Данный пароль нужен на случай, если вы будете работать через какое-то внешнее приложение, а не через веб интерфейс. Грубо говоря, это дополнительная защита.

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

Для этого входим в ящики https://mail.yandex.ru/ \ Авторизуемся под нужным ящиком \ Настройки \ Все настройки \ Безопасность \ Пароли приложений \ Название пароля \ Перенос почты \ Создать \ Создайте отдельный файл, в котором укажем адрес ящика и пароль для приложений \ ОК

Создание почтовых ящиков в ИКС-е

Теперь нам нужно создать такие же почтовые ящики на «Интернет Контроль Сервере» (192.168.0.50:81 \ root \ пароль \ Почта \ Домены и ящики \ Добавить почтовый домен \ it-skills.online \ Добавить \ Добавить \ Почтовый ящик \ Имя ящика: info \ Пароль: 123qweASD \ Пользователь: Администратор \ Добавить \ Почтовый ящик \ Имя ящика: manager \ Пароль: 123qweASD \ Пользователь: Администратор)

Давайте даже проверим, можем ли мы отправлять письма через ИКС (Администратор ИКС \ Веб-почта \ info@it-skills.online\ Пароль \ Написать письмо \ Кому: если мы укажем адрес из нашего же почтового домена, то система отправит напрямую, не через интернет, а если укажем какой-то другой домен, то письмо уйдет через интернет support@sys-team-admin.ru \ Тема: Проверка почты через ИКС \ Отправить \ Проверяем на почтовом ящике support@sys-team-admin.ru, письмо есть, однако, если мы отправим ответ, то это письмо придет не в ИКС, а на яндекс. Все из-за того, что на данный момент сервер яндекса указан, как сервер для приема писем для данного домена. Но, этот вопросы мы решим в конце, а сейчас мы убедились, что почта с ИКС-а у нас вообще уходит.

Подготовка к переносу почтовых ящиков

Следующий шаг, это перенести всю базу писем с серверов Яндекс.Почты на ИКС, а для этого нам понадобится две утилиты IMAPSync и среда разработки Perl.

Сразу скажу, что я данную процедуру выполняю в Windows 10, так как в Windows 11 у меня появлялись различные ошибки. Так что, советую вам так же выполнять данную процедуру в Windows 10.

Создадим папку C:/mail и перекинем в неё дистрибутивы программ \ strawberry-perl-5.22.2.1-32bit-portable извлечь \ Далее запускаем файл portableshell.bat \ Далее необходимо установить дополнительные модули при помощи следующих команд:

ppm install Unicode::String

Распаковываем утилиту imapsync-imapsync-1.678 \ копируем файл imapsync в папку W \ Далее необходимо запустить скрипт install_modules.bat в среде Perl, для этого указываем полный путь к файлу install_modules.bat в запущенной среде Perl:

C:\mail\imapsync-imapsync-1.678\imapsync-imapsync-1.678\W\install_modules.bat

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

Далее необходимо запустить скрипт, которые создаст exe-шный файл программы imapsync

C:\mail\imapsync-imapsync-1.678\imapsync-imapsync-1.678\W\build_exe.bat

Проверяем что данный файл был создан C:\mail\imapsync-imapsync-1.678\imapsync-imapsync-1.678\W\imapsync.exe

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

Далее, переместим данный exe файл в папку C:\mail\imapsync-imapsync-1.678\imapsync-imapsync-1.678\examples

Перенос одного почтового ящика

Для начала давайте попробуем перенести, только один почтовый ящик. Для этого нас интересует файл imapsync_example.bat в каталоге C:\mail\imapsync-imapsync-1.678\imapsync-imapsync-1.678\examples

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

.\imapsync.exe --host1 imap.yandex.ru  --user1 info@it-skills.online --password1  "xqdrbwqtkkhtmnoz"  ^

               --host2 192.168.0.50  --user2 info@it-skills.online --password2  "123qweASD"  ^

               --ssl1 --sslargs1 SSL_verify_mode=1 --skipheader "^(?!Message-Id)"  --automap  ^

               --automap --justfolders --dry

Запускаем файл C:\mail\imapsync-imapsync-1.678\imapsync-imapsync-1.678\examples\imapsync_example.bat и видим что тестовое подключение к почтовому серверу яндекс и почтовому серверу ИКС прошло успешно.

Ключ --dry говорит нам о том, что это было тестовое подключение, поэтому убираем этот ключ и запускаем скрипт вновь.

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

Удаляем этот ключ и запускаем скрипт заново.

Видим, что все письма перенеслись.

Перенос нескольких почтовых ящиков

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

Поэтому давайте перенесем оставшиеся ящики за один раз. То есть выполним перенос массива ящиков.

Для этого нас интересует файл с названием file.txt

Этот файл содержит хорошее описание и реальный пример, для демонстрации работы программы.

Я добавлю строку с нужными мне параметрами:

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

imap.yandex.ru;info@it-skills.online;xqdrbwqtkkhtmnoz;192.168.0.50;info@it-skills.online;123qweASD;

imap.yandex.ru;manager@it-skills.online;mnbsbtofyzquoqgs;192.168.0.50;manager@it-skills.online;123qweASD;

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

У вас может быть 10,20,50 таких строк, смотря сколько почтовых ящиков вы переносите. Отлично, сохраняем и закрываем файл.

Причем я закомментирую первую строчку, так как почтовый ящик info я уже перенес, да и вообще все не нужные нам строчки.

Теперь открываем файл sync_loop_windows.bat для редактирования

Листаем почти в самый низ до строчки imapsync ^

После host 2 добавляем наши параметры. И сохраняем файл.

imapsync ^

  --host1 %%G --user1 %%H --password1 %%I ^

  --host2 %%J --user2 %%K --password2 %%L %arguments% ^

  --ssl1 --sslargs1 SSL_verify_mode=1 --skipheader "^(?!Message-Id)"  --automap  ^

  --automap --justfolders --dry

Тут снова нечего нового для вас, все параметры мы уже разобрали ранее. Единственное, не ошибитесь и не забудьте про то, что нужно добавить символ "^", каретки сверху в конце строки после параметра %arguments%.

Запускаем скрипт sync_loop_windows.bat. Как вы понимаете, данный скрипт по порядку берет записи из файла file.txt и прогоняет синхронизацию с указанными в каждой строке данными. Именно поэтому вы можете записать сюда любое количество параметров для переноса ящиков.

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

Дожидаемся окончания процесса и подключаемся к почтовому ящику чтобы проверить перенос писем. Отлично, все письма так же перенеслись.

Остался лишь один нюанс. Письма мы перенесли, однако новые письма в любом случае у нас будут попадать на сервис Яндекс, поэтому вам необходимо изменить почтовую запись или MX-запись у вашего регистратора домена, на ваш   внешний IP адрес, чтобы почта прилетала именно на сервер ИКС.

В качестве примера можем рассмотреть одного из хостинг провайдеров. Предположим что мой внешний IP адрес, через которые Интернет Контроль Сервер выходит в сеть Интернет, 188.162.165.21 и мне необходимо его прописать в качестве почтового сервера. А значит, мне нужно указать данные IP адрес в качестве MX-записи. Однако, просто так я его туда прописать не смогу, так как в MX-записи можно прописать только доменное имя, а не IP-адрес.

В данной ситуации поступают следующим образом, создается А запись в которой указывается соответствие между доменным именем, допустим это будет mail.it-skils.ru и внешним IP адресом 188.162.165.21, а далее укажем в качестве MX-записи доменное имя mail.it-skils.ru, таким образом мы как раз привязали наш внешний IP адрес в качестве почтового сервера. И теперь все письма будут пересылаться на наш внешний IP, а следовательно попадать на почтовый сервер под управлением Интернет Контроль Сервера.

 

Дополнительные ссылки для урока:

Админка корпоративной почты на Яндексе - https://admin.yandex.ru

IMAPSync - https://github.com/imapsync/imapsync/archive/imapsync-1.678.zip

Perl - http://strawberryperl.com/download/5.22.2.1/strawberry-perl-5.22.2.1-32bit-portable.zip