Я занимаюсь переносом всего с сервера A на сервер B, включая почтовые службы.
Я уже настроил сервер B для приема почты для нашего домена, аутентификация пользователя работает, и у меня также есть сценарий, который запускает rsync данных Maildir с сервера A на сервер B, внося необходимые изменения для размещения dovecot. Доставка почты для другого тестового домена, настроенного на сервере B, работает нормально.
Моя проблема теперь заключается в том, как синхронизировать и переключаться с сервера B на сервер A без (если возможно) доставки почты на оба сервера, пока истекает срок кеширования DNS.
Есть ли способ избежать периода "несогласованности" из-за DNS TTL и беспрепятственно переключиться на новый сервер?
Начните синхронизировать электронную почту с imapsync. (Веб-сайт предлагает платную версию, но если вы погуглите, вы найдете ее бесплатно на github или что-то в этом роде ...). Затем вы делаете переключение DNS. Затем вы снова синхронизируете с imapsync. Если на старый сервер все еще поступают сообщения, вы можете синхронизировать их снова и снова ... пока все почтовые серверы не будут иметь новую запись DNS.
Imapsync имеет то преимущество (перед rsync), что он также может выполнять различные другие действия, такие как удаление, установка определенного диапазона дат (значительно ускоряет последующие синхронизации), ... imapsync предлагает множество опций, вы должны немного поэкспериментировать с ним bevor идет в «производство».
Относительно несоответствия: вы можете попытаться настроить свою новую голубятню в качестве прокси для старой. Таким образом, новый голубятня видит все, что видит старый. Не знаю, как это работает с синхронизацией. Проверьте документы dovecot.
Как насчет того, чтобы просто уменьшить TTL DNS до гораздо более короткого периода за несколько дней до фактического изменения?
Тогда кеш DNS быстро истечет, когда вы сделаете фактическое переключение.
Если у вас есть время и сила воли, чтобы поставить еще один уровень перед существующими почтовыми серверами, вы можете сделать все прозрачно, без простоев.
1) Настройте новый сервер (скорее всего, подойдет виртуальный)
2) Если у вас его еще нет, установите централизованное управление пользователями, такое как OpenLDAP. Или в вашем случае подойдет что-то вроде pam_mysql.
3) Установить Погибель к нему для проксирования соединений IMAP / POP. Perdition может найти расположение пользовательского сервера из центрального места управления пользователями.
4) Установите на него Postfix для доставки почты на сервер A или B. И снова Postfix может искать расположение сервера из централизованного места.
5) Создайте сценарий миграции, который будет копировать почту пользователя за пользователем с помощью imapsync или другого инструмента по вашему выбору. Затем, когда пользователь будет перемещен, обновите его централизованно, чтобы тот факт, что пользователь теперь находится на сервере B.