Go to main content
Oracle® Solaris 11.3 での sendmail サービスの管理

印刷ビューの終了

更新: 2016 年 11 月
 
 

sendmail とネームサービスの連携の仕組み

sendmail は、ドメイン名およびネームサービスと連携してメールの配信とルーティングを行います。このセクションの内容は次のとおりです。

詳細は、DNS のメールホストエントリを確認する方法および メール別名ファイルを管理するを参照してください。

sendmail.cf とメールドメイン

標準の sendmail.cf ファイルは、メールドメインを使ってメールを直接配信するか、あるいはメールホストを経由して配信するかを決定します。ドメイン内メールは直接 SMTP 接続経由で配信され、ドメイン間メールはメールホストに送られます。

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

  • 現在のホストは、パケットを直接メールドメイン外のホストに送信する権限がない

  • メールホストは、パケットを外部ホストに直接送信できる認可されたホストにメールを転送できる。メールホストが認可されたホストになる可能性がある

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

sendmail とネームサービス

sendmail プログラムではさまざまな要件がネームサービスに課せられます。これらの要件の理解を深めるために、このセクションでは、まずメールドメインからネームサービスドメインへの関係について説明し、次に各種の要件について説明します。

メールドメインとネームサービスドメイン

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

  • A.B.C.D

  • B.C.D

  • C.D

  • D

メールドメイン名は、最初の確立時には、ネームサービスドメインと同じになります。ネームサービスドメインは、ネットワークが大きくなるにつれて、ネームサービスをより管理しやすくするために、分割することが可能です。他方、メールドメインは、一貫した別名を提供するために分割されないまま残ります。

ネームサービスの要件

sendmail プログラムでは、3 種類の gethostbyname() クエリーをサポートするために、ネームサービスに次のホストテーブルまたはマップが設定されている必要があります。

  • mailhost – いくつかのネームサービスの構成では、自動的にこの要件を満たします。

  • 完全なホスト名 – 多くのネームサービスの構成がこの要件を満たします。たとえば、smith.admin.example.com は完全なホスト名です。

  • 短いホスト名 – sendmail プログラムは、外部メールを転送するためにメールホストに接続する必要があります。メールアドレスが現在のメールドメイン内であるかどうかを判定するために、gethostbyname() が完全なホスト名で呼び出されます。エントリが見つかると、アドレスは内部にあるとみなされます。たとえば、smith.admin.example.com が完全なホスト名の場合、smith は短いホスト名です。

    NIS および DNS サポートでは、短いホスト名による gethostbyname() が引数として使用されます。したがって、この要件は自動的に満たされます。

ネームサービス内に効率的な sendmail サービスを確立するには、次の追加要件に注意してください。

  • 完全なホスト名と短いホスト名の引数を持った gethostbyname() は、同一の結果を生成する必要があります。たとえば、両方の関数がメールドメイン admin.acme.com から呼び出された場合、gethostbyname (smith.admin.acme.com)gethostbyname (smith) が同じ結果になるようにします。

  • 共通のメールドメイン下のすべてのネームサービスドメインに対しては、短いホスト名を指定した gethostbyname() で同じ結果が得られる必要があります。たとえば、メールドメインが smith.admin.example.com の場合、gethostbyname(smith) は、sales.admin.example.com ドメインまたは eng.admin.example.com ドメインのどちらから呼び出す場合でも、同じ結果を返す必要があります。ネームサービスドメインはこの要件に各種ネームサービス用の特別な連携を与えているので、メールドメイン名は、通常ネームサービスドメインより短いです。

詳細は、gethostbyname(3NSL) のマニュアルページを参照してください。

sendmail と NIS および DNS の連携の仕組み

sendmail プログラムは、NIS および DNS と次のように連携します。

  • メールドメイン名 – NIS をプライマリネームサービスとして設定している場合に、sendmail は、自動的に NIS ドメイン名の最初のコンポーネントを取り除いた結果をメールドメイン名として使用します。たとえば、sales.admin.example.comadmin.example.com になります。

  • メールホスト名 – NIS のホストマップには、mailhost エントリが必要になります。DNS の転送機能がオンになっていれば、NIS で解決できないクエリーは DNS に転送されます。したがって、NIS ホストマップに mailhost エントリは必要ありません。

  • 1 つのメールドメイン内の複数の NIS ドメイン – 共通のメールドメインのすべての NIS のホストマップ中のホストのエントリは同じである必要があります。たとえば、sales.admin.example.com ドメインのホストマップは、eng.admin.example.com のホストマップと同じものにします。異なる場合には、ある NIS ドメインで有効なアドレスがほかの NIS ドメインでは無効になることがあります。

詳細は、DNS のメールホストエントリを確認する方法および メール別名ファイルの管理のタスクマップを参照してください。