DovecotサーバでDSyncを用いたIMAPサーバの冗長化対応(Postfix+Dovecotサーバの冗長化)
Pocket

Dovecotサーバに、DSyncというメールデータの同期機能があるようだ。これを利用することで、ストレージなどにメールデータを配置することなくIMAP/POP3サーバの冗長化を行うことが可能らしい。
SMTPサーバ(Postfix)はそのまま同じ構成で2台構築し、DovecotのみDSyncによる同期処理を行わせる。なお、すでに2台ともPostfix+Dovecotはインストール済み(細かい設定はまだ)とする。
一応、tcpで任意のポートを指定した同期設定ができるようなのだが、面倒なので今回はrootでのsshを用いた同期を行わせる。事前に互いのサーバへパスワードなしでssh接続できるよう鍵を配置しておくこと。

設定は簡単で、Dovecotの設定を一部書き換えてサービス再起動してやるだけで設定可能だ。
まず、「/etc/dovecot/conf.d/10-mail.conf」の設定を書き換え、「replication」プラグインを読み込むようにする。

●/etc/dovecot/conf.d/10-mail.conf

mail_plugins = notify replication
Sponsored Links

次に、「/etc/dovecot/conf.d/30-dsync.conf」というファイルを手動で作成する。

●/etc/dovecot/conf.d/30-dsync.conf

service replicator {
  process_min_avail = 1
}

dsync_remote_cmd = ssh -l%{login} %{host} doveadm dsync-server -u%u
plugin {
  mail_replica = remote:root@対象サーバ
}

service aggregator {
  fifo_listener replication-notify-fifo {
    user = mail
  }
  unix_listener replication-notify {
    user = mail
  }
}

service replicator {
  unix_listener replicator-doveadm {
    mode = 0600
  }
}

replication_max_conns = 10

plugin {
  # When saving a new mail via IMAP or delivering a mail via LDA/LMTP,
  # wait for the mail to be synced to the remote site. If it doesn't finish
  # in 2 seconds, return success anyway.
  replication_sync_timeout = 2s
}

 

あとは、dovecotを再起動するだけだ。

systemctl restart dovecot

 

以上、無事DSyncを用いてのメールサーバの冗長化が行えた。
pam認証だと両方のサーバにユーザやエイリアスを定義してやらないといけないので、ちゃんと運用するのならLDAP連携などを行ってユーザを自動生成させてやるといいだろう。
メールエイリアスについては、LSyncdなどを使って片方でファイルを編集したらもう片方にちゃんと連携されるようにするといいだろう(newaliasesの実行は必要だけど)。

 

Pocket

Written by blacknon

インフラ系のSE。一時期はプログラマ。 仮想化とオープンソースに興味あり。一日中寝てたい今日このごろ。 スペインとかで働きたいなぁ…(シエスタがあるので)

Leave a Comment

メールアドレスが公開されることはありません。