メールシステムの管理

sendmail とネームサービスとの相互作用

「メールドメイン」は、標準の sendmail.cf ファイルによって使用される概念で、メールを直接配信するか、またはメールホストによって配信するかを判断します。ドメイン内メールは直接 SMTP 接続経由で配信され、ドメイン間メールはメールホストに送られます。

セキュリティの高いネットワークでは、ほんの少数の選ばれたホストだけが、外部宛てのパケットを生成する権限を与えられています。ホストがメールドメイン外のリモートホストの IP アドレスを持っていても、これで SMTP 接続が確立できるとは限りません。標準の sendmail.cf では次のことを仮定しています。

このように仮定すると、ドメイン間メールの配信または転送はメールホスト側の責任です。

ネームサービスに対する sendmail 要件を設定する方法

sendmail は各種の要件をネームサービスに課します。次の節で、これらの要件とその要件を満たす方法を説明します。詳細は、in.named(1M)nis+(1)nisaddent(1M)、および nsswitch.conf(4) のマニュアルページを参照してください。

ネームサービスによるメールドメイン名の設定

メールドメイン名はネームサービスドメイン名の接尾辞の1つでなければなりません。たとえば、ネームサービスのドメイン名が「A.B.C.D」ならば、メールドメイン名は次のうちのいずれかであるはずです。

メールドメイン名は、最初に設定されたときには、多くの場合ネームサービスドメインと同じになります。ネットワークが大きくなれば、ネームサービスドメインを小さく分割してネームサービスを管理しやすくすることができます。ただし、メールドメインは、一貫した別名を提供するために分割されないまま残ることがあります。

ホスト名前空間データ

ネームサービスにおけるホストテーブルまたはマップは、次の 3 種類の gethostbyname() による問い合わせをサポートするように設定しなければなりません。

名前空間内で sendmail サービスを適切に確立するには、さらにホスト名空間に関する以下の 2 つのルールに準拠する必要があります。

  1. 完全なホスト名による gethostbyname() と短いホスト名による gethostbyname() で、一致した結果を生じるようにします。たとえば、両関数がメールドメイン admin.acme.com. から呼び出される限り、gethostbyname (smith.admin.acme.com)gethostbyname (smith) は同じ結果になるようにします。

  2. 共通のメールドメイン下のすべてのネームサービスドメインに対しては、短いホスト名による gethostbyname() で同じ結果を生じるようにします。たとえば、メールドメイン smith.admin.acme.com があるとして、gethostbyname (smith) は、ebb.admin.acme.com または esg.admin.acme.com のいずれのドメインから呼び出されても同じ結果になるようにします。主なメールドメイン名は通常ネームサービスドメインより短く、この要件に各種ネームサービスに対する特殊な意味合いを与えています。

sendmail における NIS の設定方法

ネームサービスとして NIS だけを使用するときは、sendmail 使用時に事前に解決しておかなければならない設定項目を以下に示します。

メールドメイン名

NIS をプライマリネームサービスとして設定しているときは、sendmail は、自動的に NIS ドメイン名の最初の構成要素を取り除いた結果をメールドメイン名として使用します。たとえば、ebs.admin.acme.com は、admin.acme.com となります。

mailhost ホスト名

NIS のホストマップには、mailhost エントリが必要になります。

完全なホスト名

通常の NIS の設定では、完全なホスト名は、認識されません。NIS に完全なホスト名を認識させようとするよりは、sendmail.cf ファイルを編集し %l%y で置き換えて、sendmail 側からこの要件をなくしてください。こうすることによって、sendmail のドメイン間のメール検出機能をオフにできます。ターゲットとするホストの IP アドレスを取得できれば、SMTP による直接配信が試みられます。NIS のホストマップに現在のメールドメインの外部のホストのエントリが含まれていないことを確認してください。もし、それがあれば、さらに sendmail.cf ファイルをカスタマイズする必要があります。

ホストの完全名および短縮名のマッチング

前述した手順を参考にして、完全なホスト名による gethostbyname() をオフにしてください。

1 つのメールドメイン内の複数の NIS ドメイン

共通のメールドメインの NIS のホストマップは、ホストのエントリは同じである必要があります。たとえば、ebs.admin.acme.com ドメインのホストマップは、esg.admin.acme.com のそれと同じでなければいけません。もし、そうでないと、ある NIS ドメインで有効なアドレスが他の NISドメインでは無効になってしまいます。

sendmail 用に NIS および DNS を設定する方法

ネームサービスとして NIS と DNS を使用するときに、sendmail を使用する前に解決しておかなければならない設定上の問題を以下に示します。

メールドメイン名

NIS をプライマリネームサービスとして設定しているときに、sendmail は、自動的に NIS ドメイン名の最初の構成要素を取り除いた結果をメールドメイン名として使用します。たとえば、ebs.admin.acme.com の場合は、admin.acme.com となります。

mailhost ホスト名

