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

印刷ビューの終了

更新: 2016 年 11 月
 
 

sendmail とプログラムの連携の仕組み

メールサービスはさまざまなプログラムとの組み合わせで動作します。次の図に、各プログラムがどのように連携するかを示します。

図 3  sendmail の動作の仕組み

image:sendmail の動作の仕組みを示す図。

メールメッセージを送信するとき、sendmail プログラムは次の手順を実行します。

  1. mailx などのプログラムを使ってメッセージが送信されます。詳細は、mailx(1) のマニュアルページを参照してください。

  2. メッセージは、そのメッセージを生成したプログラムによって収集され、sendmail デーモンに渡されます。

  3. sendmail デーモンがメッセージのアドレスを識別可能な各部に分割して解析します。sendmail デーモンは、/etc/mail/sendmail.cf という構成ファイルの情報を使ってネットワーク名の構文、別名、転送情報、およびネットワークトポロジを決定します。sendmail はこの情報を使用して、メッセージが受信者に到達する経路を決定します。

  4. sendmail デーモンはメッセージを適切なシステムに渡します。

  5. ローカルシステムの /usr/lib/mail.local プログラムは、メッセージの受信者の /var/mail/username ディレクトリのメールボックスにメールを配信します。

  6. 受信者は、メールが届いたことが通知されるので、mailmailx などのプログラムを使用してメールを受け取ります。

再ルーティングメカニズム

sendmail プログラムは、メールの再ルーティングのメカニズムとして、別名指定、転送、および取り込みの 3 つをサポートしています。

選択する再ルーティングメカニズムによって必要な管理レベルが異なります。

  • 別名を使用すれば、使用するファイルの種類に基づいて、サーバー全体またはネームサービス全体をベースにしてアドレス名をマップできます。

    ネームサービス別名ファイルを使用すれば、メール再ルーティングの変更を単一のソースで管理できます。ただし、ネームサービスの別名指定では、再ルーティングの変更を伝達する際に遅延が起こります。

    通常、ネームサービスの管理は、特定のシステム管理者グループに制限されます。一般ユーザーは、このファイルを管理できません。

    サーバー別名ファイルを使用する際の考慮事項:

    • 指定されたメールサーバーの管理者になる任意のユーザーが再ルーティングを管理できます。標準ユーザーはこのファイルを管理できません。

    • サーバー別名指定は、再ルーティングの変更を伝達する際の遅延はほとんどありません。

    • 変更はローカルメールサーバーだけに影響します。ほとんどのメールが単一のメールサーバーに送信される場合は、影響が少なくなります。ただし、この変更を多くのメールサーバーに伝達する必要がある場合は、ネームサービスの別名指定を使用します。

    詳細は、メール別名ファイルおよび メール別名ファイルを管理するを参照してください。

  • 転送では、ユーザーが .forward ファイルを作成して、着信メールを別のメールボックス、別のメールプログラム、または別のメールホストに再ルーティングできます。

    詳細は、.forward ファイルおよび .forward ファイルを管理するを参照してください。

  • 取り込み

    取り込みでは、root アクセス権を必要とせず、ユーザーが別名リストを保守します。このメカニズムを提供するには、root ユーザーは、サーバー上の別名ファイル内に適切なエントリを作成する必要があります。このエントリが作成されると、ユーザーは必要に応じてメールをルーティングし直すことができるようになります。詳細は、/etc/mail/aliases ファイルおよび メール別名ファイルを管理するを参照してください。


    注 -  /usr/bin/mailx のようなメールを読み取るプログラムは、プログラム自身の別名を持つことができ、それらはメッセージが sendmail に達する前に展開されます。sendmail の別名は、ローカルファイル、NIS など、さまざまなネームサービスソースからのものでもかまいません。検索順序は svc:/system/name-service/switch サービスによって決定されます。詳細は、nsswitch.conf(4) のマニュアルページを参照してください。

メールアドレスとメールルーティング

配信時にメールメッセージがたどる経路は、メールクライアントシステムの設定とメールドメインのトポロジによって異なります。メールホストやメールドメインの各追加レベルでは、別名のもう 1 つの解釈を追加できますが、ルーティングプロセスはほとんどのホストで同じになります。

メールクライアントシステムは、sendmail をローカルモードで実行してメールをローカルで受信するように設定できます。すべてのメールサーバーと一部のメールクライアントでは、ローカルモードがデフォルトモードです。ローカルモードでは、メールメッセージは次のようにルーティングされます。

  1. 可能な場合はメール別名を展開し、ローカルのルーティングプロセスを再起動します。

    ネームサービスでメール別名を確認することで、メールアドレスが展開されます。新しい値が見つかった場合、古い値が置換されます。次にこの新しい別名が再度確認されます。

  2. メールがローカルの場合、/usr/lib/mail.local に配信されます。

    メールはローカルのメールボックスに配信されます。

  3. メールアドレスがこのメールドメインにホストを含んでいると、そのホストにメールを配信します。

  4. アドレスがこのメールドメインにホストを含んでいない場合、メールホストにメールを転送します。

    メールホストはメールサーバーと同じルーティングプロセスを使用します。ただし、メールホストはホスト名に加えて、ドメイン名が宛先になっているメールも受信できます。


注 -  このリストでは、sendmail.cf ファイルに設定されたデフォルトの規則を使用することを前提にしています。