Как бы люди спроектировали упругий настройка почтового сервера с Linux?
На уровне приложения система должна обеспечивать как входящую, так и исходящую почту (например, SMTP и IMAP), а также фильтрацию и архивное хранилище (архивная часть пока не критична, поэтому мы, вероятно, рассмотрим это позже. ).
Вдобавок к этому требуется устойчивая система, то есть такая, которая будет обрабатывать сбои отдельных серверов без прерывания обслуживания. Таким образом, я бы назвал это Высокая доступность почтовая система. Это в отличие от Высокая производительность настройка почты, так как в нашем случае объем обрабатываемой почты не является важным фактором, просто она остается в сети.
Не обращаясь к этой проблеме раньше, первое, о чем я подумал, - это кластерная файловая система (gfs / gluster / etc) в сочетании с тактовым сигналом для переключения плавающего IP-адреса на другое устройство в случае сбоя сервера.
Возможно ли это в сочетании с postfix & dovecot?
В качестве альтернативы выполните кластеризацию на уровне IMAP / POP, например, Сайрус IMAP. Я использовал эту функцию репликации во время миграции почтового сервера, и она отлично работала. Сообщения не были потеряны, и неважно, на какой узел они прибыли.
Часть SMTP, я полагаю, довольно проста - как для фильтрации входящего трафика, так и для предоставления исходящего сервиса - они довольно без сохранения состояния. так что для тех - обычный мастер + настройка горячего резерва на основе, например, сердцебиение и «виртуальный IP-адрес», назначенный активному узлу, подойдет.
но ... существует риск потери сообщений, находящихся в пути (например, проверяемых антиспамом или запрашиваемых для исходящей доставки из-за серых списков на другой стороне), когда данный сервер умирает.
для imap / доступа к почтовому ящику в не очень сильно загруженной системе я бы снова выбрал конфигурацию master + hot-standby, но на этот раз нам нужно добавить репликацию почтового ящика. в зависимости от размера - простой запуск rsync каждые 10 минут может помочь, но если мы говорим о тысячах почтовых ящиков и тысячах сообщений в каждом - на основе drdb репликация будет работать лучше.
обычное предупреждение: если вы настроили кластер высокой доступности - проверяйте его периодически - например, примерно раз в квартал. обнаружить, что то, что вы ожидаете быть HA, на самом деле не является HA, когда вам это нужно, - довольно неприятное чувство.
для MTA я обычно использую постфикс, для IMAP - курьер, для антиспама - ESVA [ сейчас кажется мертвым, но люди пытаются оживить это который был восстановлен] или уборщик почты.
В моем университете мы используем комбинацию Cyrus IMAP и Postfix. Cyrus реплицируется на 3 виртуальных машинах. Кластер высокой доступности имеет довольно хорошую производительность и обслуживает около 30 000 уникальных почтовых ящиков.