Балансировка исходящей почты может пригодиться, когда в качестве следующего получателя (next-hop) письма есть несколько серверов. Для одного домена можно указать несколько MX записей и/или несколько IP адресов (Round robin DNS). Этот вариант широко распространен для публичного интернета. Однако, этот вариант не подходит, если вы не имеете возможность менять DNS зону. Или к примеру, для почтового сервера используемого внутри LAN: пересылка всех писем может осуществляется на next-hop, который указан в (или для определенных случаев в таблице transport). Уточню, в postfix в директиве relayhost нельзя указать перечень серверов. Усложним задачу: необходимо определять доступность next-hop серверов. Сделать требуемое позволит haproxy. Его можно развернуть на этом же почтовом сервере. Haproxy будет слушать на loopback'е, перенаправляя входящий трафик на сервера next-hop. Помимо пересылки трафика он так же будет мониторить доступность серверов. Пример конфигурации haproxy:
# cat /etc/haproxy/haproxy.cfg
global
log 127.0.0.1 local2
chroot /var/lib/haproxy
pidfile /var/run/haproxy.pid
maxconn 4000
user haproxy
group haproxy
daemon
# turn on stats unix socket
stats socket /var/lib/haproxy/stats
defaults
log global
option tcplog
option log-health-checks
option dontlognull
option redispatch
retries 3
timeout queue 1m
timeout connect 10s
timeout client 1m
timeout server 1m
timeout check 10s
maxconn 3000
listen stats gwip:5111
mode http
stats enable
stats hide-version
stats auth admin:password
stats uri /admin?stats
stats show-desc server.domain.com
listen base_relay 127.0.0.1:5222
mode tcp
balance roundrobin
option smtpchk HELO server.domain.com
server nexthop1 ip1:25 check inter 5000 fall 3 rise 3
server nexthop2 ip2:25 check inter 5000 fall 3 rise 3
server nexthop3 ip3:25 check inter 5000 fall 3 rise 3
server nexthop4 ip4:25 check inter 5000 fall 3 rise 3
Кратко по листингу:
- listen stats gwip:5111 — блок описания графического интерфейса статистики и управления haproxy, gwip должен быть ip сервера. Не забудьте поменять пароль!
- listen base_relay 127.0.0.1:5222 — блок описания балансировки исходящей почты.
- balance roundrobin — политика балансировки соединений, название говорит само за себя.
- option smtpchk HELO server.domain.com — проверка доступности серверов next-hop на седьмом уровне модели OSI, укажите свое имя сервера.
- server nexthop1 ip1:25 check inter 5000 fall 3 rise 3 — информация по next-hop серверу, его имя — nexthop1, ip — ip1, и параметры проверки:
- inter - временной интервал проверки, 5000 мс.
- fall - количество неудачных попыток подряд, после чего сервер исключается из списка балансировки соединений.
- rise - количество удачных попыток подряд, после чего сервер возвращается в список.
-
-
Теперь осталось только поменять в конфигурации postfix адрес в директиве relayhost на 127.0.0.1:5222. Данная статья хорошо сочетается с этой публикацией. Могу добавить, что в моем случае количество проходящих писем составляет более миллиона в сутки.
Комментариев нет:
Отправить комментарий