Миграция Exchange 2007 на Dovecot

Средний рейтинг
Еще нет оценок
Мой рейтинг:

Всем привет.

По работе потребовалось рассмотреть вопрос возможности мигрировать почту с Exchange 2007 на Dovecot (iRedMail). Так же заодно возможность переноса домена с Windows Server 2008 на Windows Server 2016.

Так же будет рассмотрена настройка фильтрации по группе (не по всему контейнеру (OU)), а по конкретной группе. Те, кто будет состоять в этой группе, смогут залогиниться и отправить почту только пользователям из этой группы.

Пока что остается не решенным один вопрос: адресная книга, т.к. пока не разобрался как организовать фильтр по группам.

В данном конкретном примере не будет рассмотрена отправка на внешние почтовые адреса (тот же Яндекс или Gmail), т.к. почта будет работать исключительно во внутренней сети и не будет иметь доступа в Интернет.

Всё делалось в вирт среде, с бэкапами после каждой важной операции и snapshot’ами, для быстроты (но это уже на последних шагах).

И так, по порядку.

!!!Внимание:  будьте внимательны при наборе команд. Перед началом необходимо обязательно выполнить резервную копию мигрирующих ОС средствами MS Windows Server Backup, либо сторонними – Acronis True Image, CloneZilla или какими вы пользуетесь!!!

IP-адреса, названия серверов указаны для примера. Данные используемые у Вас могут отличаться!
Пожалуйста, будьте внимательны во избежание ошибок!

Предисловие.

Так как я исследовал только возможность миграции, то я сделал тестовую зону в которой разместил все три виртуальные машины: AD, Exchange и iRedMail. Если вам такого не надо, то вы можете просто старые выключить, и уже новые интегрировать в вашу локальную сеть, подменив ip-адреса и почистив DNS-кеш как на сервере, так и на клиентах.

Сама миграция с Exchange 2007 сначала должна была происходить на Exchange 2016. В тех статьях, что я нашел, говорили что делается по такой схеме: Exchange 2007 –> Exchange 2010/2013 –> Exchange 2016. Т.к. 2010-й версии не было, то пришлось делать на 2013-й.

Но в итоге заказчик решил отказаться от Exchange вообще, хотя не понятно почему, т.ч. пришлось рассматривать вариант с установкой iRedMail и уже мигрировать туда.

Windows Server я везде устанавливал англоязычный. Т.к. у меня проблема с языком, то это помогает немного его подтягивать в лучшую сторону, ну и ошибки гуглить лучше на англ языке, т.к. иногда наша локализация бывает весьма очень странной.

Ссылки на статьи-источники, а так же их сохраненные копии внизу.

Миграция Active Directory.

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

На соседнем гипервизоре поднимаем новую вирт машину с Windows Server 2016 – пробовал на ней, но можно попробовать на самой последней – Windows Server 2019.

Установка стандартная с GUI, потом установка всех обновлений.

Далее, задаем имя машины (для примера, dc0.mydomain.local), если не сделали этого раньше, и вводим в существующий домен, перезагружаем. После этого добавляем роли – Active Directory и DNS (у меня всего 2 роли, т.к. домен используется в небольшой организации).

Если у Вас DHCP, то вероятно беспокоиться не о чем. В моём случае я установил свободный IP-адрес, а в DNS указал IP контроллера домена (т.к. он же и является DNS-сервером).

Установка и настройка DNS.

Теперь необходимо настроить DNS. Я на текущем DC (dc2.mydomain.local) в настройках DNS разрешил репликацию на новый сервер. При настройке DNS на dc0 я указываю, что зоны надо получить с основного контроллера домена (dc2). Убедиться, что зоны скопировались нормально.

Так же не забудьте создать обратную зону, иначе DNS не сможет создать PTR-записи.

Настройка Active Directory.

Теперь надо повысить новый сервер до Контроллера Домена (Domain Controller). Для этого в консоли управления сервером выбираем – Promote this server to a domain controller.

Откроется мастер. Выбираем Add a domain controller to an existing domain (Добавить Контроллер Домена в существующий домен).

На следующем шаге отмечаем пункты:

  • Domain Name System (DNS) server
  • Global Catalog (GC)

И ниже вводим Directory Service Restore Mode (DSRM) password (DSRM-пароль).

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

сброс пароля DSRM