DNS の転送機能がオンになっていれば、NIS で解決できないという照会は DNS に転送されるため、NIS ホストマップに mailhost エントリの必要はありません。

完全なホスト名

NIS が完全なホスト名を認識できなくても、DNS がそれを行います。NIS と DNS の通常の設定手順を踏んでいる完全なホスト名の要件は満たされます。

ホストの完全名および短縮名のマッチング

NIS のホストテーブルにおけるすべてのホストエントリに対して、DNS にも対応するホストエントリが存在しなければなりません。

1 つのメールドメイン内の複数の NIS ドメイン

共通のメールドメインの NIS のホストマップ中のホストのエントリは同じである必要があります。たとえば、ebs.admin.acme.com ドメインのホストマップは、esg.admin.acme.com のそれと同じでなければいけません。もし、そうでないと、ある NIS ドメインで有効なアドレスが他の NIS ドメインでは無効になってしまいます。

sendmail 用の NIS+ の設定方法

使用するネームサービスが NIS+ だけの場合、sendmail を使用する前に解決しておかなければならない設定上の問題点を以下に記します。

メールドメイン名

プライマリネームサービスとして、NIS+ を設定していれば、sendmail は、NIS+ の sendmailvars テーブル (キーと値から構成される 2 列の NIS+ テーブル) からメールドメインを検索します。メールドメインを設定するには、エントリを 1 つこのテーブルに追加する必要があります。このエントリは、キーの列に文字列 maildomain が、値の列には自分のドメイン名 (たとえば、admin.acme.com) が設定されている必要があります。NIS+ では、sendmailvars テーブルにどのような文字列でも設定できますが、メールシステムが正常に機能するように接尾辞の規則が適用されます。nistbladm を使用して、maildomail エントリを sendmailvars テーブルに追加できます。たとえば、次のようになります。


nistbladm -A key="maildomain" value=<maildomain> 
sendmailvars.org_dir.<NIS+ domain>
ここで、メールドメインは NIS+ドメインの接尾辞となることに注意してください。

mailhost ホスト名

NIS+ホスト名には、mailhost エントリが必要です。

完全なホスト名

NIS+ は、完全なホスト名を認識することができます。通常の NIS+ の設定手順を行えば、この完全なホスト名の要件は満たされます。

ホストの完全名および短縮名のマッチング

この要件を満たすには、すべてのホストテーブルでエントリをコピーするか、ユーザーネームサービスのドメイン中の全ホストのエントリをメールドメインレベルのマスターホストテーブルに入力する必要があります。

1 つのメールドメイン内の複数の NIS ドメイン

この項目を満たすには、すべてのホストテーブルのエントリをコピーするか、ユーザーネームサービスのドメイン中の全ホストのエントリをメールドメインレベルのマスターホストテーブルに入力する必要があります。これは、(論理的または物理的に) 複数のホストテーブルを 1 つのホストテーブルに結合することになるので、メールドメインを共有する複数のネームサービスドメインで同じホスト名を再使用することはできません。

sendmail 用に NIS+ と DNS を設定する方法

ネームサービスとして NIS+ と DNS を使用するときに、sendmail 使用前に解決しておかなければならない設定上の問題点を以下に記します。

メールドメイン名

プライマリネームサービスとして、NIS+ を設定していれば、sendmail は、NIS+ の sendmailvars テーブル (キーと値から構成される 2 列の NIS+ テーブル) からメールドメインを検索します。メールドメインを設定するには、1 つのエントリをこのテーブルに追加する必要があります。このエントリは、キーの列に文字列 maildomain が、値の列に自分のドメイン名 (たとえば、admin.acme.com) が設定されている必要があります。NIS+ では、sendmailvars テーブルに、どのような文字でも設定できますが、メールシステムが正常に機能するように接尾辞の規則が適用されます。nistbladm を使用して、maildomail エントリを sendmailvars テーブルに追加できます。たとえば、次のようになります。


nistbladm -A key="maildomain" value=<mail domain> 
sendmailvars.org_dir.<NIS+domain>
ここで、メールドメインは NIS+ ドメインの接尾辞となることに注意してください。

mailhost ホスト名

ネットワークがホストデータベースのソースとして NIS+ と DNS の両方を使っているときは、mailhost エントリを NIS+ あるいは DNS ホストテーブルのいずれかに置くことができます。NIS+ と DNS をホストデータベースのソースとして /etc/nsswitch.conf ファイルで指定するようにしてください。

完全なホスト名

NIS+ も DNS も完全なホスト名を認識します。通常の NIS+ と DNS の設定手順を踏めば、この項目の要件は満たされます。

ホストの完全名および短縮名のマッチング

NIS+ ホストテーブルの全ホストエントリに対して、それに対応するエントリが DNS になければなりません。

1 つのメールドメイン内の複数の NIS ドメイン

この要件を満たすには、全ホストテーブルエントリをコピーするか、ネームサービスのドメイン中の全ホストのエントリをメールドメインレベルのマスターホストテーブルに入力する必要があります。