next up previous contents
Next: 6.1.3 DNS と sendmail Up: 6.1 mail の仕組み Previous: 6.1.1 配送

6.1.2 NIS と sendmail

sendmail が NIS を利用するためには、あらかじめ sendmail 自身が NIS を利用できる ようにし、更に sendmail.cf にその設定をしなければいけません。そのような設定が された時、sendmail は NIS の host map と aliases map を利用することが出来ます。 後者については、あるユーザー宛のメールを何処に再配送するかという情報を一元 管理することが出来、多数のマシンを抱えたサイトでは管理の手間を大いに省くことが 出来ます。一方、前者については、通常 NIS の host map には IP address も含まれ ますが、 NIS の IP address を sendmail が使用するかどうかは sendmail の種類によります。 通常の sendmail には、 sendmail.mx と sendmail.nomx という2つの種類があり、 前者は IP address の解決に DNS を使用しますが、 後者は DNS を使用しないという違いがあります。 そして更に、sendmail の作成時における指定により、NIS を使用するか否か という違いもあり、結局、sendmail には、
1.
DNS + NIS
2.
DNS + no NIS
3.
no DNS + NIS
4.
no DNS + no NIS
という種類があることになりますが、 NIS map を引かない sendmail は単一ホスト用であり、 設定も簡単であるのでここでは取り上げません。 従って、DNS + NIS 及び no DNS + NIS を考え、以下 sendmail.mx は前者、sendmail.nomx は後者であるとします。

さて、ここで先の IP address の問題に立ち返りましょう。 結論から言うと、sendmail.mx は NIS map の IP address を参照せず、IP address の解決には DNS を用います (但し、Solaris ではもう少し事情は複雑で、リゾルバと呼ばれるライブラリそのもの が nsswitch.conf によって動作が変わるために、sendmail 自身は DNS を用いている と思っているにもかかわらず、実際には NIS 経由で DNS を参照している場合もあります)。 そのために、DNS には登録されていないが、NIS には登録されているようなマシンに sendmail.mx は通常メールを配送出来ません。 もし、これを可能にしようとするならば、一旦受け取ったメールを sendmail.nomx の動いているマシンに中継する必要があります ( IP address が解決出来ないのだから中継も出来ないと思われるかもしれませんが、 実は IP address を陽に指定した中継機能を使うことで可能です)。 一方、sendmail.nomx はすべての参照を NIS のみで行います。 従って、sendmail.nomx は、NIS host map にあるマシンへの配送は出来ますが、 それ以外には配送できず、従って多くの場合 Internet mail は配送出来ません。 もし、Internet mail を配送させようとするならば、sendmail.mx が動いている マシンに一旦配送し、外部への配送をその sendmail.mx に中継してもらう必要が あります。

IP や host の問題が分かったので、もう一つの問題、すなわち sendmail が 必ず NIS を参照する場合について説明しましょう。これは先に少し述べたように mail aliases の参照に関連しています。 aliases とは、到着したメイルの宛て先を別の宛て先に変更する場合に利用されます。 勿論、ローカルに /etc/aliases がある場合には、nsswitch.conf の設定により、 それも参照されます。従って、もし、NIS aliases と /etc/aliasese に矛盾があれば メイルのピンポンが起こる可能性もあります。通常は、NIS aliases を使用し、 どうしても必要な場合にのみ /etc/aliases を利用すれば良いでしょう。 NIS aliases を更新するには、NIS サーバー上の /etc/aliases を編集し、 /var/yp ディレクトリで make します。/etc/aliases は次のような形式のファイルです。

#
staff: kanayama,sakamoto,saga,momma
kanayama: kanayama@sparc06
sakamoto: sakamoto@sparc01
saga: saga@sparc05
momma: momma@sugar

これによって、kanayama 宛のメイルは必ず kanayama@sparc06 へと転送されます。 つまり、個々人の mail spool ホストを固定することが可能になります (ちなみに、上の staff のように複数の人を一つの aliases として登録する事も 出来ます)。 この aliases がないと、あるホストに到着したメイルが受け取って良いと考えられる メイルならば(つまり、ユーザー登録されたユーザー)、そのホストはメイルを受け 取ってしまいます。その結果、複数のホストに個人宛のメイルが分散されてしまう 事があるわけです。勿論、受け取る可能性のある全てのホストに /etc/aliases を 書くことでも回避出来ますが、NIS のところで述べたようにそれでは管理の手間が 増えるばかりです。ちなみに、メイルの届く可能性のある全てのホスト上で すべてのユーザーのホームディレクトリが参照することが出来る場合には、 sendmail は ~/.forward も参照します。従って、メイルの転送においては、 NIS, /etc/aliases, ~/.forward が順に参照されますが、基本的に .forward ファイルはユーザーの自由になる、つまりカスタマイズ可能な ものですので、これに配送を頼るのは得策とは言えません。



Noriyo Kanayama