Если Вы забыли этот пароль или вам достался сервер в наследство, а пароль спросить не у кого, то есть способ его сбросить.

Пожалуйста, убедитесь в том, что Вы понимаете что делаете!

1. Войти под учетной записью администратора домена либо эквивалентной ей на контроллер домена, где необходимо сбросить пароль.

2. Запустить cmd от имени Администратора.

3. Ввести

4. Ввести команду

5. Команда сброса пароля

6. Установите новый пароль (предварительно запишите в надежном месте), после ввода пароля нажать Enter.

Повторить ввод пароля.

7. Если всё сделано правильно, то Вы увидите надпись – Password has been set succefully (пароль был успешно установлен).

8. Выйти командой

И еще раз повторить команду для выхода.

Теперь данный пароль можно использовать в след шаге по повышению до контроллера домена.

[свернуть]

На след шаге, возможно, будет вот такое предупреждение:

Но т.к. DNS настроили выше, то я просто пропустил, нажав next (далее).

Далее, я выбираю свой контроллер домена (который у меня один и который на Windows Server 2008)

На этом шаге всё оставляю по умолчанию, Вы же делаете как у Вам нужно

Далее, проверим параметры, что указывали на прошлых шагах

В этом окне будет куча предупреждений, но мне они не мешают. Главное, что написано, что проверки выполнены успешны. Жмем Install (Установить).

После установки – перезагрузить.

Теперь после перезагрузки можно открыть оснастку AD и проверить, что мы видим структуру нашего домена.

Команда – dsa.msc или же из консоли управления сервером. Можно создать учетную запись и убедиться, что в оснастке на старом сервере вы видите изменения.

Замена серверов.

В моем случае я новый DC0 перенес в изолированную подсеть для тестов, что бы не поломать всё на проде.

После переноса оснастка на сервере не работала. Выдавала – the specified domain does not exist or could not be contacted, т.к. основной контроллер домена не доступен.

Теперь моя задача: сделать этот DC рабочим.

Захват ролей.

!Внимание, при принудительном захвате ролей Microsoft крайне настоятельно рекомендует избегать возвращения старого DC в сеть, т.к. могут быть проблемы. Пожалуйста, убедитесь, что старый DC будет недоступен во избежание конфликтов!

Убедимся, что оснастка недоступна – запустим dsa.msc. Если у вас всё работает, то супер. Остальное можно пропустить.

Сначала зайдем на сервер под учетной записью администратора домена (как раз в кэше должен быть). У меня же вот такая ошибка:

И при попытке смены контроллера домена ничего не видим…

В свойствах сетевого подключения укажем в первой записи DNS сами себя, только не 127.0.0.1, а именно IP-адрес. В моем случае это 10.0.2.15

Далее, запускаем cmd от имени администратора и приступаем к принудительному захвату домена:

выполним

должно получится как-то так

подключаемся к нашему (локальному) серверу, у меня это dc0

Собственно, начинаем захват ролей:

В данном диалогов окне отвечаем утвердительно – выбираем Yes.

Как видно роль переехала с DC2 на DC0.

Аналогично делаем для других ролей.

Так же отвечаем утвердительно – Yes.

Как видно, роль переехала (захвачена). Идем дальше:

Так же отвечаем утвердительно – Yes.

Как видим, роль захвачена. Дальше:

Отвечаем утвердительно – Yes.

Роль успешно захвачена. Последний шаг:

Отвечаем утвердительно – Yes.

Как видим, роль успешно захвачена.

Выходим:

Попробуем выполнить проверку ролей:

и видим ошибку…

Чистка метаданных через ntdsutil

Захвата ролей не достаточно, что бы наш сервер был сам по себе. Теперь мы должны удалить записи о старых DC, если их несколько. Воспользуемся всё той же утилитой ntdustil:

далее вводим:

далее

далее, подключение к локальному серверу

далее

далее, команда просмотра сайтов. В моё случае только один:

выбираем нужный сайт по его номеру, в данном случае – 0

Теперь посмотрим сколько серверов на сайте:

В моём случае их 3 (три) штуки:

DC0 – новый, который на Windows Server 2016, его не трогаем

DC1 – старый первичный сервер, который уже давно не встрою – его удалю.

DC2 – сервер, который у меня главный в проде – его тоже удалить.

Посмотрим домены на этом сервере:

Выбираем домен, у меня он тут один:

выйдем и удалим эту запись:

Подтверждаем операцию – Yes.

