mailertable での冗長配送(sendmail)

シェアする

sendmail の mailertable は、冗長配送機能を実装されています。ただ、意外とまとまった情報がないので記載します。

mailertableでは、特定ドメインの場合に配送先を定義するものですが、特定ドメインのMTAサーバが複数台構成にて構築されている場合、負荷分散装置(ロードバランサー)を導入するか、MXレコードの定義するなり、DNSラウンドロビンを利用するなり冗長配送を実現する方法は、何パターンもありますが、ロードバランサーを購入やDNSをわざわざ定義するのも面倒である場合、簡単に実装できるかと思います。

配送ルールについて

冗長配送ルールは、以下の2パターンあります。

  • ラウンドロビン
  • フォールバック

これらは、単純にmailertableに記載することで実現ができます。

ラウンドロビン

配送先のサーバへラウンドロビンにて配送する場合は、以下のような定義となります。
ラウンドロビンのため、配送先のMTAサーバが停止している場合は、再配送処理時にいつか活きているサーバへ配送される。という見込みが持てます。または、負荷分散って考えもあります。

この場合は、MTAサーバのmailertableに以下を記載します。

example.com smtp:[サーバA],[サーバB]

フォールバック

フォールバックとは、メインとなる配送先が停止した場合に、待機系とする先へ配送する方式となります。一般的にアクティブ・スタンバイの方式ですかね。。

この場合は、MTAサーバのmailertableへ以下を記載します。

example.com smtp:[サーバA]:[サーバB]

ラウンドロビンとフォールバックの組み合わせ

ラウンドロビンとフォールバックを組み合わせ、以下のようなことを実現することもできます。

これは、サーバAとサーバBがラウンドロビンにて配送しているが、サーバA・サーバBがともに停止してしまった場合、サーバCへ配送する動作となります。

この場合は、MTAサーバのmailertableへ以下を記載します。

example.com smtp:[サーバA],[サーバB]:[サーバC]

こんな感じにsendmailを用いれば、MTAサーバ単体で冗長機能をもつこともできるんですね。
ちなみに、sendmailのスマートホスト同様の動作をしたはずです。

ではでは。

トップへ戻る