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
[Blog:技術系メモ http://go.kaz.bz/5h ] に新規投稿しました。 「 qmailでセカンダリメールサーバを�... 」
テストその2 RT qmailでセカンダリメールサーバを立てる際の設定。 http://bit.ly/eRSPy5