HAProxyでメール送信サーバを分散

はじめに

HAProxyを使ったWebサーバの分散はよくあると思いますが、送信するメールサーバーを分散してみました。

HAProxyの導入と設定

構築するシステムは以下の通り。

メールを作成、送信するサーバーからHAProxy宛にメールを送信し、HAProxyが実際に外部にメールを送信するサーバーに分散させて送信する。
HAProxyのインストールと設定
構築環境はAlmaLinux9を使う。AlmaLinux9ではAppStreamに標準でパッケージが提供されている。
# dnf install haproxy
HAProxyの設定
設定ファイルは/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

    stats socket /var/lib/haproxy/stats

    ssl-default-bind-ciphers PROFILE=SYSTEM
    ssl-default-server-ciphers PROFILE=SYSTEM

defaults
    mode                    tcp
    log                     global
    option                  dontlognull
    option                  redispatch
    retries                 3
    timeout http-request    10s
    timeout queue           1m
    timeout connect         10s
    timeout client          1m
    timeout server          1m
    timeout http-keep-alive 10s
    timeout check           10s
    maxconn                 3000

frontend main
    bind *:25
    default_backend             smtp_servers

frontend stats_localhost
    mode http
    bind *:8484
    stats enable
    stats uri /
    stats refresh 10s
    acl is_private src 192.168.210.0/24

backend smtp_servers
    mode tcp
    balance     roundrobin
    option smtpchk HELLO fsi.ne.jp
    server  smtp1 192.168.210.97:25 weight 100 check
    server  smtp2 192.168.210.98:25 weight 100 check
    server  smtp3 192.168.210.99:25 weight 100 check

frontend main が外部からの要求を受けるセクションで、stats がブラウザで動作状況を確認することが出来る設定となる。backend で分散先のメールサーバーを設定する。

HAProxy の起動と確認

OSの起動時に自動的に起動するように設定しておく

# system enable haproxy --now

確認は設定したポートで確認
全てのメール送信サーバーが正常であればグリーンとなるが、送信用メールサーバが停止すると赤に近いオレンジ色に変わり、分散対象から自動的に外される。
どのサーバーにどの程度メールが送信されたか等を見る事もできる。

最後に

最近ではチャット系のソフトウェアが使われる事が多いがB2Cではまだまだメールが活躍する機会が多いと思う。信頼性の向上や1台から送信するメール数を分散させるなど色々使えるかもしれない。