Я собираюсь установить еще один почтовый сервер в одном из наших офисов, используя Postfix и Dovecot. У нас есть сторонний спам-фильтр, который может ретранслировать входящую почту на два сервера с помощью SMTP, и если один из серверов недоступен, он будет ставить почту в очередь, пока она не вернется в онлайн.
Мне было интересно, происходит ли что-то подобное при использовании dsync для синхронизации двух экземпляров Dovecot. Я не смог найти однозначного ответа в Интернете.
Я понимаю, что если я настроил реляцию master / master с помощью dsync, изменения, которые пользователь вносит с помощью своего IMAP-клиента на одном сервере (A), будут реплицированы на другой сервер (B). Но если B перейдет в автономный режим, а пользователь продолжит вносить изменения в A, будут ли эти изменения автоматически реплицированы на B, когда он вернется в онлайн? Или тогда A и B будут рассинхронизированы и потребуют какого-то ручного вмешательства?
dsync является «идемпотентным» и будет синхронизироваться из любого состояния, в котором вы находитесь в данный момент; нет очереди ожидающих изменений, как в случае с репликацией MySQL.
Это означает, что, когда сервер B возвращается в рабочее состояние, при следующем запуске dsync вы в конечном итоге снова синхронизируете оба сервера. Никакого ручного вмешательства не требуется, и они вернутся к синхронизации, даже если вся файловая система почты на B будет стерта (хотя для этого может потребоваться некоторое время).
Вы, вероятно, захотите, чтобы пользователи обычно получали доступ только через сервер A, и в случае сбоя A и вашего прокси-сервера, перенаправляющего их на B, удалите A из пула прокси, пока ваш dsync не завершится и A снова не синхронизируется.