Я пытаюсь найти лучшее решение, позволяющее почтовому серверу оставаться полностью работоспособным, даже если он выйдет из строя из-за переключения на резервный сервер.
Мы запускаем наш почтовый сервер на Debian с использованием Postfix и Courier-IMAP.
Я знаю о записях MX и включении реле, чтобы не пропустить новые входящие электронные письма. Однако мне нужно иметь доступ к старым сообщениям электронной почты.
Размещение балансировщика нагрузки перед двумя серверами и настройка автоматического отката - это вопрос, но я не уверен, насколько хорошо такое решение будет работать для почтового сервера, поскольку у меня мало опыта использования LB.
Я не против использования GlusterFS и т.п. для maildir, если влияние на производительность незначительно. Однако я слышал / исследовал, что такое решение имеет высокую стоимость.
Последним требованием будет то, что детали соединения при использовании почтового клиента не должны изменяться при возникновении отката. Однако это требование наименее важно для всех остальных факторов.
По сути, я ищу стандартное отраслевое решение. Если отрасль решила, что такого решения не существует, будут приветствоваться любые возможные обходные пути.
Есть два возможных решения:
Храните свои почтовые ящики в реплицированном хранилище. В зависимости от ваших потребностей в производительности у вас есть несколько вариантов: если мы останемся в области открытого исходного кода / программно-определяемой области, я бы рекомендовал либо экспорт NFS, поддерживаемый Gluster (http://www.gluster.org) или DRBD (http://www.drbd.org) устройство. В зависимости от ожидаемого размера почтовых ящиков Gluster может не подойти.
Используйте репликацию IMAP, чтобы ваши почтовые ящики реплицировались и постоянно синхронизировались между двумя серверами, я рекомендую Dovecot (https://wiki.dovecot.org/Replication)
Решение для общего хранилища:
Предполагая, что вы используете DRBD, который имеет приличную производительность, вам необходимо настроить Linux-HA (http://www.linux-ha.org), чтобы убедиться, что одновременно активен только один сервер и только один сервер смонтировал устройство DRBD. Запись MX указывает на плавающий IP-адрес, управляемый Linux-HA.
Службы SMTP / POP / IMAP должны считывать любую учетную информацию (почтовые ящики, псевдонимы, зашифрованные пароли) из одной и той же реплицированной службы поиска, такой как MySQL / LDAP.
Это будет активный / пассивный кластер.
Решение для репликации IMAP:
Каждый почтовый сервер имеет собственное независимое локальное хранилище. Установите два идентичных сервера, убедитесь, что Postfix и Dovecot считывают учетную информацию из одной и той же реплицированной службы поиска (MySQL / LDAP). Настройте Dovecot для репликации почтовых ящиков на двух серверах.
Это будет активный / активный кластер. В этом случае входящая почта случайным образом попадает на один из двух почтовых серверов и попадает в его локальное хранилище. Периодически Dovecot Sync выполняет двустороннюю репликацию между сообщениями, хранящимися на каждом сервере, и автоматически разрешает конфликты. Есть небольшое временное окно (интервал между двумя синхронизациями), в течение которого некоторые сообщения могут быть потеряны. Вам решать, приемлемо это или нет.