2004年11月14日
qmailを使ったセカンダリメールサーバの設定
qmailを使ってセカンダリメールサーバを構築するための手順をまとめる。セカンダリサーバは、プライマリサーバ同様自ドメインのメールを受信し、プライマリサーバに再配送する。プライマリサーバがダウンしてしまった場合に、セカンダリサーバでひとまず受信することで、送り側メールサーバの再配送期限に寄らず、より確実にメールを受け取ることができる。
セカンダリサーバとしてメールを中継するには、smtproutesファイルで経路を設定する。smtproutesファイルには、ドメインと転送先のペアを記述する。smtproutesの設定はDNSのMXレコードよりを優先されるため、特定のドメインに対してプライマリサーバへ転送するように指定することで、そのドメインのセカンダリサーバとして機能させることができる。
1.セカンダリサーバとして機能させたいドメインについて、プライマリサーバへの経路を設定する。次のように設定ファイルを記述する。
# vi /var/qmail/control/smtproutes
toshikazu.org:p086004.doubleroute.jp
tsushin.tv:p086004.doubleroute.jp
ntt2002.net:p086004.doubleroute.jp
2.localsとvirtualdomainsにそのドメインの設定があれば、smtproutesより優先して処理されてしまう。セカンダリサーバとして機能させたい場合、そのドメインの設定がlocalsとvirtualdomainsにないことを確認する。
# vi /var/qmail/control/locals
# vi /var/qmail/control/virtualdomains
3.セカンダリサーバとして機能させたいドメインをrcphostsに入れ、メールを受信できるようにする。この点についてはプライマリサーバの場合と同じである。
# vi /var/qmail/control/rcpthosts
toshikazu.org
tsushin.tv
ntt2002.net
4.メールがキューに滞在する時間を設定する。デフォルト値は604800(秒、7日間)となっている。この期間にプライマリサーバが復旧しなければ配送エラーとなる。デフォルト値で十分ではあるが、queuelifetimeファイルで値を指定することもできる。例えば4週間にするには、次のようにする。
# vi /var/qmail/control/queuelifetime
2419200
5.DNSのMXレコードを設定する。ゾーンファイルの該当箇所を変更する。プリファレンス値は小さい方が、優先度が高い。プリファレンスの数値そのものには意味はなく、その大小関係だけが意味を持つ。
# vi toshikazu.zone
・・・
IN MX 10 p086004.doubleroute.jp.
IN MX 50 ichi.tom.comm.waseda.ac.jp.
・・・
6.qmailを再起動し、設定を有効にする。上記の制御ファイルは qmail-smtpd(8), qmail-send(8), qmail-inject(8), qmail-remote(8) の4つから参照されている。
注意点:
次のようにワイルドカードを使って転送の設定をすると、セカンダリサーバとして設定しようとしたドメインについてはうまく機能する。しかし、それらと関係のない外部ドメイン宛てのメールもプライマリサーバに転送されてしまう。そして、通常はプライマリサーバ側で外部ドメイン宛てのメールは拒絶されるため、エラーとなってしまう。このような事象は、セカンダリサーバ内のプログラムやユーザが、外部ドメイン宛てのメールを送信する場合に起こりうる。よって、次の設定は、純粋なセカンダリサーバとしては間違い。
# vi /var/qmail/control/smtproutes
:p086004.doubleroute.jp
参考:
qmail reference smtproutes (5)
smtproutesファイルについて詳しく解説されている。
qmail-control - qmail-1.03 制御ファイル
qmailの制御ファイルについて網羅的に解説されている。
日経Linux : Linux Q & A
sendmail, postfix, qmailでのセカンダリサーバの設定方法
qmail メモ
qmail 各種設定ファイルに詳しい
@IT:Windows TIPS -- Tips:nslookupの基本的な使い方(MXレコード編)
MXレコードについて詳しい