カテゴリ

qmail / vpopmail

qmail ( net-qmail など qmail をベースにしているメールサーバ )を利用してセカンダリメールサーバを立てる場合の設定。

以下すべて、

  • 受信したいドメインが @example.com
  • 正規のメールサーバが mail.example.com
  • セカンダリメールサーバが tmp.example.com
  • セカンダリメールサーバのIPアドレスが x.x.x.x

の場合。

セカンダリメールサーバとは
メインのメールサーバ(メールボックスがあるサーバ)が停電その他の障害で受信ができない状態になった際に、一時的にそのメールサーバ宛のメールを受信し、そのサーバのメールキュー内に溜め込み、正規サーバの復旧まで送信リトライし続けるように立てるサーバ。

大雑把には以下の設定が必要。

  • セカンダリメールサーバとなるサーバでそのドメイン宛のメールをプライマリサーバへリレーできるように設定
  • DNSに、セカンダリメールサーバをそのドメインのMXレコードの優先度が後(数値が大きい)になるように追加

これにより、外部のメールサーバは正常時はMXレコードの優先順位が高い mail.example.com にメールを配送し、仮にmail.example.com への通信が失敗した場合、次の優先順位のサーバ(=tmp.example.com)に配送を試みるようになる。

セカンダリメールサーバとして設定されているサーバは、@example.com 宛にのメールをsmtproutesの設定に沿ったメールサーバに配信(リレー)をしようとし、失敗した場合キューにため、しばらくリトライを繰り返す。

目次

tmp.example.com サーバのqmailでいじる設定ファイル

/var/qmail/control/rcpthosts
このサーバで受け付けるドメインを設定するファイル。
1行1ドメイン。受け付けたいメールアドレスの@以下を列記。
例)

example.com
/var/qmail/control/smtproutes
特定のドメイン宛のメールを特定のサーバに転送する場合に設定するファイル。
1行1設定。
ドメイン : 送信先のサーバ名
の形式で列記。
例)

example.com:mail.example.com
/var/qmail/control/queuelifetime
リトライし続ける期間(秒数)を設定するファイル。
デフォルト(ファイルがない場合)で7日間。
長時間の障害に備え長めにしておく方がよいが、期限を超えた時点でエラーメール(Failure Notice)が送信者に送られるはずなので、あまりに長すぎる(かつ、障害が長引いている)とずっと以前に送ったメールのエラーが届くことになるため要検討。

※ /var/qmail/control/locals に対象ドメインが含まれている場合は削除する。
locals に書き込まれているドメインは「そのサーバ自身が受け取り保存するドメイン=メールボックスがそのサーバにあるドメイン」なので、locals に含まれているとセカンダリメールサーバ自身が格納しようとし、メールボックスが見つからないことによってUser Unknown が発生してしまう。

DNS周りの設定

BINDのゾーンファイルに下記を追記
example.com.     IN MX 10 mail.example.com.
                 IN MX 20 tmp.example.com.
tmp.example.com. IN A     x.x.x.x

1行目ははもともと設定されているはず。
同じ内容の簡易形。

@   IN MX 10 mail
    IN MX 20 tmp
tmp IN A     x.x.x.x

コメント

いただいたコメント
  1. [Blog:技術系メモ http://go.kaz.bz/5h ] に新規投稿しました。 「 qmailでセカンダリメールサーバを�... 」

  2. テストその2 RT qmailでセカンダリメールサーバを立てる際の設定。 http://bit.ly/eRSPy5