Как видно, DC2 успешно удалился. Теперь можно проверить:

Как видно, остались только DC0 – новый сервер (Windows 2016) и DC1 – старый, который тоже надо удалить.

Для этого повторить шаги после команды “list servers in site”.

В итоге должен остаться только один DC0.

 

Чистка DNS-записей

Теперь, надо почистить DNS-записи от старых “хвостов”. Для этого откроем оснастку DNS и раскроем Forward Lookup Zones.

Далее, в моем случае, чистим _msdcs.mydomain.local

Надо открыть свойства этого каталога и почистить там старые записи во вкладке Name Servers.

Удаляю DC1 и DC2; выделяю DC0, нажимаю edit, в открывшемся окне нажимаю Resolve.

Нажимаю OK, и должно получиться что-то типа такого:

Apply (Применить) – OK.

Теперь, раскроем список самого домена – mydmain.local

Вызовем свойства этого каталога и во вкладке Name Servers удалим лишнюю запись, в моем случае – dc2. Оставим только DC0, причем IP-адрес уже должен там быть. Если нет, то делаем по аналогии с предыдущим пунктом.

Далее, нас интересует подкаталог _msdcs. Если его выбрать, то видно, что там старый DC прописан.

По аналогии с предыдущими пунктами, вызовем свойство этого каталога и изменим во вкладке Name Servers на наш DC0.

Далее, раскроем: DomainDnsZones > _sites > Default-First-Site-Name > _tcp и почистим от старых записей:

Так же проверьте остальные подкаталоги на предмет старых записей. Всех их удалить.

После этого почистим кэш и обновим файл на DNS-сервере:

NETLOGON – Обновление записи в реестре.

Но даже после этих манипуляций оснастка выдавала ошибку.

Пробовал перезагружать сервер. В итоге, решил еще погуглить проблему, т.к. понимания что не так – не было, а в событиях Windows пустота.

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

Помогла статья, ссылка ниже, там же сохраненная копия.

  1. Откроем редактор реестра и перейдем в веку HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Services\Netlogon\Parameters
  2. Найдите параметр с именем SysvolReady
  3. Если его значение равно 0, измените его на 1. Если значение 1 – смените на 0 и опять измените на 1
  4. Закройте редактор реестра, и убедитесь что служба Netlogon расшарила каталог NETLOGON.

После внесения изменения, у меня без перезагрузки сервера, стала доступна оснастка управления – dsa.msc.

Проверим роли нашего сервера:

Теперь в нашем распоряжении Windows Server 2016 с Active Directory для тестирования и т.п.

Можно и в прод выпускать, если надо.

Подготовка MS Exchange.

2007.

Сервер с Exchange 2007 я так же скопировал на тестовый стенд. Изменил DNS в свойствах сетевого подключения. Он увидел мой домен (dc0) на Windows Server 2016.

Версия, с которой буду мигрировать

 

2013.

Теперь надо установить ОС для последующей установки туда нового Exchange. Для версии 2013 я выбрал Windows Server 2012 R2, т.к. там есть все необходимые компоненты, так же установлены все доступные обновления.

[заметка дополняется]

Настройка iRedMail.

Далее, рассмотрим настройку Dovecot, Postfix и Roundcube для работы с LDAP и фильтрацией по группе.

[заметка дополняется]

ROUNDCUBE: Адресная книга из группы в Active Directory (AD)

Данный конфиг позволяет сделать адресную книгу для пользователей на основе группы в AD.

По умолчанию в документации iRedMail сказано как сделать Адресную книгу на весь Organization Unit (контейнер) в AD. Но у меня была задача, сделать так, что бы пользователь мог иметь п\ящик, но при этом не отображаться в адресной книге. Ну какой-нибудь специфический аккаунт. Письмо ему отправить можно, но это если знать его почту.

Я удалил все логины, пароли и прочее, т.к. данные с реального стенда. Вам следует указать свои.

 

[заметка дополняется]

 

 

 

Ссылки:

The specified domain

NetLogon Windows Server 2016 (MS) |

If you found an error, highlight it and press Shift + Enter or to inform us.

Дмитрий

родился, учился, работаю-учусь

Добавить комментарий

Ваш адрес email не будет опубликован.

9 + 17 =

Пожалуйста, подтвердите человечность * Лимит времени истёк. Пожалуйста, перезагрузите CAPTCHA.