Довелось поставить кластер для работы почтовым сервером. Решил написать пару-тройку заметок.
Коротко с системе
OS - Debian 3.1
Диковые разделы с данными (почтовые ящики и базы mySQL) зеркалируются DRBD.
Кластер - heartbeat.
MTA - exim. Принимает почту для нескольких доменов и раскладывает в почтовые ящики.
Учётные записи почтовых пользователей в MySQL. Системные аккаунты не используются.
IMAP сервер - courier. Авторизация через MySQL.
Почтовые ящики в формате maildir.
exim
Запускать exim задачей heartbeat не стал, пусть работает одновременно на обеих машинах.
Логика доставки сообщения exim'ом следующая.
Если машина является главной в кластере, то есть раздел DRBD является primary,
файловая система смонтирована, и поднят основной IP, то cообщение доставляется локально.
Если машина не является главной, то exim пытается отправить сообщение на основную машину.
Если доставить не удалось, сообщение замораживается.
Это делается в первом роутере.
# Глобальная конфигурация # ... domainlist local_domains = @ : lsearch;/etc/exim4/local_domains CLUSTER_MASTER_IP = 1.2.3.4 IS_CLUSTER_MASTER = ${run{/bin/sh /etc/ha.d/resource.d/IPaddr2 CLUSTER_MASTER_IP status}{running}{}} # ... begin routers route_to_master: driver = manualroute transport = remote_smtp domains = +local_domains condition = ${if eq{IS_CLUSTER_MASTER}{running}{no}{yes}} route_list = * CLUSTER_MASTER_IP no_more
← Previous day | (Calendar) | Next day → |